2011-01-11 75 views
1

在Wordpress中,我正在寻找一些方法来添加“last”和“first”类以列出Wordpress小部件中的项。该HTML可能看起来像这样:将第一个和最后一个类添加到Wordpress的小部件内容

<div class="widget-area"> 
<ul > 
    <li class="widget_recent_comments"> 
     <h3 class="widget-title">Recent comments</h3> 
     <ul id="recentcomments"> 
      <li class="recentcomments">Comment 1</li> 
      <li class="recentcomments">Comment 2</li> 
      <li class="recentcomments">Comment 3</li> 
      <li class="recentcomments">Comment 4</li> 
     </ul> 
    </li> 
    <li class="widget_my_links"> 
     <h3 class="widget-title">My links</h3> 
     <ul id="my-links"> 
      <li class="item">Link 1</li> 
      <li class="item">Link 2</li> 
      <li class="item">Link 3</li> 
      <li class="item">Link 4</li> 
      <li class="item">Link 5</li> 
     </ul> 
    </li> 
</ul></div> 

在这上面的例子,我想有加入李与“备注1”,“评4”,“链接1”和“链接的姓氏/班5" 。

有没有简单的解决方法呢? (我不想用javascript做到这一点)

谢谢。

+0

寻找挂钩到WordPress小部件输出方法的钩子。我确信最后至少应该有一个,然后再把所有东西都吐出来。根据您的要求,这是唯一的选择。 一个非常奇怪的方法是使用输出缓冲来捕获和重新处理输出。但是对于任何解决方案,您都需要挂钩到基础小部件类中,因为您想更新所有这些类。 我强烈推荐JavaScript解决方案,它实际上是jQuery的一行,并且它不会很慢,因为它是一个简单的遍历和属性操作。 – hlfcoding 2011-01-25 06:42:35

回答

0

我猜这些列表是在一个循环中生成的。所以你可以做的是在你进入循环之前创建一个变量,并将其值设置为1($ i = 1)。比在循环结束时,添加一个($ i ++)。现在,您希望第一个/最后一节课出现,你可以做

<?php if($i == 1): 
    echo ' first'; 
elseif($i == $number_of_items) 
    echo 'last'; 
endif;  
?> 

在$ I == $ NUMBER_OF_ITEMS,你最大与当前相比,那么你知道你有最后如果语句是真的。

希望这回答你的问题。

+0

实际循环(或称为wordpress中的“循环”)在wordpress代码中,所以我无法改变它。我更想加入某种过滤器,但希望有一个更简单的解决方案。 – user571188 2011-01-11 12:40:50

+0

否“循环”是循环发布帖子的文件,并以某种方式显示它们。这些小部件是单独的插件或功能,可以被改写覆盖。你使用WordPress的标准模板?因为这些列表可能在sidebar.php中生成,或者在sidebar.php中调用函数。编辑sidebar.php是可以的。如果一个函数被调用,你可以在functions.php中覆盖该函数,或者将函数复制到functions.php中,修改并重命名它,然后调用该函数 – 2011-01-11 13:54:38

0

那么第一项很简单,只需使用

ul#my-list li:first-child { 
    /* special styles */ 
} 

它不添加类,但你仍然可以样式。 :last-child不存在类似的css规则,不幸的是

相关问题