BashOrgRu Posted July 2, 2013 Share Posted July 2, 2013 Здравствуйте. Помогите решить проблему. Добавил в админке новые поля для товаров, всё хорошо и стабильно работает, только у меня мульти-магазин и при редактировании товара, рядом с моим полем нет галочки для редактирования его сразу во всех магазинах. Подскажите, пожалуйста, где искать? Link to comment Share on other sites More sharing options...
absent Posted July 2, 2013 Share Posted July 2, 2013 смотреть в сторону класса с которым работаете. опишите подробнее что сделали и как . я помогу 1 Link to comment Share on other sites More sharing options...
BashOrgRu Posted July 2, 2013 Author Share Posted July 2, 2013 В classes/product.php добавил: /** @var string Category_tovar */ public $category_tovar; 'category_tovar' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCleanHtml'), Соответственно в админку в шаблон контроллеров products добавил данное поле Link to comment Share on other sites More sharing options...
absent Posted July 2, 2013 Share Posted July 2, 2013 делай через product_shop в классе в группе shop тоесть multishop true Link to comment Share on other sites More sharing options...
BashOrgRu Posted July 2, 2013 Author Share Posted July 2, 2013 Абсент, можно малость подробней? Имеете ввиду делать так: 'category_tovar' => array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isCleanHtml'), Я пробовал так делать - ситуация не менялась... Такого параметра как multishop в принципе в классе не встречается особо... Версия прести 1.5.2, ежели чего. Link to comment Share on other sites More sharing options...
BashOrgRu Posted July 2, 2013 Author Share Posted July 2, 2013 Добавил в шаблон в админке код {include file="controllers/products/multishop/checkbox.tpl" field="expo_tovar" type="default"} Который, собственно, где-то потерял. Поле с галочкой появилось рядом с моим полем. Только оно сразу активное (для изменения), и при отметке галочкой - обновление поля не происходит в базе. Сам код выглядит соответственно так: <select name="expo_tovar" id="expo_tovar"> <option value="1" {if $product->expo_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '1'}selected="selected"{/if}>{l s='Нет'}</option> <option value="2" {if $product->expo_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '2'}selected="selected"{/if}>{l s='Ожидается'}</option> <option value="3" {if $product->expo_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '3'}selected="selected"{/if}>{l s='Да'}</option> </select> Link to comment Share on other sites More sharing options...
absent Posted July 2, 2013 Share Posted July 2, 2013 Абсент, можно малость подробней? Имеете ввиду делать так: 'category_tovar' => array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isCleanHtml'), Я пробовал так делать - ситуация не менялась... Такого параметра как multishop в принципе в классе не встречается особо... Версия прести 1.5.2, ежели чего. да, category_tovar должно быть в xxxxx_shop смотря какой класс сделай по аналогии с другим параметром каким нибудь Link to comment Share on other sites More sharing options...
BashOrgRu Posted July 2, 2013 Author Share Posted July 2, 2013 Путём всяческих танцев с бубнами - победил таки данную ситуацию Абсент - спасибо за вектор в нужном направлении! Link to comment Share on other sites More sharing options...
absent Posted July 2, 2013 Share Posted July 2, 2013 опиши решение, другим пригодится)) Путём всяческих танцев с бубнами - победил таки данную ситуацию Абсент - спасибо за вектор в нужном направлении! Link to comment Share on other sites More sharing options...
BashOrgRu Posted July 2, 2013 Author Share Posted July 2, 2013 Ну я реализовывал немного коряво, через мультиязычность, хотя в принципе её не использовал, а использовал цифровые идентификаторы По порядку: Добавил поле в базу в ps_product_lang поле category_tovar, например. Далее в файл /classes/Product.php после /** @var string Name */ public $name; добавил /** @var string Category_tovar */ public $category_tovar; Необязательно именно после этого поля, это я для удобства для себя. Далее, соответственно, в описание самих полей добавил после 'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128), такой код: 'category_tovar' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCleanHtml'), После этого пошёл в /admin(или как у вас называется директория админки)/themes/default/template/controllers/products/informations.tpl, т.к. я добавлял поле в описание товара. Там ищу код: <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="name" type="default" multilang="true"} <label>{l s='Name:'}</label> </td> <td style="padding-bottom:5px;" class="translatable"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if} float: left;"> <input class="{$class_input_ajax}{if !$product->id}copy2friendlyUrl{/if} updateCurrentText" size="43" type="text" {if !$product->id}disabled="disabled"{/if} id="name_{$language.id_lang}" name="name_{$language.id_lang}" value="{$product->name[$language.id_lang]|htmlentitiesUTF8|default:''}"/><sup> *</sup> <span class="hint" name="help_box">{l s='Invalid characters:'} <>;=#{}<span class="hint-pointer"> </span> </span> </div> {/foreach} </td> </tr> После него пишу свой, для мульти-магазина, что бы обновлялось так же по галочке для всех магазинов. <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="category_tovar" type="default" multilang="true"} <label>{l s='Идентификатор:'}</label> </td> <td style="padding-bottom:5px;"> <select name="category_tovar" id="category_tovar"> <option value="1" {if $product->category_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '1'}selected="selected"{/if}>{l s='Кухни'}</option> <option value="2" {if $product->category_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '2'}selected="selected"{/if}>{l s='Кухни (Фасады)'}</option> <option value="3" {if $product->category_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '3'}selected="selected"{/if}>{l s='Кухни (Цвета Фасадов)'}</option> <option value="4" {if $product->category_tovar[$language.id_lang]|htmlentitiesUTF8|default:'' == '4'}selected="selected"{/if}>{l s='Кухни (Фасады + Цвета)'}</option> </select> </td> </tr> Вот и всё, теперь когда ставим галочку - обновляется всё, что нужно для всех магазинов. Единственное - почему-то когда галочка не стоит, когда только заходишь в редактирование товара, можно редактировать поле, хотя остальные неактивны, пока галочку не поставишь. Но не страшно, если поменять и сохранить, а галочка стоять не будет - обновления не применятся. Ну и соответственно в самом шаблоне в файл Product.tpl я добавил то, что хотел. {if $product->category_tovar|escape:'htmlall':'UTF-8' == '2'}<a href="javascript:{ldelim}{rdelim}" class="button_facade">{l s='Фасады'}</a>{/if} {if $product->category_tovar|escape:'htmlall':'UTF-8' == '3'}<a href="javascript:{ldelim}{rdelim}" class="button_color">{l s='Цвета фасадов'}</a>{/if} {if $product->category_tovar|escape:'htmlall':'UTF-8' == '4'}<a href="javascript:{ldelim}{rdelim}" class="button_facade">{l s='Фасады'}</a> <a href="javascript:{ldelim}{rdelim}" class="button_color">{l s='Цвета фасадов'}</a>{/if} Лень менять варианты на другие, пусть будет тот код, что у меня 1 Link to comment Share on other sites More sharing options...
Recommended Posts