Пользователь-535415 пишет:

Go to Website > Site Builder if you're ready to start integrating third-party components. If you're going to be handling your interactions with the site on your own, I think it would be a good idea to watch some video guides explaining what you may expect and how to use it.

The answer is good. It is a pity that there is no useful information.

Здравствуйте.

Как можно получить продукты, у которых определённое значение характеристики.

Вот как пробую получить

{static_call var=my_some_var callback=['\Catalog\Model\Orm\Property\Link', 'loadByWhere'] params=[['prop_id'=>384,'val_str'=>"Маркеры"]]}
{$my_some_var|var_dump}

Но в переменную попадает одно значение, а не все объекты. Как исправить можно, чтобы получить массив всех подходящих условию товаров?

В данном случае задача получить product_id всех значений.

Спасибо.

В ходе теста обнаружено следующее.

Если добавить картинку в чате телеграм от пользователя "Ctrl+V", в личном кабинете высвечивается как прикрепленный файл.
https://i.ibb.co/ggrT5SN/Screenshot-3.jpg
Это ОК.


Если отправить из личного кабинета клиенту ссылку в формате
https://forum.readyscript.ru/ она приходит активной гиперссылкой.

Если в html формате, как на скриншоте №1, то в телеграм клиенту приходит просто текст (без ссылки).

https://i.ibb.co/ftQ7XrB/Screenshot-1.jpg


Также если вставить картинку через "Ctrl+C" (на скриншоте №2), она не приходит клиенту.


Это видно на следующем скрине ТГ

https://i.ibb.co/J5crk7R/Screenshot-2.jpg


Надеюсь информация может оказаться кому-то полезной.

4

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

Здравствуйте.

Покажите образец YML файла для импорта.

Какие поля являются минимальными обязательными?

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

А если нужна конкретная характеристика то можно через
{$product->getPropertyByTitle('Название характеристики')} или {$product->getPropertyById('id характеристики')}


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

Исключение - "Метод getPropertyById не найден в классе Catalog\Model\Orm\Product"

{$pam=$product->getPropertyById('347')}

6

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

OOO пишет:

Можно ли совсем убрать фильтр по цене?

можно исправить в шаблоне
/moduleview/catalog/blocks/sidefilters/filters.tpl

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

Кстати, а что это за ORM объекты странные \Catalog\Model\Orm\LogtypeAbstract их нет в системе по умолчанию?


Реально обращаюсь сюда
\Users\Model\Orm\Log
Далее пробовал \Catalog\Model\Orm\LogtypeAbstract  путём эксперимента


Указал, как Вы скорректировали.



object(Users\Model\Orm\Log)#895 (5) {
  ["_values":protected]=>
  array(9) {
    ["id"]=>
    string(8) "81106711"
    ["site_id"]=>
    string(1) "1"
    ["dateof"]=>
    string(19) "2022-09-27 17:44:26"
    ["class"]=>
    string(33) "Catalog\Model\Logtype\ShowProduct"
    ["oid"]=>
    string(6) "124754"
    ["group"]=>
    string(6) "124754"
    ["user_id"]=>
    string(10) "-494552635"
    ["_serialized"]=>
    string(2) "N;"
    ["data"]=>
    NULL
  }
  ["_self_class":protected]=>
  string(19) "Users\Model\Orm\Log"
  ["_local_id":protected]=>
  int(304)
  ["cache_behavior_instances":"RS\Behavior\AcceptBehavior":private]=>
  array(0) {
  }
  ["instance_behaviors":"RS\Behavior\AcceptBehavior":private]=>
  array(0) {
  }
}



 
  

Как я понял, получается не все данные а только одно значение из таблицы. А как нужно подкорректровать, чтобы получить массив всех данных из таблицы?

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

Вероятно, нужно по-другому составить запрос.
Ну во первых включите отображение ошибок https://readyscript.ru/faq/#faq-errors и понять почему 503

Включал, но ничего не ясно из ошибки. Поэтому и обращаюсь.

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

Ну во вторых посмотрите, что у Вас в $tovID и попробуйте выполнить oid=значению $tovID. Может ничего и нет.

