Избранные продукты на домашней странице
-
13-12-2019 - |
Вопрос
Я замечаю, что атрибут «Известный продукт» существует в последней версии Magento.Как я могу сделать свои извлеченные продукты отображать на главной странице в теме RWD?
Спасибо
Решение
Я не вижу этот атрибут, поскольку по умолчанию добавляется в Magento 1.9.x, это, однако, очень легко создавать коллекцию продукта на основе пользовательского атрибута продукта I.E. «Figure_Product».
После того, как вы создали коллекцию, вы можете создать HTML, вы хотите отобразить через файл шаблона, то есть единую функцию продукта, или многокомнатный ползунок.
Шаги, которые нужно сделать это
- .
- Создать новый пользовательский метод сбора продукта
- Создать новый блок макета
- Создать новый шаблон
Например, если я хочу создать коллекцию продукта для видимых продуктов с атрибутом «Figure_Product», я создаю новый файл под названием Feedured.php в Magento / App / Code / local / mage / catalog / блок / продукт
<?php
class Mage_Catalog_Block_Product_Featured extends mage_Catalog_Block_Product_Abstract
{
protected $_productsCount = null;
protected $_categoryId = null;
const DEFAULT_PRODUCTS_COUNT = 12;
/**
* Initialize block's cache
*/
protected function _construct()
{
parent::_construct();
$this->addColumnCountLayoutDepend('empty', 6)
->addColumnCountLayoutDepend('one_column', 5)
->addColumnCountLayoutDepend('two_columns_left', 4)
->addColumnCountLayoutDepend('two_columns_right', 4)
->addColumnCountLayoutDepend('three_columns', 3);
$this->addData(array(
'cache_lifetime' => 86400,
'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG),
));
}
/**
* Get Key pieces for caching block content
*
* @return array
*/
public function getCacheKeyInfo()
{
return array(
'CATALOG_PRODUCT_NEW',
Mage::app()->getStore()->getId(),
Mage::getDesign()->getPackageName(),
Mage::getDesign()->getTheme('template'),
Mage::getSingleton('customer/session')->getCustomerGroupId(),
'template' => $this->getTemplate(),
$this->getProductsCount(),
Mage::app()->getStore()->getCurrentCurrencyCode(),
empty($this->_categoryId) ? "ALL" : $this->_categoryId
);
}
/**
* Prepare collection with new products and applied page limits.
*
* return Mage_Catalog_Block_Product_New
*/
protected function _beforeToHtml()
{
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
$collection = $this->_addProductAttributesAndPrices($collection)
->addStoreFilter()
->addAttributeToSelect('featured_product')
->addFieldToFilter(array(
array('attribute'=>'ext_enable','eq'=>'1'),
))
->addAttributeToSort('name', 'desc')
->setPageSize($this->getProductsCount())
->setCurPage(1)
;
// Limit to a specific category
//if(!empty($this->_categoryId)) $collection->addCategoryFilter(Mage::getModel("catalog/category")->load($this->_categoryId));
$this->setProductCollection($collection);
return parent::_beforeToHtml();
}
/**
* Set a specific category to take the products from.
*
* @param $catid
* @return Mage_Catalog_Block_Product_New
*/
public function setCategory($catid)
{
$this->_categoryId = (int)$catid;
return $this;
}
/**
* Set how much product should be displayed at once.
*
* @param $count
* @return Mage_Catalog_Block_Product_New
*/
public function setProductsCount($count)
{
$this->_productsCount = $count;
return $this;
}
/**
* Get how much products should be displayed at once.
*
* @return int
*/
public function getProductsCount()
{
if (null === $this->_productsCount) {
$this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
}
return $this->_productsCount;
}
}
.
Тогда я добавляю следующую к моей макете, например, Если я хочу, чтобы блок появился на домашней странице, то я могу разместить его в разделе CMS_INDEX_INDEX
<block type="catalog/product_featured" name="catalog.product.featured" alias="featured_products">
<action method="setTemplate"><template>catalog/product/featured.phtml</template></action>
</block>
.
Тогда в моем шаблоне я создаю новый файл в каталоге / продукте под названием Featured.phtml, здесь я могу повторить сбору продукта и создать HTML, который я хочу отобразить, например, Вот простой маркированный список.
<?php
$_helper = $this->helper('catalog/output');
$_productCollection = $this->getProductCollection();
?>
<div class="featured-products">
<p>Featured Products - <?php echo count($_productCollection) ?></p>
<ol class="featured-products-list" id="featured-products-list">
<?php foreach ($_productCollection as $_product): ?>
<li><?php echo $_product->getName() ?></li>
<?php endforeach; ?>
</ol>
</div>
.
Когда я обновляю кэширует мой магазин и перейти на домашнюю страницу, отображается HTML избранного продукта.
Есть много модулей, которые помогут вам сделать это, но вы можете быстро добиться этого с этим примером или создавая свой собственный модуль.
Вот ссылка на аналогичное решение от Magento Wiki https://wiki.magento.com/display/m1wiki/how+to+create+a+featured & product
Другие советы
Следуйте по этой ссылке для получения продукта функции на главной странице http://inchoo.net/magento/featured-products-on-magento-frontpage-tutorial/
http://inchoo.net/magento/featured-products-on-Магенто-фронт /
Это учебное пособие, я объясняю, как пропустить товар в Magento домашнюю страницу.
в файле phtml:
<?php
$featuredProducts = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('featured_product', 1)
->addAttributeToFilter('status', 1);
.
?> В Local.xml
<cms_index_index>
<reference name="content">
<block type="core/template" name="home.featured.product" template="custom/featuredproduct.phtml"/>
</reference>
.
Пожалуйста, обратитесь к Tutroial для пошагового пояснения. http://www.pearlbells.co.uk/adding-Custom-Product-Attribute-In-Magento /