0

カテゴリ内のすべての製品を表示する小さなmagento(1.7)テンプレートファイルを作成しました。ただし、これらは1つの列にのみ表示されます。2列で表示したいのですが。

これにより、フロントページからブロックが実行されます。

{{block type="catalog/product" name="msc.specials" template="mylib/featuredlist.phtml"}}

これはfeaturedlist.phtmlです-

<?php
//$_categoryId = $this->getCategoryId();

$productCollection = Mage::getModel('catalog/category')->load(4)
    ->getProductCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('status', 1)
    ->addAttributeToFilter('visibility', 4)
    ->setOrder('price', 'ASC'); 
    $cartHelper = Mage::helper('checkout/cart');
?>

<div class='block block-list'> 
<div class='block-title'><strong><span><?php echo $this->__('SPECIALS') ?></span></strong></div>
    <div class='block-content'> 
        <ul>
            <h2><?php echo $this->__( $this->getLabel() ); ?></h2>
            <?php foreach ($productCollection as $product): ?>
                <div class="item">
                    <a class="product-image" href="<?php echo $product->getProductUrl() ?>">                
                        <img src="<?php echo $this->helper('catalog/image')->init($product, 'small_image')->resize(100); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($product, 'small_image')) ?>" />
                    </a>
                    <a class="product-name" href="<?php echo $product->getProductUrl() ?>"><?php echo $this->htmlEscape($product->getName()) ?></a>                     
                   <?php echo $this->getPriceHtml($product, true) ?>                       
                </div>

                <div class="cms-price-box" style=" text-align:center;"></div>
                <div class="button-row" style="text-align:center;">                 
                    <button class="button btn-cart" type="button" onclick="setLocation('<?php echo $this->getUrl('')."checkout/cart/add?product=".$product->getId()."&qty=1"  ?>')" class="button"><span><?php echo $this->__('Add to Cart') ?></span></button>
                </div>
                <br/><br/>              
            <?php endforeach ?>
        </ul>
     </div>
</div>
4

2 に答える 2

0

これは実際には少し複雑になります。多分私は行き過ぎですが、あなたはいくつかのことをする必要があります。foreachを実行し、各アイテムを吐き出すだけなので、単一アイテムの列になります。2列にするためには、リスト内の項目を数え、2で割る必要があります。そこから、いくつかの反復を使用して2つの配列に分割し、結果の両方の配列に対してforeachを実行できます。

配列ごとに、左または右の列にcssスタイルを設定したdivに配置する必要があります。さらに、アイテムを中央で分割する必要があるかどうかを決定する必要があります。最初の部分は列1に、後半の部分は列2に配置します。または、奇数のアイテムを列1に配置し、偶数のアイテムを列2に配置することもできます。

あなたがより詳細な答えを探しているなら、私はあなたにそれを与えることができます、しかしそれは単純なものではありません。あなたがそれに慣れているなら、間違いなく少しの再コーディングが必要です。

実行できることの概要は次のとおりです。phpループで行ごとに2つのテーブル列を表示する方法

于 2012-09-18T20:47:25.793 に答える
0

これは、ネイトの提案と参照に基づく解決策です。同じことをする他の方法に興味があります

<?php
$_categoryId = $this->getCategoryId();

$productCollection = Mage::getModel('catalog/category')->load($_categoryId)
    ->getProductCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('status', 1)
    ->addAttributeToFilter('visibility', 4)
    ->setOrder('price', 'ASC'); 
    $cartHelper = Mage::helper('checkout/cart');

    $x = 1;
?>

<div class='block block-list'> 
<div class='block-title'><strong><span><?php echo $this->__('FEATURED PRODUCTS') ?></span></strong></div>
    <div class='block-content'> 
        <ul>
            <h2><?php echo $this->__( $this->getLabel() ); ?></h2>
            <table>
            <tr>            
            <?php foreach ($productCollection as $product): ?>
            <?php           
                $x++;
                if (($x % 2) == 0){
                    echo "</tr><tr>";
                }
            ?>          
            <td>                
                <div class="item">
                    <a class="product-image" href="<?php echo $product->getProductUrl() ?>">
                        <img src="<?php echo $this->helper('catalog/image')->init($product, 'small_image')->resize(180); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($product, 'small_image')) ?>" />
                    </a>
                    <br/>
                    <a class="product-name" href="<?php echo $product->getProductUrl() ?>"><?php echo $this->htmlEscape($product->getName()) ?></a>                     
                    <?php echo $this->getPriceHtml($product, true) ?>                      
                </div>

                <div class="cms-price-box" style=" text-align:center;"></div>
                <div class="button-row" style="text-align:center;">                 
                    <button class="button btn-cart" type="button" onclick="setLocation('<?php echo $this->getUrl('')."checkout/cart/add?product=".$product->getId()."&qty=1"  ?>')" class="button"><span><?php echo $this->__('Add to Cart') ?></span></button>
                </div>
            </td>
            <?php endforeach ?>
            </tr>
            </table>
        </ul>
     </div>
</div>
于 2012-09-18T22:15:38.750 に答える