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

CSS は、コレクションの最後の子をスタイルする方法を提供します。PHP をいじる必要はありません。

http://tinker.io/926d2

ul.links.pull-right :last-child {
    margin-left: 2em;
}
于 2013-04-14T19:43:07.167 に答える
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

イブニング・オール、

テンプレートに追加するビジネス ロジックの量を制限してみてください。あなたが達成しようとしているのは、この 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 に答える