Выпадающая страница на главной странице Magento с отображением всех продуктов - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть сайт Magento, продающий подписки на журналы, около 1000 разных титулов.Я хотел бы создать очень простое выпадающее меню, заполненное всеми продуктами на главной странице.Очень похоже на это , только я не могу заменить слова «производители» словом «название» (название продукта).

Пример можно найти здесь с другим веб-сайтом, где также продаются подписки на журналы (справа вверху, слева от поля поиска).

Может кто-нибудь представить нам некоторый код для создания такого выпадающего списка?

Ответы [ 2 ]

0 голосов
/ 08 января 2012

Если посмотреть на другой веб-сайт, на который вы ссылаетесь, раскрывающийся HTML-код выглядит следующим образом с небольшим фрагментом JavaScript внутри атрибута onselect для перехода к URL-адресу выбранного продукта:

<select ... onchange="window.location.href = this.value">
  <option>Select a product</option>
  <option value="/path-to-foo">Foo</option>
  <option value="/path-to-bar">Bar</option>
</select>

JavaScript перемещается, устанавливая window.location.href для нового URL, и получает этот URL из this.value, который является значением выбранного <option>.

Чтобы отобразить выпадающий список в Magento, сначала нужно получить все продукты, используя код Майка Байуотса (отфильтрованный по видимым и т. Д.). Затем вы просматриваете все продукты, и вы echo тег <option> для каждого продукта с правильным значением:

echo "<option value=\"/" . $product->getUrlPath() . "\">";
echo $product->getName();
echo "</option>";

Если $product является результатом вызова Mage::getModel(...), то вызов $product->getUrlPath() должен вернуть путь к продукту , как указано здесь .

0 голосов
/ 16 декабря 2011

Попробуйте поместить это в файл шаблона, где вы хотите раскрывающийся список:

<select>
    <?php
        $products = Mage::getResourceModel('catalog/product_collection')
            ->setStore(Mage::app()->getStore()->getId())
            ->addAttributeToFilter('status', array('eq' => '1'))
            ->addAttributeToFilter('type_id', array('eq' => 'simple'));
        foreach ($products as $prod_model) {
            $product = Mage::getModel('catalog/product')->load($prod_model->getId());
            echo "<option value=\"".$product->getId()."\">".$product->getName()."</option>";
        }
    ?>
</select>

Он будет получать только активные простые продукты, но вы можете добавить дополнительные фильтры в зависимости от значений атрибута продукта с помощью -> addAttributeToFilter() функция.

РЕДАКТИРОВАТЬ: Кроме того, это займет много времени, если у вас есть много продуктов, и особенно долго, если у вас не включено кэширование.Это не очень рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...