Magento> Бэкэнд> Новый пункт меню требует специальных действий -> Как это сделать? - PullRequest
0 голосов
/ 16 октября 2010

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

Я сделал это до сих пор:

app / code / community / Mycompany / Content / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Content>
            <version>0.1.0</version>
        </Mycompany_Content>
    </modules>
    <adminhtml>
        <menu>
            <newmenu translate="title">
                <title>Content</title>
                <sort_order>31</sort_order>
                <action>adminhtml/newmenu/</action>
                <children>
                    <newchildmenu translate="title">
                        <title>Manage Pages</title>
                        <action>adminhtml/newmenu/</action>
                    </newchildmenu>
                    <newchildmenu1 translate="title">
                        <title>Manage Attributes</title>
                        <action>adminhtml/catalog_product_attribute</action>
                    </newchildmenu1>
                    <newchildmenu2 translate="title">
                        <title>Manage Categories</title>
                        <action>adminhtml/catalog_category/</action>
                    </newchildmenu2>                                        
                </children>
             </newmenu>
        </menu>
    </adminhtml>
</config> 

app / etc / modules / Mycompany_Content.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Content>
            <active>true</active>
            <codePool>community</codePool>
        </Mycompany_Content>
    </modules>
</config> 

Еще раз, это то, что я хочу: - когда я нажимаю «Управление страницами», я хочу, чтобы меня отправляли на страницу «Управление продуктами», отфильтрованную по определенному набору атрибутов - наборам атрибутов, имена которых начинаются с «CMS_» и без столбца цены.

Как мне это сделать?

Заранее спасибо! HT


Хорошо, возможно, я могу попытаться разобрать проблему.

Как мне создать копию страницы «Управление продуктами» в бэкэнде, которая фильтруется по определенному набору атрибутов?

1 Ответ

2 голосов
/ 17 октября 2010

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

  • Начните с просмотра существующих продуктов управления, URL показывает, что путь начинается с "/ admin / catalog_product / index /". URL используют формат route / controller / action , поэтому мы можем сделать вывод, что ответственный класс будет Mage_Adminhtml_Catalog_ProductController, а метод - indexAction.
    («admin» направляет к «Adminhtml», «catalog_product» становится папкой «Catalog» и файлом «ProductController»)

  • Метод indexAction содержит вызовы loadLayout() и renderLayout(), что является верным признаком использования файла макета. Наша следующая подсказка находится в "app / design / adminhtml / default / layout / catalog.xml".

  • Первый раздел catalog.xml - это <adminhtml_catalog_product_index>, который, к счастью, соответствует пути, указанному ранее. В своем «контенте» он создает блок с типом «adminhtml / catalog_product», который разрешается в Mage_Adminhtml_Block_Catalog_Product.

  • При проверке у него есть метод _prepareLayout(), так как для всех блоков он вызывается перед выводом страницы. Этот метод добавляет кнопку «Добавить продукт» и блок из «adminhtml / catalog_product_grid».

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

  • Существенными методами здесь являются _prepareCollection() и _prepareColumns(). Также есть _prepareMassaction(), который определяет раскрывающийся список действий, который отображается в правом верхнем углу сетки.

Почти все страницы администратора работают так же, как и этот. Чтобы сделать свой собственный вам нужно;

  1. Зарегистрируйте контроллер для вашего модуля. Вот руководство по контроллерам перегрузки .
  2. Дайте вашему контроллеру действие для визуализации макета.
  3. Создайте файл макета в каталоге «app / design / adminhtml / default / layout» и зарегистрируйте его в своем «config.xml», чтобы он соблюдался. В нем должен быть раздел, соответствующий вашему маршруту, контроллеру и действию.
  4. Добавить блок для отображения виджета сетки. Пример создает это программно, но это также можно сделать в файле макета.
  5. Расширьте Mage_Adminhtml_Block_Widget_Grid, чтобы создать свой собственный блок.
  6. Добавьте метод _prepareColumns() и _prepareCollection(), в котором вы будете осуществлять доступ к базе данных и фильтровать результаты в соответствии с вашими требованиями.

Другое соответствующее руководство можно найти здесь . На самом деле, вы можете просмотреть дополнительную информацию в базе знаний Magento wiki и . Вышеприведенное не является полным набором инструкций, и после этого многое еще предстоит узнать.

...