226

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Каждый  готовый шаблон или самописный проблему адаптивного меню решает по-своему. Кто то делает 2 разных меню, а кто-то использует 1 меню и меняет ему версту в зависимости от разрешения.

227

(4 ответов, оставленных в Вопросы по созданию тем оформления)

Если делаете верстку без конструктора, то в соответствующих местах делаете вставку moduleinsert с дополнительным параметром indexTemplate, где указан уже другой шаблон, и root - идентификатор корневого пункта меню.

  {moduleinsert name="\Menu\Controller\Block\Menu" indexTemplate='blocks/menu/foot_menu.tpl' root='0'} 

templates\fashion  - тут тема полностью так построена, можно подглядывать.

228

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Можно 2 циклами вывести. 1 меню для обычного отображения, 2 меню для мобильных. Но я не знаю на основе какого шаблона делаете меню, может достаточно 1 цикла

https://readyscript.ru/text-blog/gotovi … cript-4-1/

230

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Верно вот так

{moduleinsert name="\Catalog\Controller\Block\BrandList"}

Просто в папке \Catalog\Controller\Block смотрите какие есть контроллеры блоков.

231

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Чтобы посмотреть, какие поля есть у объекта,  имея только блокнот (опускаю использование IDE)
Смотрим сам объект \modules\banners\model\orm\banner.inc.php :

......
function _init()
    {        
        parent::_init()->append(array(
                'site_id' => new Type\CurrentSite(),
                'title' => new Type\Varchar(array(
                    'description' => t('Название баннера')
                )),
                'file' => new Type\File(array(
                    'description' => t('Баннер'),
                    'storage' => array(\Setup::$ROOT, \Setup::$FOLDER . static::$src_folder),
                    'template' => '%banners%/form/banner/file.tpl'
                )),
                'use_original_file' => new Type\Integer(array(
                    'description' => t('Использовать оригинал файла для вставки'),
                    'checkboxView' => array(1, 0)
                )),
                'link' => new Type\Varchar(array(
                    'description' => t('Ссылка')
                )),
                'targetblank' => new Type\Integer(array(
                    'description' => t('Открывать ссылку в новом окне'),
                    'checkboxView' => array(1, 0)
                )),
                'info' => new Type\Text(array(
                    'description' => t('Дополнительная информация')
                )),
                'public' => new Type\Integer(array(
                    'maxLength' => 1,
                    'description' => t('Публичный'),
                    'checkboxView' => array(1, 0)
                )),
                'xzone' => new Type\ArrayList(array(
                    'description' => t('Связанные зоны (удерживая CTRL можно выбирать несколько зон)'),
                    'list' => array(array('\Banners\Model\ZoneApi', 'staticAdminSelectList')),
                    'attr' => array(array(
                        'size' => 10,
                        'multiple' => 'multiple'
                    ))
                )),
                'weight' => new Type\Integer(array(
                    'description' => t('Вес от 1 до 100'),
                    'default' => 100,
                    'hint' => t('Чем больше вес, тем больше вероятность того, что баннер будет показан в случае конкуренции')
                )),
            t('Расписание'),
                'use_schedule' => new Type\Varchar(array(
                    'description' => t('Использовать показ по расписанию?'),
                    'checkboxview' => array(1, 0),
                    'default' => 0,
                    'checker' => array(array('\Banners\Model\Orm\Banner', 'staticUseScheduleCheck')),
                    'template' => '%banners%/form/banner/use_schedule.tpl'
                )),
                'date_start' => new Type\Datetime(array(
                    'description' => t('Дата начала показа'),
                    'visible' => false,
                )),
                'date_end' => new Type\Datetime(array(
                    'description' => t('Дата окончания показа'),
                    'visible' => false,
                ))
        ));
    }

Соответственно,

 {if $banner.info}

выведет дополнительную информацию. И да, можно в это поле и html вставлять. Возможно надо обработать функцией html_entity_decode 

{$banner.info|html_entity_decode}

232

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Если не нужен, удалите. 5 раз он не подключится

233

(22 ответов, оставленных в Вопросы по созданию тем оформления)

в блок передаются данные из контроллера блока.
Т.е после вызова moduleinsert  и передачи ему различных параметров, контроллер передает в шаблон tpl переменные шаблона. В исходнике slider.tpl из папки view самого модуля banners видно какие переменные передаются.

{addjs file="{$mod_js}jquery.photoslider.js" basepath="root"}
{if $zone}
{assign var=banners value=$zone->getBanners()}
<div class="bannerSlider">
    <ul class="banners">
        {foreach from=$banners item=banner}
        <li class="item {if $banner@first} act{/if}" {$banner->getDebugAttributes()}>
            <a {if $banner.link}href="{$banner.link}"{/if} {if $banner.targetblank}target="_blank"{/if}><img src="{$banner->getBannerUrl($zone.width, $zone.height, 'axy')}" alt="{$banner.title}"></a>
        </li>
        {/foreach}
    </ul>
    <div class="pages">
    {foreach from=$banners item=banner}
        <a href="#" class="{if $banner@first}act{/if}"></a>
    {/foreach}
    </div>
