如何创建以不同布局显示博客帖子的页面模板?

时间:2014-04-14 作者:user1981248

我正在创建Wordpress主题,我想创建一些页面模板,用于创建具有不同布局的博客页面。例如,我想要blog-4-column。php,blog-3专栏。php和博客列表。php,为用户提供3种不同的布局选项来创建博客页面。现在我可以在索引中列出博客帖子了。使用以下代码的php文件:

if (have_posts()) : while(have_posts()) : the_post(); ?>
  <?php get_template_part(\'content\', get_post_format()); ?>
<?php endwhile; else : ?>
  <div id="post-<?php the_ID(); ?>" <?php post_class(\'no-posts\'); ?>>
      <h3>No Posts found</h3>
  </div>
<?php endif;
我有内容的地方。php,内容链接。php,内容库。php显示不同帖子格式的帖子。现在,我知道如何在页面模板中做到这一点的唯一方法是使用WP\\u查询,因为页面模板中的帖子类型是“pages”,使用上述代码将列出注册的页面,而不是帖子。

我只是想知道,我是否可以使用相同的“内容-帖子格式””文件来实现这一点,因为我不想为我要创建的每个博客页面模板创建3或4个“内容-帖子格式””文件。

我到处寻找这个,发现最有用的是Tutsplus, 但它仍然不包括有不同的“内容-帖子格式”文件,也不包括以不同方式列出博客帖子的不同页面模板。

请让我知道这件事,谢谢你。

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我不会仅仅使用自定义页面模板来更改博客文章索引的布局。将页面模板用于博客文章索引绕过了显示博客文章索引的核心处理(根据模板层次结构,使用home.phpindex.php 渲染)。

编辑我从不。。。在我的问题中说我想改变博客文章“索引”的布局。

是的,这正是你所说的。在WordPress术语中,博客帖子索引是所有博客帖子的默认列表,无论是在网站首页还是静态页面上。配置时Settings -> Reading -> Front Page Displaysa static page, 然后将静态页面分配给Posts page, 然后WordPress使用指定的静态页面显示博客帖子索引。

WordPress使用该页面显示博客帖子索引时,会忽略任何指定的页面模板。它忽略了page.php 样板它始终且仅使用home.phpindex.php.

因此,如果您强制用户使用自定义页面模板来显示博客帖子索引,那么您就破坏了核心功能的工作方式。为了让用户能够使用您的自定义页面模板,他们必须创建另一个静态页面,然后将您的自定义页面模板分配给该页面。用户必须取消分配给的页面Posts page 在里面Settings -> Reading, 或者干脆忽略该页面的存在,并将其输出复制到他们为您的自定义页面模板指定的单独静态页面上。

最初的解决方案是,为博客布局定义一个主题选项,然后使用该选项值有条件地包括模板部分文件、有条件地显示侧栏或进行筛选body_class (或post_class) 用于CSS更改。

条件模板零件文件

$theme_options = get_option( $option_name );

get_template_part( \'content\', $theme_options[\'blog_layout\'] );
条件侧栏
$theme_options = get_option( $option_name );

if ( \'full\' != $theme_options[\'blog_layout\'] ) {
    get_sidebar();
}

过滤器body_class

function wpse141248_filter_body_class( $classes ) {

    if ( is_home() ) {
        $theme_options = get_option( $option_name );
        $classes[] = \'layout-\' . $theme_options[\'blog_layout\'];
    }
    return $classes;    
}
add_filter( \'body_class\', \'wpse141248_filter_body_class\' );
筛选post_class 基本上是相同的技术。

结束

相关推荐

Internal and External Blog

我的公司正在寻找一个只有我们的员工才能访问的内部公司博客。我们正在研究Sharepoint和其他选项,其中之一就是WordPress。(并不是我们办公室的每个人都有Sharepoint,但我对此的问题将转到其他地方。)我们也有可能在某个时候需要一个外部的公共博客。我们可以用WordPress同时拥有私人公司博客和公共博客吗?如果有人有足够的知识进行比较,Sharepoint与WordPress的利弊是什么?感谢您的时间和帮助!