Codeigniter博客应用程序:从另一个视图定位单个帖子视图

时间:2018-10-21 20:39:22

标签: php codeigniter

我正在使用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');
}

定位单个帖子视图的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

if (isset($post->post_image)) {
    // og image
}

因为该图片(或看起来如此)仅在单篇文章时可用。

类似地,您可以添加一个像$data['single_post'] = true这样的变量,然后使用它来确定og:image是否适用。此方法还需要isset,例如if (isset($single_post) && $single_post)),因为可能没有在其他地方定义。