Создавать поле необязательно. В smarty же есть метод templateExists, который можно вызвать и в шаблоне, нужно искать кастомный шаблон и если его нет, то подключать дефолтный. И никаких проблем, просто формируете имя шаблона product_property_{$product->getMainDir()->alias}.tpl
101 03.10.2020 14:29:19
Re: Другой шаблон карточки товара для конкретной категории (10 ответов, оставленных в Вопросы по созданию тем оформления)
102 30.09.2020 13:22:49
Re: Другой шаблон карточки товара для конкретной категории (10 ответов, оставленных в Вопросы по созданию тем оформления)
нет, на странице просмотра товара нужен совсем другой код.
в product.tpl:
{if $product->getMainDir()->alias == 'test'}
{include file="%catalog%/property_type_test.tpl"}
{else}
{include file="%catalog%/property_type_default.tpl"}
{/if}
Создайте шаблоны
- /moduleview/catalog/property_type_default.tpl - для стандартного вывода характеристик.
- /moduleview/catalog/property_type_test.tpl - для кастомного вывода характеристик.
103 29.09.2020 20:40:44
Re: Другой шаблон карточки товара для конкретной категории (10 ответов, оставленных в Вопросы по созданию тем оформления)
другой по стилю вывод характеристик - в фильтре имеется ввиду?
Если да, то речь значит идет о шаблоне /moduleview/catalog/blocks/sidefilters/filters.tpl
текущая категория на странице каталога записывается в кастомное extra свойство текущего маршрута.
То есть получить объект категории можно так:
{if $router->getCurrentRoute() == 'catalog-front-listproducts'} {*Проверка что мы находимся на странице категории*}
{$dir = $router->getCurrentRoute()->getExtra('category')} {* Получаем текущую категорию *}
{if $dir.alias == 'test'} {* Проверяем что alias текущей категории = test *}
{$customStyle = true} {* Делаем что нам нужно *}
{/if}
{/if}
104 23.09.2020 19:38:05
Re: Зачёркнутая старая цена с разной скидкой для разных товаров (5 ответов, оставленных в Предложения по улучшению системы)
В этой новости есть c картинками:
https://readyscript.ru/text-blog/novyy- … mozhnosti/
105 02.09.2020 14:58:34
Re: Тег rel canonical (14 ответов, оставленных в Вопросы по работе с системой)
Если позволите, выскажу свое мнение.
Люблю иногда почитать оригинальное описание того, для чего разрабатывался тег rel="canonical" в RFC 6596.
https://tools.ietf.org/html/rfc6596
to specify the single-page version as preferred over the same content separated on multiple component pages.
--------------
Тег rel="canonical" нужен исключительно для того, чтобы делать ссылки от дублирующего частного к общему.
Например, у вас есть одна страница со всеми товарами и есть страницы с этими же товарами с пагинацией, соответственно rel="canonical" должен указывать на страницах с пагинацией на страницу со всеми товарами.
--------------
Различные страницы пагинации - это не дублирующийся контент, если у вас нет общей страницы (на каждой странице - разные товары). Указывая ссылку на первую страницу - вы просто отрезаете от индексирования все остальные страницы каталога, кроме первой и все. SEOшники обычно ставят галочку - rel=canonical применили, задача закрыта, но это ведь не так!
В RFC прямо сказано про пагинацию, то о чем я пишу выше:
* As an example, each component page (e.g., page-1.html, page-
2.html) of a multi-page article MAY specify the "view-all"
version (e.g., page-all.html), the superset of their content,
as the target IRI. This is because the content from each
component page is contained within the view-all version. Given
this implementation, applications can mark page-1.html and
page-2.html as duplicates of page-all.html, process content
only from page-all.html, and disregard the component pages.
All references can then be made to the view-all version (page-
all.html, the target IRI), and no content will have been lost
in this process.* Using the same example above, page-2.html SHOULD NOT designate
page-1.html as the target (canonical) IRI because this may
cause a loss of data. When page-2.html designates page-1.html
as the canonical, only content from the target IRI, page-
1.html, will be processed. page-2.html may be marked as a
duplicate of page-1.html and its content disregarded.
Просто жалко ваши сайты, когда что-то делается на них без понимания того, для чего в деталях это делается.
106 26.08.2020 22:46:14
Тема: Плановое обслуживание серверов 28.08.2020 c 21:00 до 03:00 (0 ответов, оставленных в Новости проекта)
Уважаемые пользователи!
В пятницу 28.08.2020 c 21:00 до 03:00 мы планируем провести плановое обслуживание наших серверов.
Во время проведения работ, возможны перебои в работе наших сервисов. Мы постараемся сделать все, чтобы перебои в работе были минимальны.
107 17.08.2020 21:10:10
Re: Сайт живет своей жизнью?! Видимо Да (10 ответов, оставленных в Вопросы по работе с системой)
Установите флажок напротив "Публичность" в настройке "Поля категории, которые не следует обновлять"
на вкладке "Каталог товаров - что следует обновлять" в настройках модуля Обмен данными с 1С (exchange)
108 16.08.2020 19:32:24
Re: Сайт живет своей жизнью?! Видимо Да (10 ответов, оставленных в Вопросы по работе с системой)
Нет,сайт не в облаке,на хостинге.Обновления остановил на 5-й версии
В таком случае, если ваш хостинг, например, не восстанавливал бекапы, не менял версию PHP, вы не устанавливали обновления - ничего не может самостоятельно изменяться на сайте. Программа одинаково работает всегда, кода для самоизменения настроек не существует в ReadyScript.
109 15.08.2020 01:14:06
Re: Сайт живет своей жизнью?! Видимо Да (10 ответов, оставленных в Вопросы по работе с системой)
Облако не для программистов, облако - готовый сервис. Клиенты облака в основном не знакомы с html, css, ftp и не желают в это погружаться.
110 14.08.2020 14:25:26
Re: Сайт живет своей жизнью?! Видимо Да (10 ответов, оставленных в Вопросы по работе с системой)
Daniel, в облаке происходят автоматические обновления, когда мы их выпускаем.
Автоматические обновления - не могут снимать галки в настройках, так как данные БД - не трогаются, только структура БД обновляется.
Если вы модифицировали системные шаблоны не по инструкции: https://readyscript.ru/dev-manual/dev_t … tends.html
То абсолютно все изменения будут возвращены в исходное состояние при обновлении.
111 06.08.2020 19:46:56
Тема: Добавили удобный поиск в раздел Мои заказы (1 ответов, оставленных в Новости проекта)
Теперь можно быстро найти заказ по:
1. Точному совпадению номера
2. ФИО клиента, на которого активирована лицензия по заказу
3. По номеру лицензии
4. По наименованию клиента, если вы его указали при оформлении заказа
5. По доменному имени, на которое активирована лицензия
В подробном просмотре заказа у активированных лицензий теперь отображен домен, на который они активированы.
В списке заказов выводится Клиент, который указан при оформлении заказа.
В общем, партнерам теперь будет проще ориентироваться в своих заказах, когда их переваливает за несколько десятков.
112 03.08.2020 13:17:38
Re: RS, Flatlines и чат Битрикс24 (2 ответов, оставленных в Вопросы по работе с системой)
Ярослав, добрый день!
Насколько мы понимаем, какой-то из компонентов Битрикс24 некорректно работает, если видит переменную global (была такая информация от одного клиента). Данная переменная необходима для работы ReadyScript, она обеспечивает трансфер в JS некоторых переменных из PHP. Это имя никем не зарезервировано и ее использование не запрещено.
--------
И на наш взгляд встраиваемые скрипты не должны зависеть ни от каких глобальных переменных.
Нужно писать в Битрикс24 по данному поводу. Ведь любой другой скрипт чата работает без проблем.
113 30.07.2020 17:40:20
Re: Заказ товаров с разных точек (15 ответов, оставленных в Вопросы по работе с системой)
Это понятно,т.е в функционале версии Гипермаркет невозможно отключить возможность заказа товара из разных магазинов?
Я даже не представляю как это с точки зрения пользователя может быть. Допустим есть товар:
1. Кружка - 3 шт. на складе А, 2 шт. на складе Б
2. Тарелка - 10 шт. на складе Б
Клиент же не обозначает где будет покупать, когда заходит на сайт в Гипермаркете и накидывает в корзину 4 кружки, 10 тарелок, потом идет в корзину нажимает кнопку оформить заказ, выбирает самовывоз со склада А и что дальше?
Система должна говорить, что корзину, которую собрал клиент невозможно забрать на складе А (всех товаров нет на этом складе)?
Ок, допустим, клиент переключает на склад Б и тоже видит, что корзину нельзя забрать на складе Б (всех товаров нет на этом складе тоже). Полный тупик.
Система же не может сама подменить корзину, изменить там количество - клиент будет повергнут в шок, если за него такое сделают, он же сам выбирал количество.
-------------------------------------------
Другое дело - в Мегамаркете. Клиент зашел на сайт и сразу выбрал, что он будет закупаться в Магазине А. И в корзину в этом случае он сможет положить только то, что есть в магазине А. Никаких логических коллизий.
114 28.07.2020 18:30:13
Re: Как вывести единицу измерения возле цены? (2 ответов, оставленных в Вопросы по работе с системой)
Добрый день!
{$product->getUnit()->stitle} - выведет единицу измерения, например кв.м.
115 27.07.2020 16:22:40
Re: Как правильно править стандартные шаблоны (5 ответов, оставленных в Вопросы по созданию тем оформления)
Внесу ясность в правки шаблонов. Дело в том, что различные методы расширения функциональности шаблонов появлялись со временем, а старые при этом продолжали работать. По этому есть множество вариантов на выбор:
1. Полное клонирование темы и изменение файлов уже внутри нее. Делается прямо через админ.панель
Управление -> Шаблоны -> Клонировать тему. (есть особенности с темой default, в клона нужно сперва копировать tpl файлы из модулей, а затем изменять.)
2. Для простого добавления своих скриптов мы придумали scripts.tpl, которого нет в дистрибутиве, но он подключается, если в корне лежит этот файл. Этот метод подходит только для добавления скриптов и стилей на все страницы шаблонов.
3. Частичная модификация темы с помощью .my.tpl, .my.css .my.js. Отлично подходит если хочется, чтобы все в теме обновлялось, кроме измененных частей. Очень простой способ модификации с относительно небольшими потерями обновляемости.
https://readyscript.ru/dev-manual/dev_t … tends.html
4. Модификация шаблонов с помощью кастомного модуля и обработки хуков в шаблонах. Способ сложный для обычного пользователя, но позволяет изменять даже часть одного tpl шаблона, при этом сохраняя обновление других частей этого же tpl.
Это самый ювелирный способ модификации.
https://readyscript.ru/dev-manual/dev_t … hooks.html
116 27.07.2020 16:05:18
Re: Заказ товаров с разных точек (15 ответов, оставленных в Вопросы по работе с системой)
Почти все торговые сети в этом случае налаживают внутреннюю логистику и если товар хоть где-то есть, его можно переместить в другую точку выдачи и продать.
Альтернативный вариант - это только использовать Мегамаркет и представлять магазины как филиалы.
117 20.07.2020 22:54:39
Re: Вывести категорию в статье? (2 ответов, оставленных в Вопросы по работе с системой)
Насколько я понимаю, вы находитесь на странице просмотра статьи, т.е. article-front-view, за данную страницу отвечает контроллер \Article\Controller\Front\View, видим что в данном шаблоне статья передается в переменной article
$this->view->assign(array(
'article' => $article
));
Ваш ход мыслей верный, думаю вы просто ошиблись в том, что getCategory() нужно вызывать у $article в шаблоне
%article%/view_article.tpl
{$categoria = $article->getCategory()} {* Здесь будет Article\Model\Orm\Category *}
{$parent = $categoria->getParent()} {* Здесь будет Article\Model\Orm\Category *}
{$parent.title} {* У объекта Article\Model\Orm\Category название в поле title находится *}
118 20.07.2020 20:18:32
Re: Параметры ссылок в визуальном редактор (2 ответов, оставленных в Вопросы по работе с системой)
Это настройка атрибута rel, туда можно добавить элемент в список, так как у TinyeMCE есть такой параметр rel_list
Но дописывать data-fancybox="gallery", оно не будет ) Возможно для этого нужно будет подключить какой-то плагин к tinyMCE.
-------------
Возможно fancybox можно инициализировать и на rel="lightbox", просто это должно быть явно прописано в JS, где fancybox инициализируется.
119 15.07.2020 16:27:37
Re: Вывод ORM объекта на сайт (4 ответов, оставленных в Вопросы по работе с системой)
Думаю все дело в том, что вы вносите изменения в шаблон, который находится в модуле, а на сайте у вас используется тема не default.
Вам нужно вносить изменения в шаблон /ВАША ТЕМА/moduleview/catalog/product.tpl
А еще правильнее, создавать на его основе /ВАША ТЕМА/moduleview/catalog/product.my.tpl
В этом случае при любом обновлении ваши изменения не будут исчезать.
120 15.07.2020 16:16:40
Re: Давно мы не общались у нас на форуме. (15 ответов, оставленных в Вопросы по работе с системой)
в Catalog\Controller\Front\ListProducts в методе init есть событие init.api.catalog-front-listproducts
В обработчике у вас есть переменная, ссылающаяся на этот контроллер ListProducts
Вы можете перехватить объект запроса на выборку товаров:
в handlers.inc.php вашего кастомного модуля:
public static function initApiCatalogFrontListProducts($controller) {
$request = $controller->api->queryObj();
//Тут можно делать что угодно с запросом, например добавить JOIN и уточнить секцию SELECT
}
121 13.07.2020 23:51:05
Re: Давно мы не общались у нас на форуме. (15 ответов, оставленных в Вопросы по работе с системой)
Как раз пришлось реализовывать индивидуальные цены для товаров.
40 колонок цен со скидками на товары уже существовали на базе стандартного справочника цен (причем есть товары, где скидка не должна превышать определенный процент).
Но захотели создавать цены в разрезе брендов, категорий и отдельных товаров. При этом настройку делают на стороне 1с.
Уговорить реализовать скидками в корзине не получилось.
В итоге сделал модуль с отдельной таблицей индивидуальных цен (товар-пользователь-цена). При расчете цены товара сначала выборка делается из этой таблицы. В таблицу заливаю данный из csv файла с помощью LOAD INFILE, поэтому проблем с синхронизацией нет. Файл формируется на стороне 1с сразу с рассчитанными ценами для клиента. Попадают только товары, затронутые скидкой. Обычно из около 300-500 для клиента.
Все это касается только отображения цены.
Очень здорово, что вы не побоялись ввязаться в эту крайне непростую задачу.
Насколько я понимаю, вы добавляете join вашей таблицы во время выборки товаров, чтобы перекрыть цены из xcost?
Мы детально проектировали вариант с таблицей комплектация товара-пользователь-тип цен-цена-дополнительный уникализатор, но мы сошлись на том, что этот вариант можно реализовать только с очень большими оговорками (грубо говоря только в конкретном случае, игнорируя многие возможные кейсы применения), что нам как разработчикам движка не подходит.
Мы еще думали сделать дополнительный уникализатор, чтобы можно было вообще сделать самые невероятные вещи с помощью сторонних модулей, например, каждый нечетный день для какой-то группы клиентов давать скидки на какие-то группы товаров. В данном случае флаг нечетного дня был бы доп. унификатором.
Одна из проблем - это был объем такой таблицы, если на сайте 10 000 товаров, 1000 пользователей и 2 типа цен, то это уже 20 млн. записей. JOIN такой таблицы даже с индексами будет довольно дорогой по ресурсам. И это я привел очень скромные параметры - 10k товаров и все с одной комплектацией и без доп.унификаторов.
Второй из важнейших проблем такой схемы - обновление данных. Допустим, пользователь перешел какой-то порог и ему вдруг нужно все цены пересчитать (он достиг нового уровня скидок), а если в магазине много товаров - не совсем понятно в какой момент это делать, так как это занимает длительное время? Если в момент наступления события (достижения нового уровня скидок), то клиент может не дождаться, когда у него оформится заказ, например. Если по крону, то какое-то время цены на сайте будут неактуальны.
Вариант как у вас - что источник новых цен - всегда 1С частично снимает эту проблему, но делает цены какое-то время неактуальными на сайте для пользователя, хотя возможно это очень небольшое время.
122 13.07.2020 12:55:36
Re: Давно мы не общались у нас на форуме. (15 ответов, оставленных в Вопросы по работе с системой)
Вот я кстати хотел бы немного рассказать о незрелости технологий пока еще для динамического ценообразования.
Когда речь идет о ценах, всегда нужно помнить, что у цен бывает:
1. отображение
2. сортировка по цене по возрастанию (в списках)
3. фильтрация по цене (в списках)
Как вы понимаете сортировка и фильтрация должна оперировать полным набором данных, то есть если мы заходим в категорию, где 5000 товаров, то программа должна посмотреть на все 5000 товаров и выстроить их по возрастанию цены и вернуть в итоге только,например, первые 20 - что соответствует одной странице данных.
На случай, если кто-то из читателей не знает, то пагинация нужна исключительно с технической точки зрения, чтобы не нагружать память backend'а, браузера клиента объемом HTML, сеть гигантским объемом передаваемых данных. Пагинация - это необходимость.
Сейчас п.2, п.3. делает на своей стороне БД, так как RS только оперирует колонками цен. У юзера может быть установлена заранее подготовленная скидочная колонка цен. Это обеспечивает работоспособность всех функций и скорость работы.
Мы считаем, что в любом магазине должно быть ограниченное число колонок цен и оно НЕ должно быть равно числу пользователей. Магазины не понимают, что когда у них станет 2000 или 5000 или 10 000 клиентов вести индивидуальный порядок расчетов - невозможно. Крупные магазины всегда стандартизируют понятия Колонка цен 1 .... Колонка цен 10, вспомните Юлмарт. И все клиенты работают именно по какой-то колонке цен, а не имеют все разные пляшущие цены.
Для более гибкой политики - существует бонусная система и (внимание!) - бонусная система - это то, что в корзине или в карточке товара (как подсказка), а не в списках товаров в категории цены сразу с учетом ваших бонусов. Это очень важно!
Слой расчета бонусных скидок он чисто косметический и выполняется поверх уже отобранных из БД товаров. Соответственно скидки не могут учитываться во время фильтрации и сортировки.
-----------------------------------
Теперь о незрелости технической. К сожалению, реализовать динамическое ценообразование возможно (в наше время), только если вешать обработчики цен на стороне PHP, а соответственно сортировку и фильтрацию нужно будет также обеспечивать силами PHP, ну и самое главное, из БД в этом случае нужно получать не одну страницу товаров, а ПОЛНЫЙ набор данных.
Все это приведет к тому, что сайт будет катастрофически сильно тормозить.
Динамическое ценообразование предполагает, что колонка цен в БД - динамическая и она зависит от текущего юзера, от его прежних заказов, от категории продукции и возможно еще очень много от чего. В итоге нужно дождаться таких технологий, чтобы в БД в качестве колонки можно было объявить целую программу (callback), которая должна выполняться максимально быстро, чтобы не пострадало время выборки.
Пока удобной технологии для этого мы еще не нашли, поэтому мы разделяем понятия:
1. Типы цен - это то, что работает быстро, поддерживает сортировку и фильтрацию.
2. Скидки, бонусные программы - это то, что клиент увидит в корзине. Скидки могут быть сколь угодно сложные.
---------
Решил написать этот пост, так как мы стали получать много заявок, на тему "хотим, чтобы клиенты сразу везде и повсюду видели все цены с учетом своих скидок", но так, к сожалению, пока невозможно с обычным Mysql.
123 10.07.2020 14:55:07
Re: Давно мы не общались у нас на форуме. (15 ответов, оставленных в Вопросы по работе с системой)
К примеру описание товара в МойСклад заливается в RS в Краткое описание
Это в ближайшем обновлении будет починено добавлением опции в настройках модуля Обмен данными.
Почему-то Мой склад описание передает в реквизите "Полное наименование", что весьма и весьма необычно.
124 08.07.2020 14:34:32
Re: Давно мы не общались у нас на форуме. (15 ответов, оставленных в Вопросы по работе с системой)
Андрей, принял информацию, спасибо!
125 07.07.2020 20:14:15
Тема: Давно мы не общались у нас на форуме. (15 ответов, оставленных в Вопросы по работе с системой)
Уважаемые пользователи, разработчики!
Давно мы не получали обратную связь!
Расскажите как у вас дела? Как поменялись ваши продажи после COVID?
Что на ваш взгляд в ближайшее время будет наиболее востребовано в online продажах?