#php #magento #attributes #layered #layered-navigation
#php #magento #атрибуты #многоуровневый #многоуровневая навигация
Вопрос:
Я создал атрибуты, которые успешно использую в многоуровневой навигации Magento.
Эти атрибуты выводятся в разделе «Дополнительные данные» на странице продукта, однако атрибуты, используемые в многоуровневой навигации, не отображаются в виде ссылок. Они в виде обычного текста.
Простой пример: я продаю компакт-диски, у меня есть атрибут исполнителя. Я хочу иметь возможность щелкнуть по имени исполнителя в разделе дополнительных данных страницы продукта, чтобы получить доступ к странице результатов многоуровневой навигации, на которой отображаются компакт-диски только там, где указан этот исполнитель. Логика с точки зрения пользователя.
Другими словами, я хочу получить ссылку на многоуровневую навигацию из атрибута на странице продукта.
Вот что я нахожу в catalog/product/view/attributes.html:
<?php foreach ($_additional as $_data): ?>
<?php echo $this->htmlEscape($this->__($_data['label'])) ?>
<?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?>
<?php endforeach; ?>
И вот цикл многоуровневой навигации:
<?php foreach ($this->getItems() as $_item): ?>
<?php if ($_item->getCount() > 0): ?>
<a href="<?php echo $this->urlEscape($_item->getUrl()) ?>"><?php echo $_item->getLabel() ?></a>
<?php else: echo $_item->getLabel() ?>
<?php endif; ?>
<?php endforeach ?>
Большое спасибо за вашу помощь.
Ответ №1:
Если вы введете имя исполнителя в виде текста, вы можете легко интегрировать его с расширенным поиском, подобным этому в catalog/product/view/attributes.html:
<?php if ($_data['label'] == "Artist"): ?>
<a href="/catalogsearch/advanced/result/?artist=<?php echo $_data['value']; ?>">
<?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></a>
<?php else: ?>
<?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?>
<?php endif; ?>
Дайте мне знать, если это то, что вы имели в виду 🙂
РЕДАКТИРОВАТЬ: Также не факт, что этот метод работает, только если вы включаете свой атрибут для использования в расширенном поиске.
Комментарии:
1. Это приведет к фильтрации только по одному атрибуту (исполнитель), это нарушит текущие фильтры многоуровневой навигации.
2. Этот код предназначен только для страницы продукта, другие фильтры навигации даже не будут использоваться?
3. Привет, Адам, спасибо за ответ и извините за отсутствие обратной связи с моей стороны. Ваш код в основном работает. Хотя для нескольких выбранных атрибутов он вернет массив, в основном с одной ссылкой, которая включает в себя все значения в нем. Я бы хотел, чтобы каждое значение передавалось отдельно по его собственной ссылке. У вас есть какие-нибудь идеи?