在特定的Wordpress主题中添加第二个侧边栏

时间:2009-09-09 08:15:40

标签: php wordpress themes widget sidebar

我学会了how to add additional sidebars现在我需要弄清楚如何在主题Librio(wordpress.org/extend/themes/librio)中显示的附加边栏之外添加额外的侧边栏。

我绝对不知道在哪里看。代码是纯粹的混乱,而不是自我解释。

我的sidebar.php包含以下代码:

<div id="idontknow">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar1') ) : ?>
<?php endif; ?>
</div>

现在,如果我复制并添加相同的代码,但使用'sidebar2',我得到的是第一个侧边栏中显示的第二个侧边栏。

<div id="idontknow">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar1') ) : ?>
<?php endif; ?>
</div>

<div id="ireallydont">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar2') ) : ?>
<?php endif; ?>
</div>

我不希望这样。我想要两个单独的侧边栏。有人可以帮帮我吗,好吗?

我尝试使用CSS和id = leftsidebar和id = rightsidebar来使用,但它根本无效。

再次澄清一下: 我有2个侧边栏!我甚至在functions.php中找到了正确的代码

if ( function_exists('register_sidebar') )
    register_sidebar(array('name'=>'sidebar1',
    'before_widget' => '<div class="block">',
    'after_widget' => '</div>',
    'before_title' => '<h3 class="widgettitle">',
    'after_title' => '</h3>',
));
register_sidebar(array('name'=>'sidebar2',
    'before_widget' => '<div class="block">',
    'after_widget' => '</div>',
    'before_title' => '<h3 class="widgettitle">',
    'after_title' => '</h3>',
));

问题是,如上所述,第二个新创建的侧边栏显示在第一个侧边栏内。我想修改主题,以便我有两个单独的侧边栏。

4 个答案:

答案 0 :(得分:1)

您必须注册第二个侧边栏。

在主题文件夹中创建文件 functions.php (可能此文件已存在),添加以下代码:

    <?php
        register_sidebar(array('name'=>'sidebar'));
        register_sidebar(array('name'=>'sidebar2'));
    ?>

现在,如果您转到wordpress管理部分,您应该会看到有两个可用于添加小部件的侧边栏。

答案 1 :(得分:0)

您是否尝试将第二个侧边栏div的ID更改为id =“sidebar2”?没有看到网站/代码就很难分辨,但是CSS中可能存在导致两个侧边栏重叠的东西。要么是,要么第一次没有正确关闭。

答案 2 :(得分:0)

你把侧边栏div放在了librio的侧边栏div中吗?

换句话说,您的sidebar.php看起来像这样吗?

<div id="sidebar">
    <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar1') ) : ?>

    <!-- default librio sidebar stuff goes here -->

    <?php endif; ?>

    <div id="sidebar2">
        <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar1') ) : ?>

        <!-- second sidebar stuff goes here -->

        <?php endif; ?>
    </div>
</div>

当我这样做时,第二个侧边栏显示为默认的librio侧边栏的一部分。当我将<div id="sidebar2">内容移到<div id="sidebar">之外时,第二个侧边栏内容显示在页面底部。您需要修改CSS以将其移动到其他位置。

答案 3 :(得分:0)

这是一个CSS问题,而不是其他任何问题。我已经复制了您的设置并完成了以下操作以使两列工作。

我的sidebar.php是:

<div id="sidebar">
  <div id="idontknow">
  <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar1') ) : ?>
  <?php endif; ?>
  </div>
  <div id="ireallydont">
  <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar2') ) : ?>
  <?php endif; ?>
  </div>
</div>

我已经在functions.php中注册了两个侧边栏(正如Dextro建议的那样),并确认它们都可以工作并在另一个下面显示。

然后我在style.css中进行了以下宽度更改:

  • 在第173行,我改变了#content的 宽度为570px
  • 在第303行,我改变了

    侧边栏的宽度为300px

然后我添加了一个新的CSS规则:

#sidebar #idontknow,
#sidebar #ireallydont {
    width: 150px;float: left;
}

现在我有两个栏目。您可能需要调整宽度,并且您肯定想要修复侧边栏背景图像。