Получение идентификатора другой категории для продуктов
Я пытаюсь добавить ссылку на страницы продуктов моего сайта и перенаправить пользователей в зависимости от категории, к которой принадлежит продукт. Например, у меня есть категория стульев, у которой идентификатор категории равен 39, и у меня есть другая категория столов, для которой идентификатор категории равен 52.
Теперь моя проблема с описанным выше сценарием заключается в том, что когда я перехожу на страницу продукта через страницы категорий, я получаю вышеупомянутое идентификатор категории указан правильно, и URL-адрес будет
http://example.com/chairs/wood-chair.html
Но когда я пытаюсь найти продукт непосредственно из окна поиска и перейти на страницу продукта оттуда, URL-адрес становится
http://example.com/wood-chair.html
Идентификатор категории становится 2, и это происходит с каждой категорией, и он показывает название категории как категорию по умолчанию, когда я перехожу на страницу продукта через окно поиска. Как я могу решить эту проблему? пожалуйста, дайте мне знать, если есть какие-либо параметры, которые не меняются на продукте страница, которая может позволить мне отображать контент в зависимости от категории, к которой относится продукт.
2 answers
Это связано с тем, что в Magento продукт может принадлежать к нескольким категориям. Когда вы переходите по категории на страницу сведений о продукте, Magento регистрирует страницу категории как "активную категорию", поэтому вы можете получить сведения о категории для этой конкретной категории на странице продукта.
Когда вы переходите непосредственно на страницу продукта, например, через страницу результатов поиска или прямой URL-адрес, Magento не знает, из какой категории вы пришли, потому что это не так еще не зарегистрирован.
Вы можете получить категории, к которым относится продукт, используя это:
$categories = $_product->getCategoryIds();
foreach($categories as $categoryId){
$_category = Mage::getModel('catalog/category')->load($categoryId);
$categoryData = $_category->getData();
// Do something
}
Поэтому я решил эту проблему, создав массив, в котором я заполнил все категории, частью которых является продукт. А затем я искал нужную мне категорию и выполнял все, что хотел, если условие было выполнено.
$productId = $this->getProduct()->getId(); // YOUR PRODUCT ID
$product = Mage::getModel('catalog/product')->load($productId);
$categoryIds = $product->getCategoryIds();
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect("*")
->addAttributeToFilter('entity_id', $categoryIds);
foreach ($categories as $category) {
$catstr[] = $category->getName();
}
После приведенного выше кода я искал категорию внутри массива $catstr
, и это решило мою проблему.