【问题标题】:Adding a 2nd Sidebar in a specific Wordpress theme在特定的 Wordpress 主题中添加第二个侧边栏
【发布时间】:2009-09-09 08:15:40
【问题描述】:

我学习了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>

我不想那样。我想要并排放置 2 个单独的侧边栏。有人可以帮帮我吗?

我尝试使用 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>',
));

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

【问题讨论】:

    标签: php wordpress themes widget sidebar


    【解决方案1】:

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

    在你的主题文件夹中创建一个文件functions.php(可能这个文件已经存在)然后添加以下代码:

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

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

    【讨论】:

    • 不,这不是问题所在。我确实有 2 个侧边栏。问题是第二个侧边栏显示在第一个侧边栏中。我正在寻找一种在 Librio 主题中拥有 2 个独立侧边栏的方法,该主题最初是 1 个侧边栏主题。
    • 如果你把你的代码放到网上,那么你会更容易发现你的问题。
    【解决方案2】:

    这更像是一个 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's 宽度为 570 像素
    • 在第 303 行,我将

      侧边栏的宽度更改为 300px

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

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

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

    【讨论】:

      【解决方案3】:

      您是否尝试过将第二个侧边栏 div 的 id 更改为 id="sidebar2"?如果不查看站点/代码,很难判断,但 CSS 中可能存在导致两个侧边栏重叠的内容。要么,要么第一个没有正确关闭。

      【讨论】:

      • 老兄,这就是我所追求的 ;)。我没有 CSS 和 php/html 代码来使它们成为 2 个单独的侧边栏,因为主题 Librio 最初是一个 1-sidebar 主题。我需要的是实现它的代码。
      【解决方案4】:

      您是否将侧边栏 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 边栏的一部分出现。当我将&lt;div id="sidebar2"&gt; 的内容移到&lt;div id="sidebar"&gt; 之外时,第二个侧边栏内容出现在页面底部。您需要修改 CSS 以将其移动到其他位置。

      【讨论】:

        猜你喜欢
        • 2013-10-20
        • 1970-01-01
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        相关资源
        最近更新 更多