<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум ReadyScript &mdash; Как добавить поле товару?]]></title>
	<link rel="self" href="https://forum.readyscript.ru/feed/atom/topic/21/" />
	<updated>2014-09-12T14:41:01Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.readyscript.ru/topic/21/kak-dobavit-pole-tovaru/</id>
		<entry>
			<title type="html"><![CDATA[Re: Как добавить поле товару?]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/129/#p129" />
			<content type="html"><![CDATA[<p>Нужно дописать модуль, который будет подписываться на <a href="http://readyscript.ru/dev-manual/dev_hooks.html">хуки системы</a>.<br />Вот как надо:</p><p>1. В папке&nbsp; modules делаем папку с названием модуля. Например custom<br />2. В ней создаём папку config<br />3. В папке config создаём файл file.inc.php с содержимым:<br /></p><div class="codebox"><pre><code>&lt;?php
namespace Custom\Config;

class File extends \RS\Orm\ConfigObject
{
    /**
    * Возвращает значения свойств по-умолчанию
    * 
    * @return array
    */
    public static function getDefaultValues()
    {
        return array(
            //Default - значения
            &#039;name&#039; =&gt; t(&#039;Собственный модуль&#039;),
            &#039;description&#039; =&gt; t(&#039;Позволяет расширять функционал сайта&#039;),
            &#039;version&#039; =&gt; &#039;1.0.0.0&#039;,
            &#039;author&#039; =&gt; &#039;Alexander Zakusilo&#039;
        );
    }      
}</code></pre></div><p> <br />Сохраняем.<br />4. В папке config создаём файл handlers.inc.php с содержимым:<br /></p><div class="codebox"><pre><code>&lt;?php
namespace Custom\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this-&gt;bind(&#039;orm.init.catalog-product&#039;); //Хук на инициализацию объекта товара.
    }
    
    
    /**
    * Функция подвешивается на инициализацию товара
    * 
    */
    public static function ormInitCatalogProduct(\Catalog\Model\Orm\Product $product)
    {
        $product-&gt;getPropertyIterator()-&gt;append(array(
            t(&#039;Основные&#039;),
           &#039;new_image&#039; =&gt; new Type\Image(array(
                        &#039;maxLength&#039; =&gt; &#039;255&#039;, //Длинна поля
                        &#039;max_file_size&#039; =&gt; 10000000, //Максимальный размер загружаемой картинки
                        &#039;allow_file_types&#039; =&gt; array(&#039;image/pjpeg&#039;, &#039;image/jpeg&#039;, &#039;image/png&#039;, &#039;image/gif&#039;), //Поддерживаемые типы
                        &#039;description&#039; =&gt; &#039;Новая картинка&#039;, //Название поля
            )),
        ));
        return $product;
    }
}</code></pre></div><p>Сохраняем.<br />6.Собственно далее идём в Веб-сайт -&gt; Настройка модулей. Сбрасываем кэш. Должен появится наш модуль. После чего устанавливаем его.<br />7. Идём Управление -&gt; Настройки системы. Справа ищем &quot;Исправить структуру БД&quot;. Нажимаем ждём результат.<br />Всё. Теперь у товара появится поле с добавлением картинки. Тоже самое действие для всех ORM объектов. </p><p>P.S. <br />Ну и напоследок как же к нему обратится?<br />В обычном случае в шаблонах это выглядит так<br /></p><div class="codebox"><pre><code>{$product.new_picture}</code></pre></div><p>т.е. $product.алиас поля добавленного<br />Но в нашем случае используется изображение, поэтому для отображения существует функция:<br /></p><div class="codebox"><pre><code>{$product-&gt;__new_picture-&gt;getUrl(700, 304, &#039;xy&#039;)} </code></pre></div><p>{$product-&gt;__new_picture-&gt;getUrl(ширина, высота, &#039;метод обрезки&#039;)} </p><p>Подробнее о <a href="http://readyscript.ru/dev-manual/dev_image_system.html">системе изображений здесь </a></p>]]></content>
			<author>
				<name><![CDATA[Александр]]></name>
				<uri>https://forum.readyscript.ru/user/20/</uri>
			</author>
			<updated>2014-09-12T14:41:01Z</updated>
			<id>https://forum.readyscript.ru/post/129/#p129</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Как добавить поле товару?]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/59/#p59" />
			<content type="html"><![CDATA[<p>Подскажите пожалуйста, как добавить дополнительное поле товару. А именно:<br />Заказчик хочет, добавить ещё изображение чтобы отображать картинку бренда для товаров(продают майки).<br />Как добавить такое поле?</p>]]></content>
			<author>
				<name><![CDATA[Федя]]></name>
				<uri>https://forum.readyscript.ru/user/11/</uri>
			</author>
			<updated>2014-08-29T14:01:04Z</updated>
			<id>https://forum.readyscript.ru/post/59/#p59</id>
		</entry>
</feed>
