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

如何分离PHP生成的列表项-Magento,php,css,magento,Php,Css,Magento,我有一些php生成的magento顶部链接,下面有一个屏幕截图: 我的目标是分离“登录”链接,并将其浮动到同一行的左侧 我希望有一种有效的方法来选择最后生成的列表项元素并对其应用一些CSS 代码如下: <ul class="links pull-right"<?php if($this->getName()): ?> id="<?php echo $this->getName() ?>"<?php endif;?>> <

我有一些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>
id=”“>
class=“first last”>
|


任何想法都将不胜感激

不久前我回答了一个类似的问题。这会将类“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>

    >

不久前我回答了一个类似的问题。这会将类“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>

    >

CSS提供了一种样式化集合最后一个子元素的方法,无需修改PHP


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

晚上好

我会尝试限制添加到模板中的业务逻辑的数量。由于您希望实现的是magento实例的定制,因此我将创建一个非常基本的模块。然后,我希望实现一个新的块,或者只是一个将返回所需数据的助手函数

如果您正在使用block函数,请确保您的类扩展了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();

}
然后,您的块将应用最小逻辑。主要是迭代结果集

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

晚上好

我会尝试限制添加到模板中的业务逻辑的数量。由于您希望实现的是magento实例的定制,因此我将创建一个非常基本的模块。然后,我希望实现一个新的块,或者只是一个将返回所需数据的助手函数

如果您正在使用block函数,请确保您的类扩展了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();

}
然后,您的块将应用最小逻辑。主要是迭代结果集


希望这是有意义的,如果不让我知道,我会给你你想要的。

Hah,我想我必须全力以赴,学习一点PHP,比我想象的要多得多。我对如何实现这一点有点困惑。谢谢你的帮助!我希望将来能了解更多!哈,我想我必须全力以赴,学习比我想象的更多的PHP。我对如何实现这一点有点困惑。谢谢你的帮助!我希望将来能了解更多!明亮的这绝对是最简单和最好的方式来选择我要找的。如果我能让你往正确的方向推一次,我希望整个无序列表向右浮动,但最后一个子元素在网格的同一行向左浮动。如果你能看看这个修补程序,我会非常感激:最后一个孩子肯定被选中了,但被推到了下一行。我尝试过几种方法,比如绝对定位ul、clearfixes、将宽度设置为100%,但似乎不起作用。谢谢你的帮助!看起来你的问题与Chrome有关。这应该可以解决这个问题:在检查了Chrome和Firefox之后,我仍然看到所有元素按照从左到右的顺序向右浮动:e d c b a。寻找e漂浮在容器的左侧,其余的按以下顺序漂浮在右侧:a b c d。哦,我现在明白了。好的,看起来您需要使用另一个类,因为浮动ul会导致元素缩小到尽可能小:Brilliant。这绝对是最简单和最好的方式来选择我要找的。如果我能让你往正确的方向推一次,我希望整个无序列表向右浮动,但最后一个子元素在网格的同一行向左浮动。如果你能看看这个修补程序,我会非常感激:最后一个孩子肯定被选中了,但被推到了下一行。我尝试过几种方法,比如绝对定位ul、clearfixes、将宽度设置为100%,但似乎不起作用。谢谢你的帮助!看起来你的问题与Chrome有关。这应该可以解决这个问题:在检查了Chrome和Firefox之后,我仍然看到所有元素按照从左到右的顺序向右浮动:e d c b a。寻找e漂浮在容器的左侧,其余的按以下顺序漂浮在右侧:a b c d。哦,我现在明白了。好的,看起来您需要使用不同的类,因为浮动ul会导致元素收缩到尽可能小: