Если у вас тема Классическая, то шаблон расположен в папке модуля Каталог:
/modules/catalog/view/blocks/recommended/recommended.tpl

Если у вас тема НЕ Классическая, то шаблон расположен в папке темы оформления:
/templates/{ВАША ТЕМА}/moduleview/catalog/blocks/recommended/recommended.tpl

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

Ваш вариант - хороший, можно было и чуть проще сделать.

У баннера есть поле произвольный текст. Которое можно использовать для размещения любых данных на баннере.
Просто условьтесь, что первая строка - это название кнопки,
вторая - дополнительный текст, выводимый на баннере.

Далее в шаблоне вы можете разбить описание по строкам, например: {$lines = explode("\n", $banner.info)}
и использовать {$lines.0} {$lines.1} .... Просто такой вариант затрагивает чисто шаблон и не требует лезть в PHP.

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

Да, создайте в корне сайта файл _local_settings.php с содержимым:

<?php
\Setup::$TIMEZONE = 'Europe/Moscow'; //Только тут укажите ваш часовой пояс.

Список часовых поясов
http://php.net/manual/ru/timezones.php

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

Создайте, пожалуйста,  пожелание в нашем сервисе http://helpdesk.readyscript.ru/wish/, мы активно используем наш сервис при составлении списка задач на реализацию.

Эта задача на самом деле намного глубже, чем кажется на первый взгляд. Если говорить о полной реализации складского учета, то должны быть разделы, позволяющие заводить документы - поступление товаров, перемещение, списание товаров. Нужна возможность контролировать текущие "перемещаемые" товары, должна быть возможность отмечать завершение перемещения.  Должна быть возможность видеть нуждающиеся в перемещении товары на основе заказов.

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

Спасибо за развернутое предложение.

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

Когда суммарный остаток товара = 0, товар все равно нельзя заказать. Это говорит о том, что товар продан. Возможно нужно обнулять все показатели рисок в случае общего остатка = 0, или вовсе не показывать данный блок (делается добавлением одной строки в шаблоне), подумаем над этим.

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

3. Сейчас остатки изменяются при создании заказа, и при его отмене. В следующих версиях добавим возможность пересчета остатков при редактировании заказа.

Хочу заметить, в случае, если вы будете использовать 1С, весь складской учет будет вестись на стороне 1С, все остатки по комплектациям будут приходить с каждым обменом из 1С.

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

imldelivery - это ваш частный модуль (не нашего производства), вам нужно соответственно заглянуть в файл W:\home\shop-wear.com\www\modules\imldelivery\config\handlers.inc.php на строку 76 и посмотреть что за "syntax error" там присутствует.

Да, их изменять не нужно, в config.auto нужно править только доступы к БД.

Разделения уведомлений по разным админам в системе - нет.

Ваша задача решается разработкой простого модуля, который будет подвешиваться на отдельные события (создание заказа, создание покупки в 1 клик) и отправлять собственные уведомления Менеджерам.

В системе есть все необходимое для быстрого создания объектов "Уведомления" и подвешивания на различные события.

536

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

Это файлы форм, которые вы в админке открываете. Они генерируются автоматически и обновляются автоматически, не обращайте на них внимание, нужны для ускорения работы системы.

Если вы пользуетесь системой контроля версий, то *.auto.tpl нужно внести в игнор, чтобы не мешались при комитах.

Добрый день!

Вы можете включить объединение JS скриптов и если в вашей тебе оформления нигде нет вызовов JS непосредственно в теле HTML, а только все во внешних файлах, то можете включить опцию "Размещать по-умолчанию инструкции подключения скриптов внизу страницы".

Если же в теле HTML есть вызовы JS, то наврное вам понадобится принудительно jquery перенести в head, для этого в месте подключения jquery в layout.tpl вашей темы у конструкции {addjs file="jquery.min.js"} нужно добавить атрибут header="true".

У нас в стандартных шаблонах карточки товаров есть вывод остатков по складам, вы можете оттуда взять весь код.
Убедитесь, что у складов в админ.панели установлен флажок "Показывать склад в карточке товара".

Павел пишет:

Я все установил, но меня редиректит с локальной версии на внешний сайт. Как быть?
htaccess "родной"...

Вероятно у вас в админ. панели в разделе Управление->Сайты, у сайта установлен флаг "перенаправлять на основной домен", а основной домен прописан в боевой зоне. Если это так, то вам нужно установить поле redirect_to_main_domain=0 в таблице ...sites в БД, и очистить кэш браузера после этого.

Добрый день.
У меня ситуация обратная. Есть боевой сайт (лицензия ит.п.), мне надо развернуть его локальную копию (под Денвером). Скопировал файлы, развернул бэкап базы ,изменил config_auto.php и получил в результате сообщение: "Нарушение защиты. Скрипты не соответствуют базе данных".
Что я не так сделал и как это можно исправить?

Такая ошибка может быть только, если вы файлы развернули из дистрибутива, а базу данных перенесли из боевого сайта. Вам нужно все файлы перенести с вашего рабочего сервера и оттуда же взять базу, затем поправить config_auto и удалить папку /cache в корне.

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

RSS каналом автоматически становится категория статей.
Если у вас есть категория статей, например Новости с псевдонимом news, то у вас обязательно будет RSS канал
/rss-news/

Если речь идет о блоке \Catalog\Controller\Block\Category, т.е. о шаблоне category.tpl, то внутри шаблона у вас всегда доступна $pathids, в которой содержится массив из ID текущего элемента и всех его родителей.