</div>
{/if}

Плюс, в в руководстве есть информация, как посмотреть переданные в блок переменные визуально. Просто мышкой наводите и видно.  https://readyscript.ru/dev-manual/dev_t … ogrid_tpls  <-тут чуть ниже как включить режим отладки

234

(22 ответов, оставленных в Вопросы по созданию тем оформления)

а что-нибудь вообще выводится? Подключили все скрипты и стили?

235

(9 ответов, оставленных в Вопросы по Маркетплейсу)

В общем то в модуле "Правила для корзины" добавлен такой функционал

236

(22 ответов, оставленных в Вопросы по созданию тем оформления)

в первую очередь туда и пошел)

Отлично, значит перейдем к слудющему пункту:

 /templates/maintheme/moduleview/banners/slider

Не забыли ли положить шаблон в подкаталог blocks?

 /templates/maintheme/moduleview/banners/blocks/slider

237

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Здравствуйте! В RS все не сложнее, а чаще всего и проще других CMS. Напишите подробнее, куда копировали slider.tpl.и как собираете свою тему. Используете ли конструктор сайтов или прописываете вызов блоков в шаблоне напрямую.
Я бы советовал все же начать с переделки заводской flatlines, тогда было бы понятно "откуда ноги растут".
Если краткой, то
Создаете зону для баннера, добавляете в нее баннеры. В конструкторе сайта у блока со слайдером в настройках выбираете созданную зону. Если вручную в код вставили вызов, то передайте информацию о зоне вот так:

    {moduleinsert name="\Banners\Controller\Block\Slider" zone="fashion-center"}

Так же полезно заглянуть в https://readyscript.ru/dev-manual/dev_templates.html

238

(5 ответов, оставленных в Сайт ReadyScript)

Как вариант, еще закрепленные темы с рубрикатором как на 4pda.ru можно сделать.

239

(5 ответов, оставленных в Сайт ReadyScript)

Люто плюсую.

что-то суть никто так и не понял, главное показать уровень ЧСВ видать.
Те кто отписался, вы поймите я покупаю все что необходимо, и каждый клиент со свое лицензией и с тем функционалом что она подразумевает.

У меня только один минус, я взял модуль и переписал его под себя, грубо говоря из буратино сделал барби. И использую себе в удовольствие. К подобным решениям по заимствованию кода я прибегал с 2014 года, первое мое знакомство с RS.

Ну значит так написали, что большинство поняли по другому. У каждого текста есть несколько оттенков прочтения.
Я бы эту тему закрыл от греха подальше)

Для компании с множеством филиалов 19700 руб - не деньги, поэтому здесь нет оправданий. У меня тоже есть доступ ко множеству модулей, однако всегда покупаю заново для клиентов или повышаю версию RS при необходимости. 
Уважайте труд разработчиков!

Для ростовки одежды такое делал. Размер "от" и "до" был указан в товаре, а в фильтре диапазон выбирался.
Поля заполнялись автоматически исходя из максимальной и минимальной ростовки в комплектациях.
Делал для старой версии, может сейчас уже поменялось.
90 и 89 - id "ростовка от" и "ростовка до".
Файл templates/theme/moduleview/catalog/blocks/sidefilters/type/int.my.tpl

{if $prop.id==90}
<div class="filter typeInterval">
    <h4>{$prop.title}:</h4>
    
   
  
    <table class="fullwidth fromToLine">
        <tr>
            <td>{t}от{/t}</td>
            <td class="p50"><input type="text" class="textinp fromto" name="pf[{90}][from]" value="{$filters[89].from|default:$prop_from.interval_from}" data-start-value="{$prop_from.interval_from}"></td>
            <td>{t}до{/t}</td>
            <td class="p50"><input type="text" class="textinp fromto" name="pf[{89}][to]" value="{$filters[90].to|default:$prop.interval_to}" data-start-value="{$prop.interval_to}"></td>
            <td>{$prop.unit}</td>
        </tr>
    </table>
    <input type="hidden" data-slider='{ "from":{$prop_from.interval_from}, "to":{$prop.interval_to}, "step": "{$prop.step}", "round": {$prop->getRound()}, "dimension": " {$prop.unit}", "heterogeneity": [{$prop->getHeterogeneity()}], "scale":  ["{$prop_from.interval_from}", "{$prop.interval_to}"]  }' value="{$filters[89].from|default:$prop_from.interval_from};{$filters[90].to|default:$prop.interval_to}" class="pluginInput" data-start-value="{$prop_from.interval_from};{$prop.interval_to}">
