不同页面模板上的不同小部件?

时间:2010-08-24 作者:cannyboy

如果我有两个不同的页面模板,如何为每个模板显示不同的侧栏小部件集合?我以Starkers主题为出发点。

5 个回复
最合适的回答,由SO网友:Joshua Lynch 整理而成

您需要在函数中创建更多的侧栏。php文件,然后编辑页面模板以调用所需的提要栏。

Adding sidebars

进入你的功能。php文件。您应该看到一些侧栏已经注册。代码如下所示:

//Adds default sidebar
 if ( function_exists(\'register_sidebar\') )
 register_sidebar();
要添加另一个侧栏,请在现有侧栏注册后多次添加以下代码。

//Registers new sidebar
if ( function_exists(\'register_sidebar\') ) {
    register_sidebar(array(\'name\' => \'Name Sidebar Here\',\'before_widget\' => \'\',\'after_widget\' => \'\',\'before_title\' => \'<h2 class="widgettitle">\',\'after_title\' => \'</h2>\'));    
} 
其中显示“Name Sidebar Here”,为这个新的侧边栏输入一个逻辑名称。如果主题的设计需要,数组的其余部分允许您将HTML放在小部件之前(在\\u小部件之前),并将HTML放在小部件之后(在\\u小部件之后)。此外,主题中更常用的是小部件标题的自定义样式。您可以将HTML放在标题之前(在\\u title之前)和标题之后(在\\u title之后)。在上面的示例中,每个小部件标题都有<h2 class="widgettitle"> 放置在其前面和后面,以关闭打开标记。

Add your new sidebar to your page templates

现在,您已经添加了一个侧栏,需要将其放在页面模板中所需的位置。找到在模板内部调用默认侧栏的位置(通常),并将其替换为以下内容,其中数字是侧栏在函数中添加的顺序。php文件。

<?phpif ( !function_exists(\'dynamic_sidebar\') || !dynamic_sidebar(Sidebar number here) ) : ?><?php endif; ?>
这个边栏是函数中添加的第二个边栏。php文件,所以要在页面模板中调用它,您将在!dynamic_sidebar(Put sidebar number here) ).

Add widgets

将其添加到页面模板后,只需将小部件添加到外观-->小部件管理页面的侧栏中即可。新的边栏将显示在那里,并带有您在函数中为其指定的名称。php文件。

希望这有帮助!

SO网友:ZaMoose

Widget Logic 也是一种选择。

SO网友:eddiemoya

小部件逻辑是一种解决方案,也是一种很好的解决方案。

由于您可以完全自定义函数中的所有before/after小部件标记,因此多个侧栏是更健壮的解决方案。php。更不用说你可以制作任意数量的边栏了。

更轻量级的解决方案可能只是使用body类来区分css上的页面类型。隐藏你不想要的东西,展示你做的东西。这是实现这类事情的一种快速而简单的方法。

SO网友:Philip

另一个解决方案是Display-Widgets 插件,它在你的侧边栏中激活的每个小部件中添加一个下拉菜单,你可以在其中选择显示或隐藏它的页面/帖子。

SO网友:hannit cohen

其他两个选项:1。而不是制作“侧边栏”。php“更复杂的是将新的widgetized边栏添加到新的边栏文件”边栏xxx。然后在页面模板中使用

您可以使用contextual-widgets 插件

结束

相关推荐