2013-04-14 56 views
0

我有下面的截圖一些PHP產生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> 

任何想法,將不勝感激!

回答

1

CSS提供了一種樣式化集合的最後一個孩子的方式,不需要修改PHP。

http://tinker.io/926d2

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

輝煌。這絕對是選擇我所需要的最簡單和最好的方法。如果我可以錯誤地向正確方向推一次,我正在尋找整個無序列表正確地浮動,但最後一個孩子在網格的同一行上左移。如果你可以看看這個修補程序,我會非常感激:http://tinker.io/926d2/1 –

+0

最後一個孩子肯定被選中,但被推到下一行。我已經嘗試了幾種方法,比如絕對定位ul,clearfixes,將寬度設置爲100%,但它似乎不起作用。謝謝你的幫助! –

+0

看起來你的問題是針對Chrome的。這應該解決它:http://tinker.io/926d2/10 – cimmanon

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> 
+0

哈,我想我只能屈服,學習一點點PHP,而不是我想的。我對如何實現這一點有點困惑。感謝您的幫助!我希望將來能夠了解更多! –

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

} 

然後,您的塊將應用最少的邏輯。主要是迭代結果集。

希望是有道理的,如果不讓我知道,我會給你你所需要的。