</div>            
{elseif $prop.id!=89}
<div class="filter typeInterval">
    <h4>{$prop.title}:</h4>
    <table class="fullwidth fromToLine">
        <tr>
            <td>{t}от{/t}</td>
            <td class="p50"><input type="text" class="textinp fromto" name="pf[{$prop.id}][from]" value="{$filters[$prop.id].from|default:$prop.interval_from}" data-start-value="{$prop.interval_from}"></td>
            <td>{t}до{/t}</td>
            <td class="p50"><input type="text" class="textinp fromto" name="pf[{$prop.id}][to]" value="{$filters[$prop.id].to|default:$prop.interval_to}" data-start-value="{$prop.interval_to}"></td>
            <td>{$prop.unit}</td>
        </tr>
    </table>
    <input type="hidden" data-slider='{ "from":{$prop.interval_from}, "to":{$prop.interval_to}, "step": "{$prop.step}", "round": {$prop->getRound()}, "dimension": " {$prop.unit}", "heterogeneity": [{$prop->getHeterogeneity()}], "scale": [{$prop->getScale()}]  }' value="{$filters[$prop.id].from|default:$prop.interval_from};{$filters[$prop.id].to|default:$prop.interval_to}" class="pluginInput" data-start-value="{$prop.interval_from};{$prop.interval_to}">
</div>   
{/if}

Код грязный, делал давно.

о каком public'е Вы все пишите?

качественно перенесли старые баги!

Вы бы хоть написали об этом, а то кто-то на радостях скачает и радости не ощутит smile

Мне уже начинает надоедать ваша манера общения. Кто хочет, тот применит, если надо исправит. Какой public понятно из пункта 1 вашего же вопроса.

    /**
     * Возвращает результаты поиска по категориям в зависимости от запроса
     *
     * @param string $query - строка для поиска
     * @param integer $limit - лимит результатов поиска
     *
     * @return \Catalog\Model\Orm\Dir[]
     */
    function getSearchQueryCategoryResults($query, $limit = 1)
    {
        $list = $this->dirapi
                        ->setFilter('name', $query, '%like%')
                        ->setFilter('public', 1)
                        ->getList(1, $limit);

        //Если не нашли результаты, то посмотрим странслитом
        if (empty($list)){
            $query = Transliteration::puntoSwitchWord($query);
            $list = $this->dirapi->clearFilter()->setFilter('name', "%$query%",'like')
                ->getList(1, $limit);
        }
        return $list;
    }

В версии на текущую дату public есть, но нет его в транслитерации. Забыли видимо

 /**
     * Возвращает результаты поиска по категориям в зависимости от запроса
     *
     * @param string $query - строка для поиска
     * @param integer $limit - лимит результатов поиска
     *
     * @return \Catalog\Model\Orm\Dir[]
     */
    function getSearchQueryCategoryResults($query, $limit = 1)
    {
        $list = $this->dirapi->setFilter('name', "%$query%",'like')
            ->getList(1, $limit);

        //Если не нашли результаты, то посмотрим странслитом
        if (empty($list)){
            $query = \RS\Helper\Transliteration::puntoSwitchWord($query);
            $list = $this->dirapi->clearFilter()->setFilter('name', "%$query%",'like')
                ->getList(1, $limit);
        }
        return $list;
    }

Вот код исходного модуля. О public речи нет.

1. почему после транслитерации запроса пропал setFilter('public', 1) ?
2. чем setFilter('name', "$query%", 'like') от setFilter('name', $query, '%like%') отличается? почему такой синтаксис?
3. удаление методов getSearchQueryProductResults, getSearchQueryProductCount ломает обратную совместимость и может привести к проблемам в сторонних модулях.

1. В исходном коде этого не было
2. В исходном коде был первый вариант, я использовал второй.
3. Методов не хватает, так как делалось для старой версии 3, там их нет.

Здравствуйте, Юрий! Я делал доработку, которая в зависимости от наличия товара на складе устанавливала галки на списковой характеристике "В наличии на складе" у товаров.
В списке характеристики перечислены все склады. А у товаров включены соответствующие значения. Пользователь в фильтре просто ставит галку у нужных складов.

https://helpdesk.readyscript.ru/wish/Mo … a-684.html
Добавил пожелание

Хорошо, Александр, создам.

И до кучи в контроллере блока searchline поменял порядок вывода: Категория->Товар->Бренд.

Забыл модифицированный контроллер блока выложить https://yadi.sk/d/rIjrrrzoKe3IqQ
из catalog/controller/block

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

То есть решил задачу только для вывода категорий, вывод товаров надо настраивать в модуле поиска.