<?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="http://forum.readyscript.ru/feed/atom/topic/1243/" />
	<updated>2017-05-12T13:39:32Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.readyscript.ru/topic/1243/vkladka-so-svoei-formoi/</id>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7112/#p7112" />
			<content type="html"><![CDATA[<p>спасибо, надо будет запомнить )))</p>]]></content>
			<author>
				<name><![CDATA[Евгений]]></name>
				<uri>http://forum.readyscript.ru/user/657/</uri>
			</author>
			<updated>2017-05-12T13:39:32Z</updated>
			<id>http://forum.readyscript.ru/post/7112/#p7112</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7108/#p7108" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>{$price|format_price}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Закусило Александр]]></name>
				<uri>http://forum.readyscript.ru/user/20/</uri>
			</author>
			<updated>2017-05-12T12:22:54Z</updated>
			<id>http://forum.readyscript.ru/post/7108/#p7108</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7107/#p7107" />
			<content type="html"><![CDATA[<p>Еще побеспокою, как можно отформатировать число под цену, может есть какие-то хелперы. Типа было 20000, стало 20 000...</p>]]></content>
			<author>
				<name><![CDATA[Евгений]]></name>
				<uri>http://forum.readyscript.ru/user/657/</uri>
			</author>
			<updated>2017-05-12T11:33:33Z</updated>
			<id>http://forum.readyscript.ru/post/7107/#p7107</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7103/#p7103" />
			<content type="html"><![CDATA[<p><strong>Александр</strong>, спасибо в освоении системы, все получилось...</p>]]></content>
			<author>
				<name><![CDATA[Евгений]]></name>
				<uri>http://forum.readyscript.ru/user/657/</uri>
			</author>
			<updated>2017-05-12T02:50:01Z</updated>
			<id>http://forum.readyscript.ru/post/7103/#p7103</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7087/#p7087" />
			<content type="html"><![CDATA[<p>Если Вам нужно диалоговое окно, то Вам проще всего реализовать всё на основе рекомендованных товаров как это сделано при редактировании товара. А именно как у объекта <strong>\Catalog\Model\Orm\Product</strong> (файл <strong>/modules/catalog/model/orm/product.inc.php</strong>).<br /></p><div class="codebox"><pre><code>&#039;recommended&#039; =&gt; new Type\Varchar(array(
    &#039;maxLength&#039; =&gt; 4000,
    &#039;description&#039; =&gt; t(&#039;Рекомендуемые товары&#039;),
    &#039;visible&#039; =&gt; false,
        )),
&#039;recommended_arr&#039; =&gt; new Type\ArrayList(array(
    &#039;visible&#039; =&gt; false
        )),
