我制作了一个小的magento(1.7)模板文件,显示了一个类别中的所有产品。但是它们只显示在一列中。我想在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>
答案 0 :(得分:0)
实际上这有点复杂。也许我已达到目标,但你需要做几件事。它使它成为一个单项目列,因为它正在做一个foreach并且只是吐出每个项目。要使它做两列,您需要计算列表中的项目并除以2。从那里你可以使用一些迭代将它分成两个数组,然后为两个结果数组做一个foreach。
对于每个数组,您需要在div中使用左侧或右侧列的css样式。此外,您应该决定是否需要在中间分割的项目,第一部分在第1列中,后一部分在第2列中。或者您可能更喜欢在第1列中使用奇数项目,在第2列中使用偶数项目。 / p>
如果您正在寻找更详细的答案,我可以给您一个,但这不是一个简单的答案。如果你对此感到满意,肯定会采取一些重新编码。
以下是您可以执行的操作的概述:How to display two table columns per row in php loop