1

現在、foreach ループを独自の div と ul に分類するのに苦労しています。現在持っているものは次のとおりです。

<ul class="thumbnails parts-page">
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
    <?php endif; ?>

<?php endforeach; ?>
</ul>

基本的にこれは以下を生成します:

<ul class="thumbnails parts-page">
            <li class="span4">
            <a href="http://www.canecreek.com/" style="background: url('/torqzone/images/brands/cane-creek.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>

            <li class="span4">
            <a href="http://www.amclassic.com/en/" style="background: url('/torqzone/images/brands/american-classic.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>

            <li class="span4">
            <a href="http://www.avid.com/US/" style="background: url('/torqzone/images/brands/avid.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
</ul>

しかし、9つのアイテムごとに独自のものになるように分割する必要があります:

<ul class="thumbnails parts-page">
9ITEMS
</ul>

オンラインで見つけたさまざまな解決策を試しましたが、何もうまくいかないようです..

どんな助けでも大歓迎です。

4

7 に答える 7

2

非常に簡単で読みやすい解決策は、array_chunkを使用することです。

<?php foreach (array_chunk($this->items, 9) as $items): ?>
  <ul>
    <?php foreach ($items as $item): ?>     
      <!-- your code -->
    <?php endforeach; ?>
  </ul>
<?php endforeach; ?>

はい、余分なループですが、はるかに読みやすくなっています。

于 2013-07-26T13:32:37.393 に答える
0

変数を 1 に設定します。ループを実行するたびに変数を増やします。> 9 の場合は新しい ul を作成し、それ以外の場合は古い ul に追加します。

于 2013-07-26T13:20:52.913 に答える
0

私が理解していることは、順序付けられていないすべてのリストに9つのアイテムのみを含める必要があるということです。その場合は、カウント変数を使用できます

<?php $show = false; $count=0; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
 <?php if($count%9==0) echo'<ul class="thumbnails parts-page">'; ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
  <?php if($count%9 ==0) echo '</ul>'; ?>
   <?php $count++; ?>
    <?php endif; ?>

<?php endforeach; ?>
</ul>
于 2013-07-26T13:32:32.600 に答える
0
<?php 
$i=0;
foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
++$i;    
?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
<?php if($i>8): $i=0; ?>
</ul><ul class="thumbnails parts-page">
<?php endif; ?>
    <?php endif; ?>

<?php endforeach; ?>

上記のコードの代わりにこれを置き換えます

于 2013-07-26T13:22:52.503 に答える
0

カウンタ変数を使用するのはどうですか?

$counter = 0;
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if ($counter % 9 == 0) 
         echo '<ul class="thumbnails parts-page">';?>


    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
    <?php endif; ?>

   <?php if ($counter % 9 == 0) 
         echo '</ul>';?>

<?php $counter +=1 ?>
<?php endforeach; ?>

このようにして、リストの 9 項目ごとにulタグを出力します (それらを中に入れます)。(現在環境が整っていないので、コードをテストしてください)

于 2013-07-26T13:24:50.563 に答える