【问题标题】:Need assistance w/ dynamic highlighting an image-sprite navigation menu in wordpress需要帮助,在 wordpress 中动态突出显示图像精灵导航菜单
【发布时间】:2011-02-20 22:14:13
【问题描述】:

我在我正在构建的 wordpress 网站上有一个基于图像的菜单,我希望能够为每个部分动态突出显示 &更重要的是在每个访问者查看子页面或在其各自页面内发布时突出显示强>。

我已经整理好如何在查看父页面时让每个部分突出显示,但是当我选择查看帖子或子页面时,我遇到了一些问题来实现相同的效果。

由于我使用类别将内容过滤到特定页面,我能够在查看帖子时仍然突出显示每个部分,使用:<?php if ( is_page('page-name') || is_category('cat-name') || in_category('cat-name')) { echo ' class="xxxx_highlight" '; } ?> 但不幸的是,这也导致了一些问题....发生的事情是,一旦有内容发布到博客和媒体部分 - 两个部分将同时突出显示,这显然不是这里要做的。但是我无法弄清楚为什么会发生这种情况,所以我删除了 in_category()is_category()...

在过去的几周里,我一直在上下浏览条件标签部分,但对于我可以使用哪些额外的标签来使用精灵菜单实现这一点无济于事。如果有一个标签可以简单地查找菜单中父级的 single.php 页面和子页面是否正在使用中,那么理想而不是定位“类别”将是理想的……但实际上找不到任何有用的东西所以我希望一些 php/wordpress 大师可以指出正确的方向!

这是我当前的标记:
HTML 菜单

<ul id="nav">
    <li>
        <a href="/" id="logo"></a>
    </li>
    <li>
        <a href="/" id="home" <?php if ( is_front_page('events')) { echo ' class="home_highlight" '; } ?>></a><!-- HOME -->
    </li>
    <li>
        <a href="/artists" id="artists" <?php if ( is_page('artists')) { echo ' class="artists_highlight" '; } ?>></a><!-- ARTISTS -->
    </li>
    <li>
        <a href="/media" id="media" <?php if ( is_page('media')) { echo ' class="media_highlight" '; } ?>></a><!-- MEDIA -->
    </li>
    <li>
        <a href="/blog" id="blog" <?php if ( is_home('blog')) { echo ' class="blog_highlight" '; } ?>></a><!-- BLOG -->
    </li>
    <li>
        <a href="/store" id="store" <?php if ( is_page('store')) { echo ' class="store_highlight" '; } ?>></a><!-- STORE -->
    </li>
    <li>
        <a href="/contact" id="contact" <?php if ( is_page('contact')) { echo ' class="contact_highlight" '; } ?>></a><!-- CONTACT -->
    </li>
</ul>

【问题讨论】:

    标签: wordpress dynamic navigation sprite highlighting


    【解决方案1】:

    我建议你在 "ul" 中使用 echo,类似

    <ul id="nav" class="<?php echo $post->ID; ?>">
    ..... li's and a's here
    

    所以通过 CSS 你就可以了

    .N #home, .M #artists, .X #media { [active styling] } /* where N is home ID, M is artists ID, X is media ID and so on */
    

    因此,当您在提供 ul 类“N”的页面中时,您知道#home 将处于活动状态。当您处于“M”时,您就知道艺术家很活跃。

    PS:您甚至可以使用“类名”之类的自定义字段来获得更好的菜单控件..

    【讨论】:

    • 感谢您的回复,您能否为我推断一下那里发生了什么?...谢谢
    • 我看不出这对我有什么帮助,因为 class="ID; ?> 为每个帖子生成一个不同的唯一类 ID。我需要一种基本上只是添加的方法另一个条件是列表中的 li 元素,以便 wordpress 识别我正在访问父页面或帖子,以便相应的导航部分保持突出显示......也许我错过了你的例子的重点,但我不这么认为我在找什么,谢谢。
    • 如果是页面或子页面,您可以使用测试而不是 post->ID,然后回显 ID。有关检查是否是子页面的更多信息:codex.wordpress.org/…
    • 谢谢,我之前试过了,但因为你推荐了它,所以又试了一次,但不幸的是仍然没有运气......我想知道 JQuery 是否会更容易解决这个问题?如果我使用的是 wp_list_pages,这将是小菜一碟,但是因为我硬编码了一个基于图像精灵的菜单,这不是一个选项......如果 wordpress 只是提供一种生成活动状态类的方法,就像 wp_list_pages 一样无需实际使用该功能。目前还不确定还能去哪里?
    • 我意识到 is_category() 正在寻找“寻找”一个类别,而 in_category() 正在寻找“内部”一个类别,所以我删除了 is_category() 并且只保留了 in_category() 并且我至少实现了结果我追求的是后驱动的 3 个部分,但我仍然基本上停留在第一方,因为我需要能够在访问子页面时突出显示网站的其他部分。似乎仍然无法找到一个好的解决方案,或者至少我可以自己解决一个:(
    【解决方案2】:

    以防万一其他人可能遇到我在这里遇到的同样问题,经过几个小时筛选 wordpress 代码后,我终于自己找到了解决方案...

    事实证明,这个问题的答案比我想象的要容易得多。您需要做的就是利用 wordpress 自己的 &lt;?php body_class($class); ?&gt; 标签...一旦您将其编码,转到 firebug 并检查标签生成的输出类,具体取决于您所在的页面。因此,现在很容易使用生成的类(特别是 page-template-xxxx 类)并通过 CSS 定位该类,以使用静态站点的老式方式突出显示您需要的内容。

    希望能帮助其他遇到同样困境的人!

    【讨论】:

    • 经过进一步研究发现,body 类在访问单个页面时不会创建唯一的“页面”类,所以问题仍然存在……遗憾的是,Wordpress 并没有简单地通过添加更多类身体类然后它已经这样做了。如果你有一个没有图像的典型导航菜单,这些类真的会更有帮助,一旦你添加了图像,事情就会变得更加复杂。
    猜你喜欢
    • 2021-09-12
    • 2019-06-20
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多