oid - это ID объекта в логе.
$tovID - это id товара.

В таблице однозначно есть oid со значением больше, чем какой-либо id товара. Проверял вручную.

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

Плюс ко всему я так полагаю, что $tovId ко всем подойти не может, т.к. Вы строите запрос к разным таблицам. Каждому ORM объекту соответствует свой ORM объект.

Понимаю, но никакого в принципе результата не появляется.

На данный момент решение задачи выполнено сторонним скриптом вне CMS. Но для развития хотелось бы понять в чём причина.



Далее для информации, если => тогда ничего, если =, тогда 503:

{assign var="tovID" value=51466}
{static_call var=CountSP callback=['\Catalog\Model\Orm\LogtypeAbstract', 'loadByWhere'] params=[['oid'={$tovID}]]}

Выходит:

Исключение - "Syntax error in template "rs:public_html/templates/newgo/moduleview/catalog/product.tpl" on line 288 "{static_call var=CountSP callback=['\Catalog\Model\Orm\LogtypeAbstract', 'loadByWhere'] params=[['oid'={$tovID}]]}" - Unexpected "=", expected one of: "","" , "]""
Код ошибки:    0
Тип ошибки:    SmartyCompilerException
Файл:    public_html/core/smarty/sysplugins/smarty_internal_templatecompilerbase.php
Строка:    288
Стек вызова:    

#0 public_html/core/smarty/sysplugins/smarty_internal_templateparser.php(2819): Smarty_Internal_TemplateCompilerBase->trigger_template_error()
#1 public_html/core/smarty/sysplugins/smarty_internal_templateparser.php(2880): Smarty_Internal_Templateparser->yy_syntax_error(15, '=')
#2 public_html/core/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(128): Smarty_Internal_Templateparser->doParse(15, '=')
#3 public_html/core/smarty/sysplugins/smarty_internal_templatecompilerbase.php(466): Smarty_Internal_SmartyTemplateCompiler->doCompile('{$canonical_url...', true)
#4 public_html/core/smarty/sysplugins/smarty_internal_templatecompilerbase.php(395): Smarty_Internal_TemplateCompilerBase->compileTemplateSource(Object(Smarty_Internal_Template), false, NULL)
#5 public_html/core/smarty/sysplugins/smarty_template_compiled.php(184): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template))
#6 public_html/core/smarty/sysplugins/smarty_template_compiled.php(141): Smarty_Template_Compiled->compileTemplateSource(Object(Smarty_Internal_Template))
#7 public_html/core/smarty/sysplugins/smarty_template_compiled.php(105): Smarty_Template_Compiled->process(Object(Smarty_Internal_Template))
#8 public_html/core/smarty/sysplugins/smarty_internal_template.php(216): Smarty_Template_Compiled->render(Object(Smarty_Internal_Template))
#9 public_html/core/smarty/sysplugins/smarty_internal_templatebase.php(238): Smarty_Internal_Template->render(false, 0)
#10 public_html/core/smarty/sysplugins/smarty_internal_templatebase.php(116): Smarty_Internal_TemplateBase->_execute(Object(Smarty_Internal_Template), NULL, NULL, NULL, 0)
#11 public_html/core/rs/controller/result/standard.inc.php(264): Smarty_Internal_TemplateBase->fetch('product.tpl')
#12 public_html/core/rs/controller/result/standard.inc.php(291): RS\Controller\Result\Standard->getHtml()
#13 public_html/core/rs/controller/abstractcontroller.inc.php(175): RS\Controller\Result\Standard->getOutput()
#14 public_html/core/rs/controller/abstractclient.inc.php(82): RS\Controller\AbstractController->processResult(Object(RS\Controller\Result\Standard))
#15 public_html/core/rs/controller/abstractcontroller.inc.php(160): RS\Controller\AbstractClient->processResult(Object(RS\Controller\Result\Standard))
#16 public_html/core/rs/controller/abstractmodule.inc.php(278): RS\Controller\AbstractController->exec(false)
#17 public_html/core/rs/controller/front.inc.php(89): RS\Controller\AbstractModule->exec(false)
#18 public_html/core/rs/router/manager.inc.php(431): RS\Controller\Front->exec()
#19 public_html/core/rs/router/manager.inc.php(454): RS\Router\Manager->applyRoute(Object(RS\Router\Route))
#20 public_html/index.php(25): RS\Router\Manager->dispatch()
#21 {main}

