smile

с картинкой

Т.к. у объекта категории есть поле image, то если обращаться к нему как к массиву, то вы получите значение массива. Но если обратится как к protected свойству (->__), то получите объект картинки (\RS\ORM\Type\Image). А у него есть метод getUrl(ширина, высота, метод уменьшения и обрезки).

Поэтому должно это выглядеть примерно так:

{$dir->__image->getUrl(ширина в пикселях, высота в пикселях, 'метод уменьшения и обрезки')}

Вы для вывода категорий используете блок контроллер? Или самостоятельно получаете категории?

А вы в модуле пользователя или магазина добавляете?

Всё понял о каком банере вы говорите.
Тогда Вам нужен шаблон
/templates/young/moduleview/banners/blocks/slider.tpl

2,330

(18 ответов, оставленных в Вопросы по работе с системой)

Получается так, но на это есть свои основания. Вы можете заказать доработку партнёрского модуля у нас в поддержке и мы можем сделать возможность администрирования.

2,331

(18 ответов, оставленных в Вопросы по работе с системой)

И как же единая база товаров?

Нет. У мультисайта все товары будут свои, если у Вас товары одни и теже, то можно использовать импорт и экспорт CSV (Если вы не используете 1C обмен).

А в  мультисайте тогда на каждый домен надо устанавливать сам скрипт?

Нет, ничего не нужно ставить. Просто делаем, добавить сайт в разделе Управление->Сайты. А действия с папками оставим теже как и с партнёрским модулем. Т.е. если вы уже всё настроили, то делать дополнительно ничего не надо.

2,332

(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

(18 ответов, оставленных в Вопросы по работе с системой)

В стандарте идёт сразу 2 сайта у Вас, соответственно, если у Вас большая фирма с несколькими филиалами, допустим работаете в 10 городах, то да Вам надо будет докупить поддержку 8 доп. доменов и тогда вы получите полную свободу действий и полное управление множеством сайтов разными группами.  Либо делать как-то иначе, или пересмотреть концепцию. По другому пока никак.

У нас есть модуль "Список свежих новостей", который можно настроить под Ваши нужды, просто назначив нужный Вам шаблон для отображения. Модуль т.к. у Вас тема адаптивная можно добавить через админку в разеделе Веб-сайт->Конструктор сайта, выбрав нужную Вам страницу для отображения. Далее Вы добавляете блок и указываете свой шаблон отображения. Соответственно Вам надо будет создать копию из имеющегося и переделать под Ваши нужды.
Например взяв из темы perfume:
/templates/perfume/moduleview/article/blocks/lastnews/lastnews.tpl

Далее настраиваете CSS под Ваше отображение.

Так что если вы обладаете вёрсткой, то можете сделать самостоятельно, если нет, то придётся обратится в верстальщику HTML, он Вам сделает как надо.

в теме young нет таких путей )

Всё правильно. Недостающие папки и файлы надо создать

Там и нашел решение, но там для апача, а у меня nginx. сделал по аналоги для nginx

