1

Тема: Как добавить поле товару?

Подскажите пожалуйста, как добавить дополнительное поле товару. А именно:
Заказчик хочет, добавить ещё изображение чтобы отображать картинку бренда для товаров(продают майки).
Как добавить такое поле?

Повысить оценку Понизить оценку

2 Отредактировано Александр (12.09.2014 18:54:54)

Re: Как добавить поле товару?

Нужно дописать модуль, который будет подписываться на хуки системы.
Вот как надо:

1. В папке  modules делаем папку с названием модуля. Например custom
2. В ней создаём папку config
3. В папке config создаём файл file.inc.php с содержимым:

<?php
namespace Custom\Config;

class File extends \RS\Orm\ConfigObject
{
    /**
    * Возвращает значения свойств по-умолчанию
    * 
    * @return array
    */
    public static function getDefaultValues()
    {
        return array(
            //Default - значения
            'name' => t('Собственный модуль'),
            'description' => t('Позволяет расширять функционал сайта'),
            'version' => '1.0.0.0',
            'author' => 'Alexander Zakusilo'
        );
    }      
}


Сохраняем.
4. В папке config создаём файл handlers.inc.php с содержимым:

<?php
namespace Custom\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this->bind('orm.init.catalog-product'); //Хук на инициализацию объекта товара.
    }
    
    
    /**
    * Функция подвешивается на инициализацию товара
    * 
    */
    public static function ormInitCatalogProduct(\Catalog\Model\Orm\Product $product)
    {
        $product->getPropertyIterator()->append(array(
            t('Основные'),
           'new_image' => new Type\Image(array(
                        'maxLength' => '255', //Длинна поля
                        'max_file_size' => 10000000, //Максимальный размер загружаемой картинки
                        'allow_file_types' => array('image/pjpeg', 'image/jpeg', 'image/png', 'image/gif'), //Поддерживаемые типы
                        'description' => 'Новая картинка', //Название поля
            )),
        ));
        return $product;
    }
}

Сохраняем.
6.Собственно далее идём в Веб-сайт -> Настройка модулей. Сбрасываем кэш. Должен появится наш модуль. После чего устанавливаем его.
7. Идём Управление -> Настройки системы. Справа ищем "Исправить структуру БД". Нажимаем ждём результат.
Всё. Теперь у товара появится поле с добавлением картинки. Тоже самое действие для всех ORM объектов.

P.S.
Ну и напоследок как же к нему обратится?
В обычном случае в шаблонах это выглядит так

{$product.new_picture}

т.е. $product.алиас поля добавленного
Но в нашем случае используется изображение, поэтому для отображения существует функция:

{$product->__new_picture->getUrl(700, 304, 'xy')} 

{$product->__new_picture->getUrl(ширина, высота, 'метод обрезки')}

Подробнее о системе изображений здесь