t(&#039;Рекомендуемые товары&#039;),
    &#039;_recomended_&#039; =&gt; new Type\UserTemplate(
                        &#039;%catalog%/form/product/recomended.tpl&#039;,
                        &#039;%catalog%/form/product/merecomended.tpl&#039;,array(
        &#039;meVisible&#039; =&gt; true  //Видимость при мультиредактировании
    )),</code></pre></div><p>&nbsp; &nbsp; <br />Вот здесь 3 поля. Два скрытых. И одно, которое отвечает за отображение всей вкладки. Это происходит за счёт того, что используется тип поля UserTemplate. Если вы его используете, то оно распрастраняется полностью на ближайшую вкладку. В данном случае рекомендованные товары.<br />Первое поле служит для хранения массива товаров или каталогов выбранных в сериализованном виде, а вот второе содержит уже рассериализованный массив, чтобы было удобно с ним работать. Когда товар загружается из базы при его инициализации поле первое рассериализовывается и передаётся <br />значение во второе.</p><div class="codebox"><pre><code>/**
* Вызывается после загрузки объекта
* @return void
*/
function afterObjectLoad()
{
    if (!empty($this[&#039;recommended&#039;])) {
        $this[&#039;recommended_arr&#039;] = @unserialize($this[&#039;recommended&#039;]);
    }
}</code></pre></div><p>Вам нужно будет использовать хук orm.afterload.catalog-product.<br />При сохранении товара, поле recommended_arr сохраняет сериализованный массив в recommended.</p><div class="codebox"><pre><code> /**
 * Вызывается перед сохранением объекта
 * 
 * @param string $flag - строковое представление текущей операции (insert или update)
 * @return void
 */
function beforeWrite($flag)
{
    if ($this-&gt;isModified(&#039;recommended_arr&#039;)){ //Если изменялись рекомендуемые
        $this[&#039;recommended&#039;] = serialize($this[&#039;recommended_arr&#039;]);
    }
}</code></pre></div><p>На вкладке отрабатывает шаблон &#039;<strong>%catalog%/form/product/recomended.tpl</strong>&#039;. %catalog% - путь к папке шаблоном модуля catalog (<strong>/modules/catalog/view/</strong>). Там вызывается функция getProductDialog, которая принадлежит объекту товара. Она же и выводит нужную Вам кнопку. <br />Однако эта функция использует поля для рекомендуемых товаров, соответсвенно Вам нужно сделать будет свою функцию просто скопировав и заменив нужное и расширить объект товара, чтобы он видел уже Вашу другую функцию для отображания. Это можно сделать через </p><div class="codebox"><pre><code>behavior</code></pre></div><p>.<br /><a href="https://www.youtube.com/watch?v=7jsv06VNy5Y&amp;list=PLh6R2ixK62TjPL31OFFGG2fL4X2UTC6Aw&amp;index=4">https://www.youtube.com/watch?v=7jsv06V … mp;index=4</a></p>]]></content>
			<author>
				<name><![CDATA[Закусило Александр]]></name>
				<uri>http://forum.readyscript.ru/user/20/</uri>
			</author>
			<updated>2017-05-11T08:06:30Z</updated>
			<id>http://forum.readyscript.ru/post/7087/#p7087</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7079/#p7079" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Евгений пишет:</cite><blockquote><p>никто не подскажет как вывести кнопку????</p></blockquote></div><p>В документации все есть.</p>]]></content>
			<author>
				<name><![CDATA[ustasby]]></name>
				<uri>http://forum.readyscript.ru/user/94/</uri>
			</author>
			<updated>2017-05-10T18:47:35Z</updated>
			<id>http://forum.readyscript.ru/post/7079/#p7079</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7074/#p7074" />
			<content type="html"><![CDATA[<p>никто не подскажет как вывести кнопку????</p>]]></content>
			<author>
				<name><![CDATA[Евгений]]></name>
				<uri>http://forum.readyscript.ru/user/657/</uri>
			</author>
			<updated>2017-05-10T10:45:17Z</updated>
			<id>http://forum.readyscript.ru/post/7074/#p7074</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7072/#p7072" />
			<content type="html"><![CDATA[<p>в принципе даже не надо форму выводить, можно просто вывести кнопку диалога выбора товара, типа как сделано для сопутствующих товаров в карточке товара</p>]]></content>
			<author>
				<name><![CDATA[Евгений]]></name>
				<uri>http://forum.readyscript.ru/user/657/</uri>
			</author>
			<updated>2017-05-10T06:08:43Z</updated>
			<id>http://forum.readyscript.ru/post/7072/#p7072</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Вкладка со своей формой]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/7070/#p7070" />
			<content type="html"><![CDATA[<p>Доброго утра!</p><p>Такой вопросик, мне нужно в окне редактирования, к примеру, бренда сделать новую вкладку и на ней разместить произвольную форму, которую можно подгрузить из view. Вкладка сама получается, а вот как описать размещение сверстанной формы? Вот код:<br /></p><div class="codebox"><pre><code>public static function ormInitCatalogBrand(\Catalog\Model\Orm\Brand $brand)
    {
        $brand-&gt;getPropertyIterator()-&gt;append(array( //Добавляем свойства к объекту
            &#039;Моя закладка&#039;, //Закладка, появится в форме редактирования бренда
             
            &#039;test_property&#039; =&gt; new \RS\Orm\Type\Template(array( //Тип поля. Вот здесь надо Template или UserTemplate, как я понял
             // а как дальше прописывать?
                
            ))
        ));*/
    }</code></pre></div><p>помогите советом....</p>]]></content>
			<author>
				<name><![CDATA[Евгений]]></name>
				<uri>http://forum.readyscript.ru/user/657/</uri>
			</author>
			<updated>2017-05-10T05:22:29Z</updated>
			<id>http://forum.readyscript.ru/post/7070/#p7070</id>
		</entry>
</feed>