9

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

Андрей пишет:

Спасибо за участие, но ваш пример тоже не переадресует браузер на нужную ссылку, адрес остаётся прежним и открывается главная страница, кэш браузера естественно чищу


Тогда такой вариант.

RewriteEngine on
RewriteCond %{QUERY_STRING} ^order_id\=(.*)$ [NC]
RewriteRule ^(.*)$ /onlinepay/doPay/?order_id=%1 [L,NE]

В браузере URL не будет меняться.

Подскажите каким образом можно получить данные в шаблоне из таблицы pfx_users_log

Пробовал

{static_call var=DataLog callback=['\Catalog\Model\Orm\LogtypeAbstract', 'loadByWhere'] params=[['oid'=>{$tovID}]]}
{static_call var=DataLog callback=['\Catalog\Model\LogtypeAbstract', 'loadByWhere'] params=[['oid'=>{$tovID}]]}

{static_call var=DataLog callback=['\Users\Model\Orm\Log', 'loadByWhere'] params=[['oid'=>{$tovID}]]}

Первые два - ничего не возвращают.

Последний 503 ошибка.

Вероятно, нужно по-другому составить запрос.

11

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

Попробуйте такой вариант

RewriteCond %{QUERY_STRING} (?:^|&)order_id\=(.*)(?:$|&)
RewriteRule ^$ /onlinepay/doPay/?%{QUERY_STRING}

При генерации страницы через конструктор, образуется много лишних пробелов., табов, переносов.

строки, секции, блоки.


Не могу понять, как и где можно отредактировать это
https://55opt.org/storage/tmp/s1.jpg

вот что выходит в исходном коде
https://55opt.org/storage/tmp/s2.jpg

Максим пишет:

Спасибо, помогло.

Только товар выводиться - 180.000 штук

Как сделать чтобы выводилось -  180 штук  ?

Без 000 нулей или чтобы вместо 180.000 было 180,000  т.е.  запятая вместо точки





           

{$stock[$warehouse.id][0]['stock']|number_format:0:",":""}

Уважаемые гуру  ReadyScipt - помогите, что не так?

Максим пишет:

Помогите пожалуйста.   Нужно вывести в карточке товара, наличие товара на складе в штуках(10шт), а не с помощью индексации как сейчас?   Использую классическую тему.

Вам нужен следующий код

{assign var=stick_info value=$product->getWarehouseStickInfo()} 
{assign var=stock value=$product->getWarehouseStock()}   
    {if !empty($stick_info.warehouses)}
     <ul>
     {foreach from=$stick_info.warehouses item=warehouse}
         <li>{$warehouse.title}: <b>{if $stock[{$warehouse.id}][0]['stock']>0}{$stock[$warehouse.id][0]['stock']}
            {else}Нет в наличии{/if}</b>
         </li>
     {/foreach}
     </ul>
   {/if}

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

Станислав пишет:

Разобрался. Всё очень просто оказалось. Вот как я сделал. Может кому пригодится:

1. Создал в справочнике цен ещё одну цену под названием "Без скидки" с указанием цены вручную;
2. В настройке модуля "Каталог товаров" проставил "Цена по умолчанию - Розничная", "Старая(зачеркнутая) цена - без скидки".

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

Верно говорите, когда делал себе таким образом столкнулся с проблемой, что у новых товаров в системе "Цена вручную" -становится 0 по умолчанию. На сайте выходило
Старая цена 0.00
Использовал такую конструкцию, для обхода этой проблемы:

{if $old_cost && $old_cost != "0.00" && $old_cost != $realCost}Старая цена: {$old_cost}{/if}

Может кому-то пригодится.

17

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

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

Приведенный код прсто копирует адрес обращения к станице внутрь тега

В моем случае так
<link rel='canonical' href='https://сайт.ru/product/motornoe-maslo-mobil-super-3000-x1-5w-40-4-l-1l/?_openstat=абракатабра'/>

