У меня есть один модуль администрирования, и я хочу, чтобы в этом модуле хранилась коллекция категорий, поэтому как мы можем фильтровать коллекцию с помощью storefilter? addstorefilter не работает для коллекции категорий.Как фильтровать коллекцию категорий с помощью storefilter?
ответ
Я добавить ниже код и его работы для меня
$storecategoryid = Mage::app()->getStore($storeid)->getRootCategoryId();
из этого кода я получаю магазин корня CategoryID.
$category = Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('is_active',array('eq' => 1))->load();
от этого я получаю целую коллекцию категории
foreach($category as $cat)
{
if($cat->getData('level')==2 && $cat->getData('parent_id')==$storecategoryid)
{
echo 'my code';
}
}
Таким образом я получаю магазин категория.
Использование setStore или setStoreId методы:
$collection = Mage:getResourceModel('catalog/category_collection');
// or $collection = Mage::getModel('catalog/category')->getCollection();
$collection->setStoreId($myStoreId)
->load();
UPDATE: Существует простой скрипт, чтобы проверить это:
<?php
require 'app/Mage.php';
Mage::app('admin');
$collection = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('name')
->setStoreId(2)
->load();
echo $collection->count(), "\n";
foreach ($collection as $item) {
echo $item->getName(), "\n";
}
Если у вас есть 3 магазина видит там будет 3 storeIds. Есть 0 - для магазина admin, 1 - для хранилища по умолчанию и 2 (или другое значение) для другого магазина. Я только что проверил это, и он работает.
$rootCategoryId = Mage::app()->getStore()->getRootCategoryId();
$categories = Mage::getModel('catalog/category')->getCollection();
$categories->addAttributeToFilter('path', array('like' => "1/{$rootCategoryId}/%"));
Реквизиты для связи @xpoback для правильного ответа. Я хотел повторить ответ, поскольку есть несколько ответов, которые несколько правильны, а некоторые - нет.
Короткий ответ, используйте:
$rootId = Mage::app()->getStore()->getRootCategoryId();
$collection = Mage::getModel('catalog/category')
->getResourceCollection()
->addAttributeToSelect('*')
->addFieldToFilter('path', array('like' => "1/{$rootId}/%"))
->addIsActiveFilter();
Для всех, кто хочет знать проблемы с другими ответы читать.
Во-первых, ответ @Muffadal является функциональным, но чрезвычайно медленным с точки зрения производительности. Вы хотите сохранить запрос данных до mySQL и не использовать цикл php для большой коллекции (при условии, что в вашем магазине имеется более нескольких категорий).
Комментарий под этим ответом на использование addPathsFilter('/' . $storecategoryid . '/')
тоже правильно, но будет медленнее, чем при использовании LIKE оператора в этом случае (см article)
@Serjio «s метод не будет работать с точки зрения различения между различными категориями , То, что он будет делать, - это перенос специфических переводов в магазине. Пример Магазин 1 назвал категорию Кольца, Магазин 2 назвал ту же категорию Мои круги. Если сделать вызов из магазина 2, используя свой код, он будет тянуть все категории независимо от корня, но потянет накопитель 2 в соглашении об именах - Моих Кольца
В Magento 1,9
$storeId=2;
$rootCategoryId = Mage::app()->getStore($storeId)->getRootCategoryId();
$categories = Mage::getModel('catalog/category')
->getCollection()
->setStoreId($storeId)
->addFieldToFilter('is_active', 1)
->addAttributeToFilter('path', array('like' => "1/{$rootCategoryId}/%"))
->addAttributeToSelect('*');
foreach($categories as $categorie)
{
$catid=$cat->getId();
$catname=$categorie->getName();
$catp=catp$categorie->getParent_id();
}
- 1. фильтровать коллекцию продуктов с помощью массива Magento
- 2. Как фильтровать коллекцию продуктов magento с помощью выражения нескольких атрибутов
- 3. Как фильтровать коллекцию с помощью атрибута типа YesNo?
- 4. Как фильтровать дочернюю коллекцию с помощью linq dynamic
- 5. Как фильтровать коллекцию с помощью LINQ to DataSet
- 6. Как фильтровать внутреннюю коллекцию с помощью LINQ C#
- 7. Как фильтровать коллекцию свойств класса?
- 8. Magento - Как фильтровать коллекцию продуктов с использованием фильтров категории 2?
- 9. сортировать коллекцию категорий по названию
- 10. Magento - Как фильтровать коллекцию продуктов с использованием нескольких категорий, когда плоский продукт/категория находится на
- 11. Как фильтровать дочернюю коллекцию в запросе JPQL?
- 12. Метеор: как фильтровать местную коллекцию по дате
- 13. Фильтровать коллекцию Laravel по дате
- 14. Как фильтровать коллекцию в JPA/JPQL?
- 15. Как фильтровать коллекцию множеств по пересечению?
- 16. Как фильтровать коллекцию в документе elasticsearch
- 17. breeze: как фильтровать коллекцию в состоянии подсчета
- 18. (NHibernate) как фильтровать коллекцию на выборке
- 19. Subsonic Как я могу фильтровать загруженную коллекцию?
- 20. Backbonejs - Как фильтровать коллекцию по нескольким параметрам?
- 21. Как фильтровать коллекцию коллекции в linq?
- 22. не может фильтровать красноречивый коллекцию с переменной
- 23. Не удалось фильтровать коллекцию MongoDB
- 24. Wordpress: Фильтровать сообщения по подбору тегов/категорий
- 25. Как фильтровать коллекцию в шаблоне jinja2?
- 26. Как фильтровать и заказывать коллекцию в C#?
- 27. Как фильтровать базовую коллекцию для отображения тегов
- 28. Как фильтровать/искать вложенную базовую коллекцию?
- 29. Как фильтровать коллекцию при привязке к ItemsSource?
- 30. Пользовательская коллекция/перечисление - как фильтровать возвращенную коллекцию?
мое решение, пример кода .... [http: // stackoverflow.ком/а/19284088/1266559] [1] [1]: http://stackoverflow.com/a/19284088/1266559 – Magefast