0

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

在此处输入图像描述

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

我希望有一种有效的方法来选择最后生成的列表项元素并对其应用一些 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>

任何想法将不胜感激!

4

3 回答 3

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();

}

然后,您的块将应用最少的逻辑。主要只是遍历结果集。

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

于 2013-04-14T19:58:05.450 回答
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>
于 2013-04-14T18:46:55.317 回答
1

CSS 提供了一种方法来设置集合的最后一个子元素,无需修改 PHP。

http://tinker.io/926d2

ul.links.pull-right :last-child {
    margin-left: 2em;
}
于 2013-04-14T19:43:07.167 回答