Magento: Добавить (и получить) настраиваемое поле базы данных для страниц CMS - PullRequest
0 голосов
/ 05 мая 2010

Я хочу назначить пользовательские параметры страницам CMS в Magento (например, «о», «обслуживание клиентов» и т. Д.), Чтобы их можно было сгруппировать.

Конечная цель - использовать параметры для каждой страницы, чтобы показать (или скрыть) их в навигационном меню. Написать быстрый метод в блоке page / html для извлечения страниц (только активных) для меню было легко, но я не могу понять, как их сгруппировать так, чтобы «отзывы», «история» и «контакт» были связаны с «о», а «политика возврата», «доставка» и «контакт» связаны с «обслуживание клиентов».

Буду признателен за любую помощь, чтобы указать мне правильное направление.

Спасибо!

Ответы [ 4 ]

0 голосов
/ 12 июля 2011

Вы искали использование setData / getData для хранения пользовательских значений? Это хорошо работает для пользовательских блоков - я устанавливаю значение в контроллере и читаю его при рендеринге блоков.

0 голосов
/ 06 мая 2010

Я решил пойти в другом направлении с этим. Вот что я сделал.

В интерфейсе администратора:

  1. Созданы статические блоки для каждой страницы (т. Е. «Страница: О программе»)
  2. Создана категория продукта под названием CMS (URL Key: content), для параметра «Активно» установлено значение «нет»
  3. Созданы дочерние категории для каждой категории контента (т. Е. 'About'). Установите «Активно» на «да» и «Режим отображения» на «Только статический блок» и выберите соответствующий статический блок.
  4. Созданы дочерние категории для каждой категории контента, как указано выше.

В коде:

  1. Создано два новых метода в (локальной копии) Catalog / Block / Navigation.php для получения текущей родительской категории и ее потомков:

    public function getNavCategory($category)
    {
    
        if($category->getLevel() == 3){
    
        return $category;
    
    } else {
    
        $parentCategory = Mage::getModel('catalog/category')->load($category->getParentId());
    
        return $parentCategory;
    }
    }
    
    public function getNavChildCategories($category)
    {
    
        $layer = Mage::getSingleton('catalog/layer');
    
        /* @var $category Mage_Catalog_Model_Category */
        $categories = $category->getChildrenCategories();
        $productCollection = Mage::getResourceModel('catalog/product_collection');
        $layer->prepareProductCollection($productCollection);
        $productCollection->addCountToCategories($categories);
        return $categories;
    }
    
  2. Создан измененный вариант приложения / design / frontend / MYINTERFACE / MYTHEME / template / catalog / navigation / left.phtml для перебора категорий и дочерних категорий. Рабочий пример по адресу: http://67.228.100.26/content/about

0 голосов
/ 22 мая 2010

Возможно, просто используйте поле ключа URL в админке в качестве знаменателя вашей категории? Например:

Ключ страницы CMS 1 страницы: о / отзывы URL-адрес страницы 2 CMS: about / history CMS страница 3 URL-ключ: о / контакт Ключ CMS на странице 4: клиент-сервис / политика возврата ...

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

0 голосов
/ 05 мая 2010

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

Я предлагаю перегрузить Mage_Cms_Model_Page, создать связанную таблицу с вашими данными и в конструкторе нового класса назначить новое свойство для объекта your_page.

...