Тема: Как добавить поле товару?
Подскажите пожалуйста, как добавить дополнительное поле товару. А именно:
Заказчик хочет, добавить ещё изображение чтобы отображать картинку бренда для товаров(продают майки).
Как добавить такое поле?
Форум ReadyScript Вопросы по разработке модулей и API системы Как добавить поле товару?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите пожалуйста, как добавить дополнительное поле товару. А именно:
Заказчик хочет, добавить ещё изображение чтобы отображать картинку бренда для товаров(продают майки).
Как добавить такое поле?
Нужно дописать модуль, который будет подписываться на хуки системы.
Вот как надо:
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(ширина, высота, 'метод обрезки')}
Подробнее о системе изображений здесь
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум ReadyScript Вопросы по разработке модулей и API системы Как добавить поле товару?