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

В шаблоне

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%;
}

3

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

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

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

Зайдите в

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

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

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

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

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

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

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



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

5

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

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

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

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

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

Зашёл на 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мс и выше.

Таблица в базе
pfx_users_log

Класс
Catalog\Model\Logtype\ShowProduct


Как можно отключить добавление этих записей?

8

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

Polo Art пишет:

Интересная ситуация. На обычном качественном виртуальном хостинге каждые сутки есть резервная копия.
И откатиться можно одним кликом.
Мне очень хочется узнать, как там в облаке RS - можно ли клиенту откатиться одним кликом на вчерашнюю версию?

***

Я не стебусь. Просто у нас каждые сутки производится резервная копия. Но, кучей, на всё разом. И, если кому-то надо откатиться, то это делается вручную, в том числе, я это делаю.
Клиенту не дано где-то нажать кнопочку и восстановить его сайт на определенную дату. Это подразумевает неплохие работы над внутренним интерфейсом - и, честно говоря, на разработке пусть копии создаются, а дальше мы отпускаем клиентов в свободное плавание.

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

9

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

Предлагаю вариант:
Делаете лого в формате webp или ином какой Вам больше нравится.
Сжать картинку максимально без потери в качестве.

Вставить в шаблон не через Настройки сайта, а напрямую указать путь к файлу на хостинге (облаке)
Тогда точно не изменится качество.

10

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

Анна пишет:

Это возможно сделать? И если да, то где?

Да, возможно. Вносите правки в этом файле.

{if $order->getStatus()->id==4 } 

Сюда вставить код, для статуса Новый

{else}

Сюда для остальных статусов

{/if}

{* где 4 - это id статуса "НОВЫЙ" *}

11

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

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

Добрый день, как мне вывести на карточку товара цену розничную и закупочную цену одновременно, но что бы было не доступно для групп пользователей Гость и Клиент?


Поясните - нужно вывести закупочную цену, для администратора?

12

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

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

Можно как то все подробно
куда зайти и что вставить

а то в программирование я нуль)


Зависит от того, какая у Вас тема?

Но скорее всего нужно вносить правки в файл шаблона

/moduleview/catalog/product.tpl

13

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

Как выделить пользователей из определённой группы

{if $current_user->inGroup('Название_группы_пользователей')}

код вывода цены для пользователей из определённой группы

{else}

код вывода цены для всех, кто не в группе

{/if}

Как проверить гость или зарегистрированный пользователь?

{if $is_auth}

Код для зарегистрированных.
P.S. Вышеуказанный код можно вставить сюда, для разделения на группы зарегистрированных пользователей (при необходимости)

{else}

Код для гостей

{/if}

Как вывести определённую цену?

{$product->getCost('xPrice',null,false)|number_format:2:",":""}

При этом xPrice - название "Типа цены"
number_format:2 - вывод цены до сотых (если 0, до целых)

Polo Art пишет:

Ух ты, таблицы!!!
На мобиле распирает таблицами страницу.

Если таблица нужна именно такой структуры, то можно добавить: overflow-x: auto; у div в котором Ваша таблица.

<div style="overflow-x: auto;">
<table ....

Первый код возвращает просто все спецкатегории

Второй код возвращает

<pre>
NULL
</pre>

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

{$list_xdir = $product.xdir}
{foreach $list_xdir as $v_xdir} 
    {$category_alias=$this_controller->request('category','string')} 
    {static_call var=xcat callback=['\Catalog\Model\Orm\Dir', 'loadByWhere'] params=[['id'=>$v_xdir]]} 
<a href="/catalog/{$xcat.alias}/">{$xcat.name}</a>
{/foreach}

А вот с автокатегориями пока никак не выходит

Какая у Вас тема?
Пришлите ссылку на статью

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

Как получить в карточке товара:
1) Спец категории, в которых состоит товар
2) автоКатегории, в которых состоит товар (через "Подбор товаров")

Косяк оказался в устаревшей версии rs.filter.js в скопированной теме.

Обновил всё заработало.

Но если много характеристик и значений - лучше не делать.
Получается десятки (а может и сотни) тысяч страниц - которые либо нужно через SEO - контроль прописать уникальные мета-данные, - ЛИБО дубли.

Но с функционалом разобрался. Спасибо за подсказки от всех выше.

Ключевые моменты выделены жирным, особенно {if $prop_value==$value}, чтобы URL не для всех возможных вариантов на карточке товара, а только для конкретного товара - упустили выше :

{$maindir=$product->getMainDir()}
{$url=$maindir->getUrl()} {* Получаем нужный адрес *}

    <tbody>
        {foreach $product->fillProperty() as $data}
                {$dataGroup = $data.group.title}
                {foreach $data.properties as $property}
                    {$prop_value = $property->textView()} {if !$property.hidden && $prop_value != ''}
{$values_objects=$property->getAllowedValuesObjects()}
                            
                    <tr class="tab-content_table_character-text">
                        <td><span>{$property.title} {if $property.unit}({$property.unit}){/if}</span></td>
                        <td><span>
                            {foreach $property->getAllowedValues() as $key => $value}
                            {$proper = $values_objects[$key].alias}
                            {if $prop_value==$value}
                            <a href="{$url}{$property.alias}_{$proper}/">{$value}</a>
                            {/if}
                            {/foreach}    

Здравствуйте. Подскажите как вывести количество товаров в категории, создаваемой с помощью подбора товаров?

20

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

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

Сейчас так:

В разделе: "Каталог товаров", нужно нажать кнопку "Импорт/экспорт", в выпадающем списке "Импорт товаров из CSV"

Далее откроется окно где после чтения файла, нужно сопоставить колонки, и нажать начать импорт.

Вопрос:

Как можно сделать, чтобы RS запускала импорт через CSV например раз в сутки из директории на хостинге.
Во-вторых опустить сопоставление, так как импорт отлажен и все колонки должны быть загружены.

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

Ну можно так, но это с потерей поддержки тогда будет. Лучше сделать отдельным модулем и относледовать класс в Вашем модуле. Так будет лучше всего.

К сожалению, пока это не умею делать.


Что значит с потерей поддержки? Обновления не будет?

Как вариант Вы можете использовать в шаблоне, условия по номеру дня недели

{assign var="WeekDay" value=$smarty.now|date_format:'%w'}

{if ($WeekDay==4)}

шаблон вывода акции для четверга

{elseif ($WeekDay==2) or ($WeekDay==6)}

шаблон для ВТОРНИКА или СУББОТЫ

{else}

остальные дни

{/if}

Сам разобрался.

Всё было просто:

Создаём файл

commonoffertype.my.inc.php

в папке рядом с

commonoffertype.inc.php

Подскажите, как лучше сделать:

Мне необходимо в стандартный экспорт "Яндекс.Маркет", добавить определённые поля, чтобы получался файл с несколькими ценами.

Сделал нужные изменения в файле
commonoffertype.inc.php

modules/export/model/exporttype/yandex/offertype/commonoffertype.inc.php

Предполагаю, что при обновлении модуля, все мои изменения сотрутся.

Как можно сделать переопределение этого файла, чтобы при обновлении ничего не пропало.

Может быть можно как то сделать ещё один тип выгрузки, например "МойЯндекс.Маркет", чтобы при обновлении он не затирался.

{$app->meta->addKeywords($metaK,',','before')|devnull}
{$app->meta->addDescriptions($metaD,',','before')|devnull}

не дублирует теги

{$app->title->addSection($metaT,',','before')|devnull}

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