magento主页中的特色产品

时间:2015-11-20 12:56:26

标签: php xml magento product

我想在主页上显示特色产品。所以我在 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还有什么我需要做的或者创建其他文件吗?请帮忙。

3 个答案:

答案 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>