У меня есть магазин для мужчин и женщин под тем же сайтом в Magento.Сайт «Мужчины» работает в категории «Мужчины», а сайт «Женщины» - в категории «Женщины».У меня есть настраиваемая настройка настраиваемого атрибута под названием «конструктор».В настоящее время многоуровневая навигация на странице категории показывает атрибут Designer для продуктов в этом магазине вместе с любыми дизайнерами, которые связаны с продуктом.Я хотел бы показать этот список на другой странице.
Я хотел бы взять список дизайнеров, который отображается в многоуровневой навигации, и поместить его в файл шаблона.Идея состоит в том, чтобы пользователь зашел на мой сайт и захотел увидеть список всех дизайнеров, которые у меня есть в наличии, в зависимости от того, какой магазин они просматривают.Для магазина «Мужчины» они увидят список всех дизайнеров мужчин на складе и то же самое для магазина «Женщины».На этой странице дизайнера они могут выбрать там любимого дизайнера и купить все продукты для этого дизайнера.
У меня проблемы с выполнением.Я могу получить список всех дизайнеров, но не могу отфильтровать его по категории магазина.Вот соответствующий код, который я использую в настоящее время - есть ли лучший способ сделать это?Любая помощь приветствуется.
//load the current category
$store_category = Mage::app()->getStore()->getRootCategoryId();
//get all product designers
$product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'designer') // This can be changed to any attribute code
->load(false);
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$designers = $attribute->getSource()->getAllOptions(false);
//get all products
$collection = Mage::getModel('catalog/product')->getCollection();
$new_collection = Mage::getModel('catalog/category')->load($store_category)->getProductCollection();
//filter to only get visible products
$collection->addAttributeToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
//filter by category - not working correctly
$collection->addCategoryFilter(Mage::getModel('catalog/category')->load($store_category));
//get products in stock
$collection->joinField('stock_status','cataloginventory/stock_status','stock_status',
'product_id=entity_id', array(
'stock_status' => Mage_CatalogInventory_Model_Stock_Status::STATUS_IN_STOCK
));
//get all products with the designer attribute
$collection->addAttributeToSelect('designer');
//count the number of designers
$collection->addExpressionAttributeToSelect('designers_count', 'COUNT({{attribute}})', 'designer');
//group by the designer - limits the collection by products that have a designer setup
$collection->groupByAttribute('designer');
echo 'collection count->'.$collection->count();
//loop through collection and add the number of designers and designer id to an array
foreach($collection as $item)
{
//get the designer id and the designers count
$designer_id = $item->getDesigner();
$designers_count = $item->getData('designers_count');
//skip if the designers count is 0
if($designers_count == 0)
{
continue;
}// if
//skip if the designer_id is empty
if(empty($designer_id))
{
continue;
}// if
//add information to array
$designers_in_use[$designer_id] = $designers_count;
}// foreach