бестселлеры magento не работают - ищут исправления или обходные пути - PullRequest
2 голосов
/ 13 февраля 2012

Я работаю на сайте magento (Magento ver. 1.5.1.0). Пожалуйста, обратите внимание, что я новичок в Magento.Я пытаюсь получить возможность сортировки по бестселлерам. Мне удалось это сделать, добавив локальные файлы для переопределения основных файлов следующим образом:

httpdocs / app / code / local / Mage / Catalog / Block / Product/List/Toolbar.php:

 public function getAvailableOrders()
{
    //return $this->_availableOrder;
    //Custom Order list Edit
    $this->_availableOrder = array(
        'qty_ordered' => $this->__('Best Sellers'),
        'entity_id' => $this->__('Latest arrivals'),
        'name' => $this->__('Name'),
        'price' => $this->__('Price')
    );
    //Custom Available Order -Edit finish
    return $this->_availableOrder;
}

И httpdocs / app / design / frontend / default / localsite / template / catalog / product / list / toolbar.phmtl:

<fieldset class="sort-by">
    <label><?php echo $this->__('Sort by') ?></label>
    <select onchange="setLocation(this.value)">
        <option value="<?php echo $this->getOrderUrl('entity_id', 'desc') ?>"<?php if($this->isOrderCurrent('entity_id') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            Newest Products
        </option>
        <option value="<?php echo $this->getOrderUrl('qty_ordered', 'desc') ?>"<?php if($this->isOrderCurrent('qty_ordered') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            Best Sellers
        </option>
        <option value="<?php echo $this->getOrderUrl('price', 'asc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>>
            Lowest Price
        </option>
        <option value="<?php echo $this->getOrderUrl('price', 'desc') ?>"<?php if($this->isOrderCurrent('price') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            Highest Price
        </option>
        <option value="<?php echo $this->getOrderUrl('name', 'asc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'asc'): ?> selected="selected"<?php endif; ?>>
            Name A-Z
        </option>
        <option value="<?php echo $this->getOrderUrl('name', 'desc') ?>"<?php if($this->isOrderCurrent('name') && $this->getCurrentDirection() == 'desc'): ?> selected="selected"<?php endif; ?>>
            Name Z-A
        </option>
    </select>
</fieldset>

Это работает в том смысле, что у меня теперь есть опция сортировки бестселлеров, которая сортируется так же, как и бестселлеры на панели инструментов.К сожалению, раздел бестселлеров на панели инструментов и, следовательно, мой список сортировки совершенно неверен.

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

Есть ли где-нибудь список доступных вариантов сортировки?

****************** UPDATE *******************

Я заметил, что все продукты, перечисленные в бестселлерах, являются более старыми.Последние 100 или около того продуктов, которые были добавлены, не включены в список бестселлеров.Эти же продукты также перечислены отдельно, если я сортирую по a по Z либо на панели инструментов, либо с помощью описанной выше опции сортировки, чтобы они перешли на новые продукты от A до Z, а затем на более старые продукты от A до Z. Есть идеи, что может быть причиной этого?

Любые советы, советы, помощь высоко ценится.

1 Ответ

1 голос
/ 24 февраля 2012

Поскольку продукты каталога не имеют атрибута qty_ordered, вам не повезет в этом случае.Независимо от того, какой порядок вы видите, это либо дополнительный столбец сортировки в действии, либо естественный порядок, поступающий из базы данных.

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

Кроме этого, единственное, о чем я могу думать, это многосложные переопределения классов, которые могут привести к поломке при обновлении.

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