а нужно чтобы при любом обращении было так
<link rel='canonical' href='https://сайт.ru/product/motornoe-maslo-mobil-super-3000-x1-5w-40-4-l-1l-41690/>

В общем приведенный код не решает задачу прописки канонических страниц для всех уникальных страниц сайта.
Какие еще есть инструменты? Нужно отсечь все дубли которые так или иначе попали в индекс.


Попробуйте использовать следующую конструкцию

https://{$smarty.server.HTTP_HOST}{strtok($smarty.server.REQUEST_URI,'?')}

Здравствуйте, подскажите как получить все возможные значения характеристики по её ID

Пытался сделать так:

1)

{static_call var=vse_value callback=['\Catalog\Model\Orm\Property\ItemValue, 'getValueById'] params=386}
{$vse_value|print_r}

2)

{static_call var=vse_value callback=['\Catalog\Model\Orm\Property\ItemValue', 'loadByWhere']  params=[['prop_id'=>386]]}
{$vse_value|print_r}

3)

{static_call var=vse_value callback=['\Catalog\Model\Orm\Property\Item', 'valuesArr'] params=[['value_ids'=>386, 'cache' => TRUE]]}
{$vse_value|print_r}

Но выдаёт не то, что требуется.

Будьте добры направить в нужное русло меня.

19

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

На данный момент достигнут следующий результат

Главная страница
Ответ "https://55opt.org" → Основной робот Яндекса
Код статуса HTTP    200 OK
Время ответа сервера    202мс
IP сайта    45.80.69.246
Кодировка    UTF-8(unicode-1-1-utf-8, UTF8)
Размер страницы    161,18КБ

И страница "Каталог товаров"
Ответ "https://55opt.org/catalog/all/" → Основной робот Яндекса
Код статуса HTTP    200 OK
Время ответа сервера    244мс
IP сайта    45.80.69.246
Кодировка    UTF-8(unicode-1-1-utf-8, UTF8)
Размер страницы    347,54КБ


В RS сделано:
Настройка КЭШ - вкл (кэш Smarty не вкл, так как это вредит функционалу сайта)
Сжатие и объединение JS и CSS

Доп. сделано на VPS
Настройка apache кэширования
Настройка MySQL Query Cache

Андрей пишет:

В шаблоне

moduleview / catalog / product.tpl

после кода

        {hook name="catalog-product:information" title="{t}Карточка товара:краткая информация{/t}"}
            {if $product.barcode}
            <p class="attribute">{t}Артикул:{/t} <span class="offerBarcode">{$product.barcode}</span></p>
            {/if}
            {if $product.brand_id}
            <p class="attribute">{t}Бренд:{/t} <a class="brandTitle" href="{$product->getBrand()->getUrl()}">{$product->getBrand()->title}</a></p>
            {/if}                
        {/hook}

вставляем следующий блок:

<div class="info_div">
    <div class="delivery knopka">
        <span>Доставка</span>
        <div class="hide_info">
            <ul>
            <li><strong>Самовывоз:</strong> Адрес Вашего склада</li>
            <li><strong>Курьером:</strong> Условия доставки</li>
            <li><strong>По стране:</strong> Без проблем доставим</li>
            </ul>
        </div>
    </div>
    <div class="pay knopka">
        <span>Оплата</span>
        <div class="hide_info">
            <ul>
            <li><strong>Наличные:</strong> Принимаем купюры и монеты</li>
            <li><strong>Безналичные:</strong> Оплата любой картой</li>
            </ul>
        </div>
    </div>
    <div class="other knopka">
        <span>Прочее</span>
        <div class="hide_info">
            <h3>Заголовок для совсем других данных</h3>
            <p>Здесь описание абсолютно любой информации</p>
        </div>
    </div>
</div>

Данные в блоках hide_info меняем на Ваши.


В стилях css style.css

Добавляем код:

.info_div {
    width: 100%;
    display: flex;
position:relative;
}

.knopka {
    width: 30%;
    padding: 5% 10%;
    cursor: help;
    font-size: 20px;
}
.knopka:hover {
    background: #ccc;
}
.knopka:hover .hide_info {
    display: block;
    width: 100%;
    position: absolute;
    left: 0;
    z-index: 1;
    background: #ccc;
    padding: 5%;
}


