Добавление класса в последнюю строку в цикле foreach - PullRequest
1 голос
/ 31 января 2010

Привет всем,

Этот код отлично работает, печатая все 5 результатов с границами внизу каждого элемента списка с помощью CSS.

Тем не менее, последний идентификатор элемента не должен быть границ. Как я могу добавить класс в элемент списка на последней итерации?

<?php list($parent) = split('/', $this->url); ?>
<?php  $last_articles = $this->find('/news')->children(array('limit'=>5, 'order'=>'page.created_on DESC')); ?>
<ul id="latest-news">
<?php foreach ($last_articles as $article): ?>
<li>
<?php echo '<h3>'.$article->link($article->title()).'</h3>'; ?>
<?php echo strip_tags(substr($article->content(),0,100)).'...'; ?>
</li>
<?php endforeach; ?>
</ul>

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 31 января 2010
<?php list($parent) = split('/', $this->url); ?>
<?php  $last_articles = $this->find('/news')->children(array('limit'=>5, 'order'=>'page.created_on DESC')); ?>
<ul id="latest-news">
<?php $count = count($last_articles); $num = 0; ?>
<?php foreach ($last_articles as $article): ?>
<li <?php if($num == $count-1){ ?> class="last-item" <?php } ?>>
<?php echo '<h3>'.$article->link($article->title()).'</h3>'; ?>
<?php echo strip_tags(substr($article->content(),0,100)).'...'; ?>
</li>
<?php $num++ ?>
<?php endforeach; ?>
</ul>

Кстати, это добавляет класс "последний элемент" к последнему обработанному элементу.

И да, вы должны реструктурировать свой код так, чтобы он был читабельным.

0 голосов
/ 31 января 2010

Вы можете использовать модификатор CSS :last-child:

ul.latest-news:last-child { border-bottom: none; }

Но это не так широко поддерживается (пока), поэтому лучше всего добавить явный класс .last, как вы собираетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...