如何分离PHP生成的列表项 - Magento

时间:2013-04-14 18:41:05

标签: php css magento

我有一些php生成的magento顶部链接,下面有截图:

enter image description here

我的目标是将“登录”链接分开并将其浮动到同一行的左侧。

我希望有一种有效的方法来选择最后生成的列表项元素并为其应用一些CSS。

代码如下:

<ul class="links pull-right"<?php if($this->getName()): ?> id="<?php echo $this->getName() ?>"<?php endif;?>>
    <?php foreach($_links as $_link): ?>
        <?php if ($_link instanceof Mage_Core_Block_Abstract):?>
            <?php echo $_link->toHtml() ?>
        <?php else: ?>
            <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
        <?php endif;?> 
        <?php if (! $_link->getIsLast()):?>|<?php endif;?>
    <?php endforeach; ?>
</ul>

任何想法都将不胜感激!

3 个答案:

答案 0 :(得分:1)

我不久前回答了类似的问题。这会将“last-item”类添加到最后处理的项目中。

<?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>

答案 1 :(得分:1)

CSS提供了一种为集合的最后一个子项设置样式的方法,不需要修补PHP。

http://tinker.io/926d2

ul.links.pull-right :last-child {
    margin-left: 2em;
}

答案 2 :(得分:1)

全晚,

我尝试并限制您添加到模板的业务逻辑数量。正如你想要实现的那样是定制到这个magento实例我会创建一个非常基本的模块。然后我会想要实现一个新块或只是一个将返回所需数据的辅助函数。

如果您使用块功能,请确保您的类扩展了Magento导航类。 (对不起,我没有检查过这是什么)然后创建动作:例如

public function getNavigation()
{
     $links     = $this->getLinks();
     $linkArray = array();
     $linkCount = count($links);
     $i;

     foreach($links as $link) {
          if($i == $linkCount) {
              $last = true;
          } else { 
               $last = false;
          }
          $linkArray[] = 'link'   => $link->getLink()->toHtml(),
                         'isLast' => $last 

          $i++;
     }
     return $linkArray();

}

您的块将应用最少的逻辑。主要是迭代结果集。

希望这是有道理的,如果不让我知道,我会得到你所需要的。