2,326 01.09.2015 11:43:53
Re: Дополнительное поле при оформлении заказа (4 ответов, оставленных в Вопросы по работе с системой)
2,327 01.09.2015 11:14:54
Re: Вывод URL картинки категории (5 ответов, оставленных в Вопросы по созданию тем оформления)
с картинкой
Т.к. у объекта категории есть поле image, то если обращаться к нему как к массиву, то вы получите значение массива. Но если обратится как к protected свойству (->__), то получите объект картинки (\RS\ORM\Type\Image). А у него есть метод getUrl(ширина, высота, метод уменьшения и обрезки).
Поэтому должно это выглядеть примерно так:
{$dir->__image->getUrl(ширина в пикселях, высота в пикселях, 'метод уменьшения и обрезки')}
Вы для вывода категорий используете блок контроллер? Или самостоятельно получаете категории?
2,328 31.08.2015 19:36:18
Re: Дополнительное поле при оформлении заказа (4 ответов, оставленных в Вопросы по работе с системой)
А вы в модуле пользователя или магазина добавляете?
2,329 31.08.2015 19:35:15
Re: как сделать слайдер в теме воздушная, как в теме детская ??? (5 ответов, оставленных в Вопросы по работе с системой)
Всё понял о каком банере вы говорите.
Тогда Вам нужен шаблон
/templates/young/moduleview/banners/blocks/slider.tpl
2,330 31.08.2015 19:30:35
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
Получается так, но на это есть свои основания. Вы можете заказать доработку партнёрского модуля у нас в поддержке и мы можем сделать возможность администрирования.
2,331 31.08.2015 13:23:53
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
И как же единая база товаров?
Нет. У мультисайта все товары будут свои, если у Вас товары одни и теже, то можно использовать импорт и экспорт CSV (Если вы не используете 1C обмен).
А в мультисайте тогда на каждый домен надо устанавливать сам скрипт?
Нет, ничего не нужно ставить. Просто делаем, добавить сайт в разделе Управление->Сайты. А действия с папками оставим теже как и с партнёрским модулем. Т.е. если вы уже всё настроили, то делать дополнительно ничего не надо.
2,332 31.08.2015 13:20:54
Re: Связи в БД (12 ответов, оставленных в Вопросы по разработке модулей и API системы)
Данная схема действует везде. Ограничений на действие никаких нет.
Insert проще простого сделать, например так:
$product = new \Catalog\Model\Orm\Product(); //Объявим новый ORM объект.
//Заполняем нужные поля объекта \Catalog\Model\Orm\Product, поля смотрим в файле /modules/catalog/model/orm/product.inc.php соответственно, например так
$product['title'] = 'Мой новый товар';
$product['alias'] = \RS\Helper\Transliteration::str2url($product['title']);
$product['xdir'] = array(id нужной нам категории); //Категория
$product['public'] = 1; //Флаг публичности
//И ещё какие-либо наши поля смотрим в файле /modules/catalog/model/orm/product.inc.php
if ($product->insert()){ //Добавим в БД и заодно проверим, а вставилась ли она
echo "Всё успешно вставилось".
//После добавления записи у товара появится поле id и достать можно так $product['id']
}else{
echo "Произошли следующие ошибки".
var_dump($product->getErrors());
exit();
}
Далее я расскажу как добавить остальные записи в БД для других вещей. Вообще их можно включить в конструкцию перед insert и оно будет действовать одинаково, но в данном случае я буду рассматривать, если запись уже существует. Т.е. через update.
Добавление цены
//Установка одной цены и валюты
$excost = array(
'id нужной нам цены из справочника цен' => array(
'cost_original_val' => Сколько нам надо,
'cost_original_currency' => id нужной нам валюты
)
)
$product['excost'] = $excost;
//Получить id цены по умолчанию(основной) можно так
$default_cost_id = \Catalog\Model\CostApi::getDefaultCostId();
Добавление фото производим через API работы с фото
$photoApi = new \Photo\Model\PhotoApi(); //Инициализируем API
$photoApi->addFromUrl('полный url откуда брать фото','catalog', $product['id']); //Добавляем фото из url
Добавление характеристик
//Для добавления строковой или числовой характеристики
$product['prop'][id нужной нам характеристики]['value'] = 'значение характеристики';
//Для добавления списковой характеристики
$product['prop'][id нужной нам характеристики]['value'] = array(
'значение характеристики 1',
'значение характеристики 2',
);
А в конце вызываем update
$product->update(); //Обновим товар
2,333 31.08.2015 12:42:40
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
В стандарте идёт сразу 2 сайта у Вас, соответственно, если у Вас большая фирма с несколькими филиалами, допустим работаете в 10 городах, то да Вам надо будет докупить поддержку 8 доп. доменов и тогда вы получите полную свободу действий и полное управление множеством сайтов разными группами. Либо делать как-то иначе, или пересмотреть концепцию. По другому пока никак.
2,334 31.08.2015 12:33:58
Re: Вывод анонса статьи с заданным количеством символов (11 ответов, оставленных в Вопросы по созданию тем оформления)
У нас есть модуль "Список свежих новостей", который можно настроить под Ваши нужды, просто назначив нужный Вам шаблон для отображения. Модуль т.к. у Вас тема адаптивная можно добавить через админку в разеделе Веб-сайт->Конструктор сайта, выбрав нужную Вам страницу для отображения. Далее Вы добавляете блок и указываете свой шаблон отображения. Соответственно Вам надо будет создать копию из имеющегося и переделать под Ваши нужды.
Например взяв из темы perfume:
/templates/perfume/moduleview/article/blocks/lastnews/lastnews.tpl
Далее настраиваете CSS под Ваше отображение.
Так что если вы обладаете вёрсткой, то можете сделать самостоятельно, если нет, то придётся обратится в верстальщику HTML, он Вам сделает как надо.
2,335 31.08.2015 12:26:04
Re: как сделать слайдер в теме воздушная, как в теме детская ??? (5 ответов, оставленных в Вопросы по работе с системой)
в теме young нет таких путей )
Всё правильно. Недостающие папки и файлы надо создать
2,336 31.08.2015 12:24:52
Re: Выключение сайта , есть ли такой функционал? (4 ответов, оставленных в Вопросы по работе с системой)
Там и нашел решение, но там для апача, а у меня nginx. сделал по аналоги для nginx
location / {
if ($remote_addr !~ "(разрешенный IP)"){
rewrite ^(.*)$ /offline.html redirect;
}Хотя конечно кнопочку бы не мешало в админку
Спасибо! Обсудим.
2,337 31.08.2015 12:23:38
Re: Как поменять КПП (10 ответов, оставленных в Вопросы по работе с системой)
Вы укажите как вы Выводите в шаблоне пожалуйста, чтобы мы поняли.
2,338 31.08.2015 12:22:12
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
Александр пишет:
Вы выбрали мультисайт или партнёрским сделали?
Партнерками сделал, бд с товарами одна на всех должна быть. Вот обработка заказов разная. Когда заходишь в заказ, там есть инфа "заказ с партнерского магазина такого-то", вот думаю, как бы это использовать. То есть зарегился например человек из группы Москва, значит и заказы ему видны из партнерского магазина Москва - moscow.site.ru
Ограничить права группе как вы хотите можно только в мульти сайте. В партнёрском модуле, когда Вы создаёте новый сайт, то там он привязывается только к одному выбранному Вами пользователю. Доступа в админку данный пользователь не имеет, он может только в личном кабинете после авторизации менять наценку, т.к. у него появляется там раздел - "Партнёрский раздел".
Это всё. Остальные правки, в том числе по назначению шаблона для Ваших сайтов делает суперадмин.
Поэтому для Вас подойдёт метод только мультисайта.
При мультисайте, вы заводите домены в разделе Управление->Сайты (Не забыв удалить записи из партнёрского модуля). Далее создаём нужную нам группу для определённого Вам города (сидим под супер админом). После чего переходим в поддомены где надо запретить доступ, допустим в админку Красноярска(через наведение на имя пользователя справа вверху) и там переходим в раздел Управление->Пользователи->Группы. Выбираем нужную группу для запрета доступа и переходим во вкладку Права. Там в самом верху есть галочка "Разрешить управление этим сайтом", снимаем галку и сохраняем.
2,339 31.08.2015 12:04:17
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
В общем, с бубном установил, запустил, вроде все работает. Пришлось с nginx поплясать, но вроде все удачно. Создал поддомены, папки, настроил алиасы, все работает. Но никак не могу понять, как ограничить ту или иную группу или конкректных людей в пределах одного поддомена? Я создал группу с правом входа в админку, захожу под ним, но он заходит абсолютно во все админки, всех доменов, и видит заказы всех поддоменов. как их можно оградить? Например, группа красноярск может админить и обрабатывать и заходить в админку только с поддомена krasnoyarsk.site.ru, и заказы тоже обрабатывать может только с этого поддомена? Такое возможно реализовать?
Вы выбрали мультисайт или партнёрским сделали?
2,340 31.08.2015 12:02:22
Re: Как поменять КПП (10 ответов, оставленных в Вопросы по работе с системой)
И ещё у меня почему-то печатается так "сайт: Сайт ..." Как убрать повторное слово?
Там берётся строка
{if !empty($SITE.full_title)}
сайт: {$SITE.full_title}
{/if}
Т.е. полное название сайта из раздела Управление->Сайты
Так получается только для организации. Для ИП количество знаков не хватает, т.к. их больше, обрезаются три последних. Поправьте, пожалуйста.
Укажите, что на что вы поменяли.
2,341 31.08.2015 11:53:34
Re: как сделать слайдер в теме воздушная, как в теме детская ??? (5 ответов, оставленных в Вопросы по работе с системой)
Ну по идее надо просто скопировать шаблон из той темы себе и скопировать, css.
Т.е. шаблоны:
/templates/perfume/moduleview/catalog/blocks/bannerview/
надо скопировать в
/templates/ВАША ТЕМА/moduleview/catalog/blocks/bannerview/
И собственно взять css из файла css, где есть .bannerProduct
2,342 31.08.2015 11:44:31
Re: Выключение сайта , есть ли такой функционал? (4 ответов, оставленных в Вопросы по работе с системой)
Если вдруг кому интересно, то смотрим сюда:
Как сделать заглушку сайта на ReadyScript
2,343 31.08.2015 11:41:34
Re: Связи в БД (12 ответов, оставленных в Вопросы по разработке модулей и API системы)
Во первых.
Мы не приемлим прямых обращений в базу. У нас в системе на прямую обращаться нет надобности. Т.к. для этого уже всё предусмотрено. ЗАБУДЬТЕ о прямых обращениях в БД, это метод "лохматых" годов и"олдскул".
Со всем записями в БД можно работать через ORM объект. Каждому ORM объекту соответствует своя БД и своя одна запись в этой БД.
При удалении через ORM объект срабатывает метод delete() в котором, подтягиваются все необходимые данные и удаляются. Поэтому Вам надо сделать примерно так:
$product = new \Catalog\Model\Orm\Product(id записи в БД); //Получаем одну запись товара из БД и помещаем в ORM объект значения
$product->delete(); //Удалит товар и всё что с ним связано само
Поэтому Вам вообще не надо думать о том какие таблицы задействованы.
Как делать выборки? Вот пара материалов из форума:
http://forum.readyscript.ru/topic/16/zaprosy-k-bd/
http://forum.readyscript.ru/topic/297/g … apis-v-bd/
http://forum.readyscript.ru/topic/321/f … -usloviem/
Ну и собственно документация:
Подсистема ORM и запросы
Если у Вас возникнут вопросы или надо подсказать запрос, то пишите мы Вам всё подскажем с примерами.
2,344 28.08.2015 17:16:36
Re: Добавить скрытие полей ввода данных на 1 этапе регистрации (6 ответов, оставленных в Вопросы по работе с системой)
Хорошо. Обсудим.
2,345 28.08.2015 16:09:11
Re: Добавить скрытие полей ввода данных на 1 этапе регистрации (6 ответов, оставленных в Вопросы по работе с системой)
Вообщем так надо сделать:
{addjs file="order.js"}
{assign var=errors value=$order->getNonFormErrors()}
{if $errors}
<div class="pageError">
{foreach from=$errors item=item}
<p>{$item}</p>
{/foreach}
</div>
{/if}
<form method="POST" id="order-form">
<input type="hidden" name="user_type" value="{$order.user_type}">
<div class="userProfile activeTabs" data-input-name="user_type">
{if !$is_auth}
<div class="formSection">
<span class="sectionListBlock">
<ul class="lineList tabList">
<li><a class="item {if $order.user_type=='person'} act{/if}" data-tab="#user-tab1" data-input-val="person" href="JavaScript:;">Частное лицо</a></li>
<li><a class="item{if $order.user_type=='company'} act{/if}" data-tab="#user-tab1" data-class="thiscompany" data-input-val="company" href="JavaScript:;">Компания</a></li>
<li><a class="item{if $order.user_type=='user'} act{/if}" data-tab="#user-tab2" data-input-val="user" href="JavaScript:;">Я регистрировался раннее</a></li>
</ul>
</span>
</div>
{/if}
<div class="tabFrame {if $order.user_type =='user'} hidden{/if}{if $order.user_type =='company'} thiscompany{/if}" id="user-tab1">
{if $is_auth}
<div class="formSection">
<span class="formSectionTitle">Покупатель</span>
<a href="{urlmake logout=true}" class="ml10">сменить пользователя (Выход)</a>
</div>
<table class="formTable">
{if $user.is_company}
<tbody>
<tr>
<td class="key">Название организации:</td>
<td class="value">
{$user.company}
</td>
</tr>
<tr>
<td class="key">ИНН:</td>
<td class="value">
{$user.company_inn}
</td>
</tr>
</tbody>
{/if}
<tbody>
<tr>
<td class="key">Имя:</td>
<td class="value">
{$user.name}
</td>
</tr>
<tr>
<td class="key">Фамилия:</td>
<td class="value">
{$user.surname}
</td>
</tr>
<tr>
<td class="key">Отчество:</td>
<td class="value">
{$user.midname}
</td>
</tr>
<tr>
<td class="key">Телефон:</td>
<td class="value">
{$user.phone}
</td>
</tr>
<tr>
<td class="key">E-mail:</td>
<td class="value">
{$user.e_mail}
</td>
</tr>
</tbody>
</table>
{else}
<table class="formTable">
<tbody class="organization">
<tr>
<td class="key">Название организации:</td>
<td class="value">
{$order->getPropertyView('reg_company')}
<div class="help">Например: ООО Аудиторская фирма "Аудитор"</div>
</td>
</tr>
<tr>
<td class="key">ИНН:</td>
<td class="value">
{$order->getPropertyView('reg_company_inn')}
<div class="help">10 или 12 цифр</div>
</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="key">Имя:</td>
<td class="value">
{$order->getPropertyView('reg_name')}
<div class="help">Имя покупателя, владельца аккаунта</div>
</td>
</tr>
<tr>
<td class="key">Фамилия:</td>
<td class="value">
{$order->getPropertyView('reg_surname')}
<div class="help">Фамилия покупателя, владельца аккаунта</div>
</td>
</tr>
<tr>
<td class="key">Отчество:</td>
<td class="value">
{$order->getPropertyView('reg_midname')}
</td>
</tr>
<tr>
<td class="key">Телефон:</td>
<td class="value">
{$order->getPropertyView('reg_phone')}
<div class="help">В формате: +7(123)9876543</div>
</td>
</tr>
<tr>
<td class="key">E-mail:</td>
<td class="value">
{$order->getPropertyView('reg_e_mail')}
</td>
</tr>
<tr>
<td class="key">Пароль:</td>
<td class="value">
<input type="checkbox" name="reg_autologin" {if $order.reg_autologin}checked{/if} value="1" id="reg-autologin">
<label for="reg-autologin">Получить автоматически на e-mail</label>
<div class="help">Нужен для проверки статуса заказа, обращения в поддержку, входа в кабинет</div>
<div id="manual-login" {if $order.reg_autologin}style="display:none"{/if}>
<div class="inline f">
{$order.__reg_openpass->formView(['form'])}
<div class="help">Пароль</div>
</div>
<div class="inline">
{$order.__reg_pass2->formView()}
<div class="help">Повтор пароля</div>
</div>
<div class="inline">
<div class="form-error">{$order->getErrorsByForm('reg_openpass', ', ')}</div>
</div>
</div>
</td>
</tr>
{foreach from=$reg_userfields->getStructure() item=fld}
<tr>
<td class="key">{$fld.title}</td>
<td class="value">
{$reg_userfields->getForm($fld.alias)}
{assign var=errname value=$reg_userfields->getErrorForm($fld.alias)}
{assign var=error value=$order->getErrorsByForm($errname, ', ')}
{if !empty($error)}
<span class="form-error">{$error}</span>
{/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
<div class="formSection">
<span class="formSectionTitle">адрес</span>
</div>
{if count($address_list)>0}
<div class="existsAddress">
Использовать следующий адрес:
<table id="address-list">
{foreach from=$address_list item=address}
<tr>
<td><input type="radio" name="use_addr" value="{$address.id}" id="adr_{$address.id}" {if $order.use_addr == $address.id}checked{/if}></td>
<td>
<label for="adr_{$address.id}">{$address->getLineView()}</label>
<a href="{$router->getUrl('shop-front-checkout', ['Act' =>'deleteAddress', 'id' => $address.id])}" class="deleteAddress"/></a>
</td>
</tr>
{/foreach}
<tr>
<td><input type="radio" name="use_addr" value="0" id="use_addr_new" {if $order.use_addr == 0}checked{/if}></td>
<td><label for="use_addr_new">Другой адрес</label></td>
</tr>
</table>
</div>
{else}
<input type="hidden" name="use_addr" value="0">
{/if}
<table class="formTable">
<tbody class="new-address">
<tr>
<td class="key">Страна:</td>
<td class="value">
{assign var=region_tools_url value=$router->getUrl('shop-front-regiontools', ["Act" => 'listByParent'])}
{$order->getPropertyView('addr_country_id', ['data-region-url' => $region_tools_url])}
<div class="help">Например: Россия</div>
</td>
</tr>
<tr>
<td class="key">Область, Город:</td>
<td class="value">
<div class="inline f">
{assign var=regcount value=$order->regionList()}
<span {if count($regcount) == 0}style="display:none"{/if} id="region-select">
{$order.__addr_region_id->formView()}
</span>
<span {if count($regcount) > 0}style="display:none"{/if} id="region-input">
{$order.__addr_region->formView()}
</span>
<div class="help">Область/Край</div>
</div>
<div class="inline">
{$order->getPropertyView('addr_city')}
<div class="help">Город</div>
</div>
</td>
</tr>
<tr>
<td class="key">Индекс, Адрес:</td>
<td class="value">
<div class="inline f">
{$order.__addr_zipcode->formView()}
<div class="help">Индекс</div>
</div>
<div class="inline">
{$order->getPropertyView('addr_address')}
<div class="help">Адрес. Например: ул. Красная, 100, офис 71</div>
</div>
</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="key">Контактное лицо:</td>
<td class="value">
{$order->getPropertyView('contact_person')}
<div class="help">Лицо, которое встретит доставку. Например: Иван Иванович Пуговкин</div>
</td>
</tr>
{if $order.__code->isEnabled()}
<tr>
<td class="key">Защитный код:</td>
<td class="value">
{$order->getPropertyView('code')}
<div class="help">Необходим для защиты от спам роботов</div>
</td>
</tr>
{/if}
</tbody>
</table>
{if $conf_userfields->notEmpty()}
<br>
<div class="formSection">
<span class="formSectionTitle">дополнительные сведения</span>
</div>
<table class="formTable">
<tbody>
{foreach from=$conf_userfields->getStructure() item=fld}
<tr>
<td class="key">{$fld.title}</td>
<td class="value">
{$conf_userfields->getForm($fld.alias)}
{assign var=errname value=$conf_userfields->getErrorForm($fld.alias)}
{assign var=error value=$order->getErrorsByForm($errname, ', ')}
{if !empty($error)}
<span class="form-error">{$error}</span>
{/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
</div>
{if !$is_auth}
<div class="tabFrame{if $order.user_type !='user'} hidden{/if}" id="user-tab2">
<table class="formTable">
<tbody>
<tr>
<td class="key">Логин:</td>
<td class="value">
{$order->getPropertyView('login')}
</td>
</tr>
<tr>
<td class="key">Пароль:</td>
<td class="value">
{$order->getPropertyView('password')}
<a href="?ologin=1" id="order_login">Вход</a>
</td>
</tr>
</table>
</div>
{/if}
</div>
<button type="submit" class="formSave">Далее</button>
</form>
<br><br><br>
2,346 28.08.2015 16:02:39
Re: Добавить скрытие полей ввода данных на 1 этапе регистрации (6 ответов, оставленных в Вопросы по работе с системой)
Вы нашли tabFrame правильно. И теперь посмотрите где находится закрывающий </div>. Так вот это надо передвинуть таким образом, чтобы он закрыл ещё и див в выдачей адресов. Т.е. Вам надо просто перенести часть кода которая отвечает за адреса в перед закрывающим дивом tabFrame.
2,347 28.08.2015 13:42:18
Re: Печать бланков (16 ответов, оставленных в Предложения по улучшению системы)
Отлично. Ждём модуль в маркетплэйс.
2,348 28.08.2015 13:09:09
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
Спасибо, вот второй вариант меня как раз и интересует.
Папочки с поддоменами соответственно на хостинге.
А в папочке что?
Ну надо на каждый поддомен создать папки и настроить симлинк, чтобы папки ссылались на основную. Делается через хостинг.
2,349 28.08.2015 12:46:24
Re: Партнерские сайты или допсайты? (18 ответов, оставленных в Вопросы по работе с системой)
Забыл указать, что во втором способе можно назначать свою цену продажи под необходимый филиал.
2,350 28.08.2015 12:44:48
Re: Всплывающее окно при добавлении товара в корзину (3 ответов, оставленных в Вопросы по работе с системой)
Хорошо.