226

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

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

227

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

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

228

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

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

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

 /templates/maintheme/moduleview/banners/slider

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

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

229

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

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

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

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

230

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

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

231

(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

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

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

243

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

Ваши предложения?

Владимир, подглядывайте в код блока фильтров. Там все есть

Александр, код не сократить? Действительно только таким перебором?

Здравствуйте, коллеги!
Пишу свой триггер, но что то не выходит каменный цветок.
Задача при появлении новых товаров выполнять рассылку.

 function match()
    {
         \RS\HashStore\Api::set(self::DATE_LAST_CHECK, (string) time());
        $lastrun = \RS\HashStore\Api::get(self::DATE_LAST_RUN,0);
        $days = floor((time() - $lastrun) / (60 * 60 * 24));
        $new = \RS\HashStore\Api::get(self::DATE_NEW);
        $last = \RS\HashStore\Api::get(self::DATE_LAST);
        $daysnew = floor((time() - strtotime($new)) / (60 * 60 * 24));
        $dayslast = floor((time() - strtotime($last)) / (60 * 60 * 24));
        
       
      file_put_contents('mlog.txt',var_export(date("Y-m-d H:i:s") ,true),FILE_APPEND);
      file_put_contents('mlog.txt',var_export($daysnew." ".$dayslast ,true),FILE_APPEND);
        
        $result = array();
        if ((\RS\Module\Manager::staticModuleExists('mailsender')) 
                && ($days > 0) 
                && ($daysnew <= $days || $dayslast <= $days)) { 
          

            $users = \RS\Orm\Request::make() //получим всех пользователей
                    ->from(new \Users\Model\Orm\User(), 'U')     
                    ->whereIn('e_mail',array('alerts@ev-lab.ru','mail@bnm-socks.ru'))
                    ->objects();
            foreach ($users as $user) {
                $result[] = new \MailSender\Model\TriggerData($user);
            }
            file_put_contents('mlog.txt','sending',FILE_APPEND);   
            
            \RS\HashStore\Api::set(self::DATE_LAST_RUN, (string) time());

        }
        return $result;
    }

Есть ли примеры триггеров?

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

<div class='product-specials'>
{foreach $product->fillProperty() as $data}
   
    {if $data.properties['336']}
    
     {$product_property=$product->getPropertyValueById(336,null,false,true)}
            
     {$property=$data.properties['336']}
         {foreach $property->getAllowedValuesObjects() as $key => $item_value}
           
                {foreach $product_property as $id=>$value} 
                    {if $item_value.id==$value}
                        <label class="cb_{$prop.id}_{$item_value@iteration} product-specials_icon " title="{$item_value.value}">
                            {if $item_value.image}
                                <img src="{$item_value.__image->getUrl(40, 40, 'cxy')}">
                            {/if}
                        </label>
                    {/if} 
                {/foreach}
            {/foreach}
      {/if}      
{/foreach} 
</div>

248

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

Спасибо! Заодно прибил модули из старших версий.

249

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

Здравствуйте! Необычная ситуация. Необходимо разделить 2 сайта. У второго сайта лицензия будет не "Гипермаркет", а "Витрина". Как понизить версию у копии сайта?

Разобрался я в причине того, что результаты поиска в блоке поиска отличаются от страницы поиска)
Я думал, что поиск в блоке поиска делается механизмами модуля Search, но получается, что там свой код и категории ищутся вне зависимости от настроек модуля Search просто по %like%.

Я немного скорректировал searchlineapi.inc.php в блоке поиска. Теперь поиск в категориях идет в следующем порядке: like%, транслитерация like%, %like%, транслитерация %like%. Если на этапе есть вхождение, то далее поиск не идет. Слава богу, "мел" теперь найти можно))
https://yadi.sk/d/geI1drZ9g7ZIJg

И до кучи в контроллере блока searchline поменял порядок вывода: Категория->Товар->Бренд.
В принципе, клиент доволен, я тоже) Получается, что претензии были не к модулю поиска товаров, а к реализации поиска у блока строки поиска.

https://yadi.sk/d/rIjrrrzoKe3IqQ