我正在使用Codeigniter 3.1.8和Bootstrap 4中的基本博客应用。
我已经将Facebook的开放图元标记添加到网站的标题中。
<meta property="og:image" content="<?php echo base_url('assets/img/posts/' . $post->post_image); ?>">
行仅适用于单个帖子。
问题在于,由于header
视图对于网站上的所有页面(URL)都是通用的,因此我需要使用以下类型的if语句来定位单个发布视图:if Posts控制器和单个帖子页面。
或者,如果是单个发布路线,则为
考虑到Posts控制器中的单个post方法是:
public function post($slug) {
$data = $this->Static_model->get_static_data();
$data['pages'] = $this->Pages_model->get_pages();
$data['categories'] = $this->Categories_model->get_categories();
$data['posts'] = $this->Posts_model->sidebar_posts($limit=5, $offset=0);
$data['post'] = $this->Posts_model->get_post($slug);
if ($data['categories']) {
foreach ($data['categories'] as &$category) {
$category->posts_count = $this->Posts_model->count_posts_in_category($category->id);
}
}
if (!empty($data['post'])) {
// Overwrite the default tagline with the post title
$data['tagline'] = $data['post']->title;
// Get post comments
$post_id = $data['post']->id;
$data['comments'] = $this->Comments_model->get_comments($post_id);
$this->load->view('partials/header', $data);
$this->load->view('post');
} else {
$data['tagline'] = "Page not found";
$this->load->view('partials/header', $data);
$this->load->view('404');
}
$this->load->view('partials/footer');
}
定位单个帖子视图的最佳方法是什么?
答案 0 :(得分:0)
if (isset($post->post_image)) {
// og image
}
因为该图片(或看起来如此)仅在单篇文章时可用。
类似地,您可以添加一个像$data['single_post'] = true
这样的变量,然后使用它来确定og:image
是否适用。此方法还需要isset
,例如if (isset($single_post) && $single_post))
,因为可能没有在其他地方定义。