location / {
   
        if ($remote_addr !~ "(разрешенный IP)"){
                rewrite ^(.*)$ /offline.html redirect;
        }

Хотя конечно кнопочку бы не мешало в админку

Спасибо! Обсудим.

2,337

(10 ответов, оставленных в Вопросы по работе с системой)

Вы укажите как вы Выводите в шаблоне пожалуйста, чтобы мы поняли.

2,338

(18 ответов, оставленных в Вопросы по работе с системой)

Александр пишет:

    Вы выбрали мультисайт или партнёрским сделали?

Партнерками сделал, бд с товарами одна на всех должна быть. Вот обработка заказов разная.  Когда заходишь в заказ, там есть инфа "заказ с партнерского магазина такого-то", вот думаю, как бы это использовать. То есть зарегился например человек из группы Москва, значит и заказы ему видны из партнерского магазина Москва - moscow.site.ru

Ограничить права группе как вы хотите можно только в мульти сайте. В партнёрском модуле, когда Вы создаёте новый сайт, то там он привязывается только к одному выбранному Вами пользователю. Доступа в админку данный пользователь не имеет, он может только в личном кабинете после авторизации менять наценку, т.к. у него появляется там раздел - "Партнёрский раздел".
Это всё. Остальные правки, в том числе по назначению шаблона для Ваших сайтов делает суперадмин.
Поэтому для Вас подойдёт метод только мультисайта.
При мультисайте, вы заводите домены в разделе Управление->Сайты (Не забыв удалить записи из партнёрского модуля). Далее создаём нужную нам группу для определённого Вам города (сидим под супер админом). После чего переходим в поддомены где надо запретить доступ, допустим в админку Красноярска(через наведение на имя пользователя справа вверху) и там переходим в раздел Управление->Пользователи->Группы. Выбираем нужную группу для запрета доступа и переходим во вкладку Права. Там в самом верху есть галочка "Разрешить управление этим сайтом", снимаем галку и сохраняем.

2,339

(18 ответов, оставленных в Вопросы по работе с системой)

В общем, с бубном установил, запустил, вроде все работает. Пришлось с nginx поплясать, но вроде все удачно. Создал поддомены, папки, настроил алиасы, все работает. Но никак не могу понять, как ограничить ту или иную группу или конкректных людей в пределах одного поддомена? Я создал группу с правом входа в админку, захожу под ним, но он заходит абсолютно во все админки, всех доменов, и видит заказы всех поддоменов. как их можно оградить? Например, группа красноярск может админить и обрабатывать и заходить в админку только с поддомена krasnoyarsk.site.ru, и заказы тоже обрабатывать может только с этого поддомена? Такое возможно реализовать?

Вы выбрали мультисайт или партнёрским сделали?

2,340

(10 ответов, оставленных в Вопросы по работе с системой)

И ещё у меня почему-то печатается так "сайт: Сайт ..." Как убрать повторное слово?

Там берётся строка

{if !empty($SITE.full_title)}
     сайт: {$SITE.full_title}
{/if}

Т.е. полное название сайта из раздела Управление->Сайты

Так получается только для организации. Для ИП количество знаков не хватает, т.к. их больше, обрезаются три последних. Поправьте, пожалуйста.

Укажите, что на что вы поменяли.

Ну по идее надо просто скопировать шаблон из той темы себе и скопировать, css.
Т.е. шаблоны:
/templates/perfume/moduleview/catalog/blocks/bannerview/
надо скопировать в
/templates/ВАША ТЕМА/moduleview/catalog/blocks/bannerview/

И собственно взять css из файла css, где есть .bannerProduct

Если вдруг кому интересно, то смотрим сюда:
Как сделать заглушку сайта на ReadyScript

2,343

(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 и запросы

Если у Вас возникнут вопросы или надо подсказать запрос, то пишите мы Вам всё подскажем с примерами.

Хорошо. Обсудим.

Вообщем так надо сделать:

{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>

Вы нашли tabFrame правильно. И теперь посмотрите где находится закрывающий </div>. Так вот это надо передвинуть таким образом, чтобы он закрыл ещё и див в выдачей адресов. Т.е. Вам надо просто перенести часть кода которая отвечает за адреса в перед закрывающим дивом tabFrame.

2,347

(16 ответов, оставленных в Предложения по улучшению системы)

Отлично. Ждём модуль в маркетплэйс.

2,348

(18 ответов, оставленных в Вопросы по работе с системой)

Спасибо, вот второй вариант меня как раз и интересует.

    Папочки с поддоменами соответственно на хостинге.

А в папочке что?

Ну надо на каждый поддомен создать папки и настроить симлинк, чтобы папки ссылались на основную. Делается через хостинг.

2,349

(18 ответов, оставленных в Вопросы по работе с системой)

Забыл указать, что во втором способе можно назначать свою цену продажи под необходимый филиал.

Хорошо.