Ростислав, сейчас я использую именно project-stub (точнее, его модификации, но это всё те же BEMTREE → BEMJSON → BEMHTML, PostCSS, i-bem.js). Прежде мне с головой хватало https://github.com/yeoman/generator-webapp , ведь MODX,в принципе, всё равно, как вы генерируете клиентские HTML + CSS + JS, главное — правильно перенести это в чанки и шаблоны. Шаблонизатор MODX — это его килл-фича и его же «бутылочное горлышко»: очень просто взять любой валидный код и адаптровать его в MODX (займёт 1-7 минут без всякой автоматизации), но придётся вручную подменить шаблонные конструкции (плейсхолдеры MODX). Я пытался сделать свой шаблонизатор, который имел бы аналогичный синтаксис HTML-шаблонизатора хотя бы на уровне чанков, но забил на это. Сейчас кажется, что проще вообще отказаться от родного шаблонизатора MODX и использовать CMF как RESTFul API.
neeli: значит, значение берётся не из «Словаря». Ищите в чанке, отвечающем за вывод одной сущности выборки и в шаблоне, отвечающем за вывод конкретного товара.
Бывает =) Я как-то часа три потратил, пытаясь понять, почему изменения на сервере кэшируются и никакой сброс не помогает. Оказалось, вкладку с локальным сервером «тестировал», а не с боевым.
Vladislav Kh: ну, как вариант, если в рамках эксперимента. Но, имхо, тянуть реакт, чтобы у пользователя всё «бибикало и мигало без перезагрузки страницы» — сто́ит ли это его и своих нервов? У Реакта конкретная сфера использования (о чём забывают 99% разработчиков — обмажутся своими ВьюРеактоАнгулярами, а потом формочку на HTML сверстать не могут), она и в ЛК может быть оправдана, но в случае, например, SPA с кучей бизнес-логики.
pingo ну, не обязательно же всю страницу на реакте делать. Отдельные мутабельные виджеты вполне подвергаются реактивности, а поисковикам до них дела быть не должно — зачем вообще поисковику лезть, например, в корзину?
Vladislav Kh: ну, если это не личный проект, можете серьёзно окопаться, если нет опыта разработки реактивных (т. е. не обязательно на реакте) компонент. Там важна сама идеология + свободное владение JS, традиционный jQuery-лапша-код не прокатит.
C ShopKeeper не работал (только с miniShop2), но смысл, уверен, тот же — если выбираете Реакт (зачем, если вы его не знаете?), весь JS удобнее писать, придерживаясь его компонентной архитектуры (а иначе зачем он нужен? Потому что «стильно, модно, молодёжно»?). Реакт оправдан, если у вас много (от слова «очень») мутабельных состояний в интерфейсе (в наборе товара, корзине). Тянуть Реакт ради динамической миникорзины и/или пересчёта суммы — изврат.
Михаил: это сервис вопросов и ответов, а не «повышатель компетенций». Поверьте, за 2 года мультиязычность не изменилась, а кода, который вы привели из документации 6-летней давности, недосточно, требуется ещё правильно настроить сами контексты и проксирование (а это уже выходит за рамки вопроса и формата ответа). После этого вполне достаточно, как в примере выше, в case указать домен, а в switchContext — нужный контекст.
Уточню Павла — плейсхолдер [[*content]] указывает на содержимое поля «Содержимое» любого ресурса (левая колонка), для которого указан этот шаблон. Т. е. если для главной страницы с содержимым «Привет, Мир!» указан шаблон BaseTemplate, а в этом шаблоне есть [[*content]], то этот «Привет, Мир!» выведется в этом месте. Помимо [[*content]], есть и другие плейсхолдеры.