Обновите кэш

После артикула
появится информационный блок, при наведении будут показаны подробности.

В шаблоне

moduleview / catalog / product.tpl

после кода

        {hook name="catalog-product:information" title="{t}Карточка товара:краткая информация{/t}"}
            {if $product.barcode}
            <p class="attribute">{t}Артикул:{/t} <span class="offerBarcode">{$product.barcode}</span></p>
            {/if}
            {if $product.brand_id}
            <p class="attribute">{t}Бренд:{/t} <a class="brandTitle" href="{$product->getBrand()->getUrl()}">{$product->getBrand()->title}</a></p>
            {/if}                
        {/hook}

вставляем следующий блок:

<div class="info_div">
    <div class="delivery knopka">
        <span>Доставка</span>
        <div class="hide_info">
            <ul>
            <li><strong>Самовывоз:</strong> Адрес Вашего склада</li>
            <li><strong>Курьером:</strong> Условия доставки</li>
            <li><strong>По стране:</strong> Без проблем доставим</li>
            </ul>
        </div>
    </div>
    <div class="pay knopka">
        <span>Оплата</span>
        <div class="hide_info">
            <ul>
            <li><strong>Наличные:</strong> Принимаем купюры и монеты</li>
            <li><strong>Безналичные:</strong> Оплата любой картой</li>
            </ul>
        </div>
    </div>
    <div class="other knopka">
        <span>Прочее</span>
        <div class="hide_info">
            <h3>Заголовок для совсем других данных</h3>
            <p>Здесь описание абсолютно любой информации</p>
        </div>
    </div>
</div>

Данные в блоках hide_info меняем на Ваши.


В стилях css style.css

Добавляем код:

.info_div {
    width: 100%;
    display: flex;
position:relative;
}

.knopka {
    width: 30%;
    padding: 5% 10%;
    cursor: help;
    font-size: 20px;
}
.knopka:hover {
    background: #ccc;
}
.knopka:hover .hide_info {
    display: block;
    width: 100%;
    position: absolute;
    left: 0;
    z-index: 1;
    background: #ccc;
    padding: 5%;
}

22

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

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

Буду искать инструменты для автоматической транслитерации каталога тогда.

Зайдите в

Настройка модуля «Каталог товаров»

Справа Утилиты

Там есть пункт
Добавить ЧПУ имена товарам и категориям
Добавит символьный идентификатор (методом транслитерации) товарам и категориям, у которых он отсутствует.

Да будет Вам счастье

Андрей пишет:

после своего значение добавляет:
"МОЙ ТАЙТЛ :: Название пункта"

Как убрать
:: Название пункта
из TITLE?



{$app->title->addSection('ВАШ title',0,'replace')|devnull}

24

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

Евгений пишет:

Подскажите, в какое именно место в list_products.tp вставлять код от постраничности?

Можно в начале этого файла.

25

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

Помогите понять в чём проблема:

Зашёл на CMS Ma***zine - выбрал Вашу CMS (проекты на Readyscript)

С помощью сервиса https://webmaster.yandex.ru/tools/server-response/

Проверяю время ответа сервера

У большинства свыше 600мс (попадались даже 1400мс (indexq))

Но есть некоторые сайты у которых 140-150мс.

Сайт на VPS - нагружен менее чем на половину ресурсов.

Время ответа сервера:

HTML - 24 мс
Joomla - 122 мс
Readyscript - 500-800 мс (чаще всего около 600мс) -

Изменение настроек Readyscript (кэширование, сжатие CSS, сжатие JS) - результата не дают. время ответа сервера в тех же пределах.

Подскажите что можно в RS изменить, чтобы время ответа сервера уменьшилось?


P.S. upd 09.04.2020

Отключив на главной странице модули с товарами
Остались "Меню", "Категории", "Баннеры", "Новости" -
Время ответа сервера 220-240мс.
Добавление одного модуля, например "Товары из нескольких категорий"
Сразу время ответа сервера 500-600мс и выше.