Получение идентификатора другой категории для продуктов


Я пытаюсь добавить ссылку на страницы продуктов моего сайта и перенаправить пользователей в зависимости от категории, к которой принадлежит продукт. Например, у меня есть категория стульев, у которой идентификатор категории равен 39, и у меня есть другая категория столов, для которой идентификатор категории равен 52.

Теперь моя проблема с описанным выше сценарием заключается в том, что когда я перехожу на страницу продукта через страницы категорий, я получаю вышеупомянутое идентификатор категории указан правильно, и URL-адрес будет

http://example.com/chairs/wood-chair.html

Но когда я пытаюсь найти продукт непосредственно из окна поиска и перейти на страницу продукта оттуда, URL-адрес становится

http://example.com/wood-chair.html

Идентификатор категории становится 2, и это происходит с каждой категорией, и он показывает название категории как категорию по умолчанию, когда я перехожу на страницу продукта через окно поиска. Как я могу решить эту проблему? пожалуйста, дайте мне знать, если есть какие-либо параметры, которые не меняются на продукте страница, которая может позволить мне отображать контент в зависимости от категории, к которой относится продукт.

Author: Jjo, 2017-07-06

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
}
 0
Author: Niels, 2017-07-06 09:06:45

Поэтому я решил эту проблему, создав массив, в котором я заполнил все категории, частью которых является продукт. А затем я искал нужную мне категорию и выполнял все, что хотел, если условие было выполнено.

$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, и это решило мою проблему.

 0
Author: Akshay Vasu, 2017-07-13 08:13:25