Соответственно, проверяя с помощью in_array(), находится ли ID категории в списке $pathids - вы можете узнать активна ли она сейчас.

           {foreach from=$dirlist item=dir}
            <li {if in_array($dir.fields.id, $pathids)}class="act"{/if}>{$dir.fields.name}
                <ul>
                    {foreach from=$dir.child item=item}
                    <li {if in_array($item.fields.id, $pathids)}class="act"{/if}>{$item.fields.name}</li>
                    {/foreach}
                </ul>
                {/if}
            </li>
            {/foreach}

А дальше уже с помощью CSS, реализовывайте любое отображение

542

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

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

На loaddy.com результаты пляшут, нужно проводить по несколько замеров:
http://loaddy.com/result/816068968/

Включили expires и gzip для статики
https://developers.google.com/speed/pag … ab=desktop

Хм. Вы не совсем корректно проводите сравнение.
По сути вы сравниваете не время ответа сервера (т.е. исполнения PHP кода, работы движка), а скорость загрузки всех ресурсов темы оформления. Т.е. вы сравниваете темы оформления.

На нашей странице 64 объекта подгружаются, а на opencart только 32. Невооруженным взглядом видно, что на странице opencart меньше объектов находится. На нашей странице больше картинок, шрифт подгружается, и т.д. Вы уж для чистоты эксперимента, доведите количество объектов на нашей странице и opencart до одинакового и тогда сравнивайте. Вы нашу страницу можете сконфигурировать как угодно по составу элементов, соответственно чем больше элементов тем больше им времени нужно на загрузку.

А вот насчет времени ответа сервера, несмотря на то, что главная страница opencart содержит меньше блоков, она значительно дольше отдается сервером. Скриншоты:

https://www.dropbox.com/s/cdndjedm9qxowbg/rs_speed.jpg?dl=1
https://www.dropbox.com/s/rvexgncxm591co3/opencart_speed.jpg?dl=1

Что касается вашего вопроса по оптимизации - мы ею занимаемся постоянно, в следующем обновлении, например, будет немного улучшено время ответа страницы со списком товаров, за счет оптимизации некоторых участков кода API товаров.

P.S. На ваших скриншотах видно, что по первому показателю PageSpeed Score - у нас оценка выше, по второму YSlow Score - у темы Opencart немного выше, но обе оценки - если внимательно почитать сервис - выше средних, т.е. очень хорошие.

Добрый день!

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

1. Чтобы перегрузить шаблоны, находящиеся в папке /template/system/, нужно создать папку /template/mysystem/ и повторить в ней полный путь к изменяемому файлу. Например, если хотите изменить файл:

/template/system/admin/body.tpl - нужно скопировать его в
/template/mysystem/admin/body.tpl - и его уже править

2. Вам не нужно изменять системные CSS, добавляйте в перегруженные вами шаблоны новую инструкцию по подключению CSS - {addcss file="my_new_css.css" basepath="common"}. В подключенном файле вы уже можете перегрузить системные инструкции CSS. Или перегружайте TPL файлы, где подключаются CSS файлы и изменяйте в них имя подключаемых CSS файлов

Например, эта конструкция в TPL шаблоне: {addcss file="my_style.css" basepath="common"}
подключит файл /resource/css/my_style.css

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

3. Есть сложный способ, не буду его описывать (это можно реализовать из доп. модуля с помощью многих действий)
Пожалуй, вам проще создать .my.inc.php для класса RS\Html\Filter\Type\Text

И просто перегрузить в нем конструктор

В итоге получится: /core/rs/html/filter/type/text.my.inc.php

<?php
namespace RS\Html\Filter\Type;

class Text extends AbstractType
{
    public 
        $tpl = 'system/admin/html_elements/filter/type/string.tpl';
        
    protected
        $search_type = 'eq';

    function __construct($key, $title, $options = array())
    {
        parent::__construct($key, $title, $options);
        $this->type_array = array(3 => t('равно'), 1 => t('меньше, чем'), '2' => t('больше, чем'));
    }

}

Попробуйте провести тендер на нашем сайте https://readyscript.ru/partners/tender/

Попробуйте биндиться на событие изменения товара orm.beforewrite.catalog-product
Там в поле excost будут все сведения о цене.

excost (extended Xcost) - это массив с данными по ценам товара

public static function ormBeforewriteCatalogProduct($params, $event)
    {     
          $product = $params['orm']; 
          var_dump($product['excost']);
    }

Вы можете в шаблон view_article.tpl вставить блок с выводом последних новостей из той же категории, что и просматриваемая статья:
{moduleinsert name="\Article\Controller\Block\LastNews" category=$article.parent pageSize=3}

Но логика данного блока не предусматривает исключение какой-либо статьи, поэтому вы можете разработать свой блок контроллер с логикой выборки статей, необходимой для вашего случая. За основу можете взять \Article\Controller\Block\LastNews

549

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

Здесь не никакой ошибки в логике:
1. Если у вас заведен вручную краткий текст, то выводится именно он без обрезки.
2. Если краткий текст не заведен, то выводится обрезанный полный текст.

Если вы хотите всегда обрезать текст, то вам необходимо воспользоваться модификаторами Smarty:
{$item->getPreview()|truncate:"50"}

http://www.smarty.net/docsv2/ru/languag … uncate.tpl

Вы можете вставить проверку, подвесившись на событие orm.delete.shop-order

Остановить удаление можно в обработчике события примерно так:

<?php
namespace Modulename\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this->bind('orm.delete.shop-order');
    }
    
    public static function ormDeleteShopOrder($param, \RS\Event\Event $event) {
        $current_user = \RS\Application\Auth::getCurrentUser();
        
        if (!in_array('supervisor', $current_user->getUserGroups())) {
            //Если пользователь не состоит в группе supervisor
            $event->stopPropagation();
        }
    }
}