我想在主页上显示特色产品。所以我在 app / code / local / FeaturedProduct / Catalog / Block / Product / Featured.php
中创建了自定义模块和块文件代码:
class FeaturedProduct_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_List
{
protected $_productCollection;
public function fetchProducts()
{
$this->productCollection =Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addFieldToFilter('featured_products', array('eq' => '1'));
return $this->productCollection;
}
}
在 app / code / local / FeaturedProduct / Catalog / etc / config.xml
中创建配置文件代码:
<!--?xml version="1.0" encoding="UTF-8"?-->
<config>
<modules>
<featuredproduct_catalog>
<version>1.0.0</version>
</featuredproduct_catalog>
</modules>
<global>
<blocks>
<featuredproducts>
<class>FeaturedProduct_Catalog_Block</class>
</featuredproducts>
</blocks>
</global>
<frontend>
<layout>
<updates>
<featuredproducts>
<file>featuredproduct.xml</file>
</featuredproducts>
</updates>
</layout>
</frontend>
</config>
在位置 app / design / frontend / rwd / default / layout / featuredproduct.xml
中创建了featuredproducts.xml代码:
<!--?xml version="1.0" encoding="UTF-8"?-->
<layout version="0.1.0">
<cms_index_index translate="label">
<reference name="content">
<block type="featuredproducts/products_featured" name="featured_product_collection" template="catalog/product/featured.phtml">
<action method="setColumnCount">
<columns>4</columns>
</action>
</block>
</reference>
</cms_index_index>
</layout>
创建了一个视图文件“app / design / frontend / rwd / default / template / catalog / product / featured.phtml”
代码:
<!--?php
$_featuredProductCollection = $this--->fetchProducts();
$_helper = $this->helper('catalog/output');
?>
<div>
<!--?php if (!$_featuredProductCollection--->count()): ?>
<h2><p><!--?php echo $this--->__('There are no products in the featured product list!!') ?></p></h2>
<!--?php else: ?-->
<div class="category-products-grid">
<!--?php // Grid Mode ?-->
<!--?php $_collectionSize = $_featuredProductCollection--->count() ?>
<!--?php $_columnCount = $this--->getColumnCount(); ?>
<!--?php $i = 0;
foreach ($_featuredProductCollection as $_product): ?-->
<!--?php if ($i++ % $_columnCount == 0): ?-->
<ul class="products-grid first last odd">
<!--?php endif ?-->
<li class="item<?php if (($i - 1) % $_columnCount == 0): ?> first
<?php elseif ($i % $_columnCount == 0): ?> last<?php endif; ?>">
<div class="productGrid-description">
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo
$this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo
$this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'),
null, true) ?>"></a>
<h3 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><!--?php echo
$_helper--->productAttribute($_product, $_product->getName(), 'name') ?></a></h3></div>
<!--?php if ($_product--->getRatingSummary()): ?>
<!--?php echo $this--->getReviewsSummaryHtml($_product, 'short') ?>
<!--?php endif; ?-->
<!--?php echo $this--->getPriceHtml($_product, true) ?>
<!--?php if ($_product--->isSaleable()): ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo
$this->getAddToCartUrl($_product) ?>')">
<span class="btn-cart-container"><!--?php echo $this--->__('Add to Cart') ?></span>
</button>
<!--?php else: ?-->
<p class="availability out-of-stock">
<span><!--?php echo $this--->__('Out of stock') ?></span></p>
<!--?php endif; ?-->
</li>
<!--?php if ($i % $_columnCount == 0 || $i == $_collectionSize): ?-->
</ul>
<!--?php endif ?-->
<!--?php endforeach ?-->
</div>
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd', 'even', 'first', 'last'])</script>
</div>
<!--?php endif; ?-->
在Magento后端创建一个特色属性,使用商店所有者下拉列表的目录输入类型中的是/否属性,然后将其包含在属性集中,并从Catalog-&gt; Manage Products中将一个产品指定为精选“是”。 在我加载主页后它什么都没显示。没有想到我犯了哪些错误。我不想改变local.xml所以拿了这个aproach.Is还有什么我需要做的或者创建其他文件吗?请帮忙。
答案 0 :(得分:0)
@Melvin这是一个很好的教程,用于显示特色产品,我认为这将对您有所帮助。请参考教程。
http://inchoo.net/magento/featured-products-on-magento-frontpage-tutorial/
答案 1 :(得分:0)
请创建一个属性features-product并在html文件夹中创建一个featured.phtml文件,根据featured.phtml上的特色产品属性编写获取产品的代码。之后在cms中的magento主页上调用此文件。
答案 2 :(得分:0)
阻止文件
class FeaturedProduct_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract
{
public function __construct()
{
$this->setLimit(40);
$sort_by = 'name';
$this->setItemsPerRow(4);
switch ($sort_by) {
case 0:
$this->setSortBy("rand()");
break;
case 1:
$this->setSortBy("created_at desc");
break;
default:
$this->setSortBy("rand()");
}
}
protected function _beforeToHtml()
{
$collection = Mage::getResourceModel('catalog/product_collection');
$attributes = Mage::getSingleton('catalog/config')
->getProductAttributes();
$collection->addAttributeToSelect($attributes)
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addAttributeToFilter('featured_products', 1, 'left')
->addStoreFilter()
->getSelect()->order($this->getSortBy())->limit($this->getLimit());
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
$this->_productCollection = $collection;
$this->setProductCollection($collection);
return parent::_beforeToHtml();
}
}
应用程序/设计/前端/ RWD /默认/模板/目录/产品/ featured.phtml
<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
<div class="clear"></div>
<div class="new_product_slider">
<div id="demo">
<div class="text_left"><?php echo Mage::helper('featuredproducts')->getConfigHeading();?></div>
<div class="text_right"> <?php echo $this->__('Fragtfri ved køb over 130 kr.')?> </div>
<div class="clear"></div>
<div id="owl-demo1" class="owl-carousel">
<?php $i=1; foreach ($_products->getItems() as $_product): ?>
<?php if($i > 1 ) { $j=2;} else { $j=1;} ?>
<div class="item">
<ul>
<li>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="prod"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(183, 183) ?>" width="183" height="183" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
<div class="cover"
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" > <?php echo strip_tags(ucfirst($this->htmlEscape($_product->getName()))) ?></a></div>
<h4><?php echo $this->getPriceHtml($_product, true, '-new') ?></h4>
<aside class="læs_btn"><a href="<?php echo $_product->getProductUrl() ?>"><span><?php echo $this->__('Læs mere'); ?></span></a></aside>
<div class="clear"></div>
</li>
</ul>
</div>
<?php $i++; if($i%5==0) { $i=1; ?>
<?php } ?>
<?php endforeach; ?>
</div>
</div>
</div>