Классическая задача - передать данные из HTML в скрипты jquery. Передавать можно разными способами: атрибуты data-*, id,классы, невидимый текст. Как вариант в виде массива (объект) нативного javascript. Где и зачем это нужно? В движке есть темы, где шаблоны слабо формализованы, то есть существует свобода для верстальщика HTML. Есть скрипты jquery, которые работают с HTML тем. Скрипты должны работать на всех темах, то есть формально с любым HTML. Из этой ситуации мне видятся следующие выходы:

  • формализовать HTML разметку шаблонов, закрепив несколько id и классов, на которые могут опираться скрипты
  • из HTML шаблона дать указание скриптам, где что находится, например включив простой javascript в состав шаблона
  • использовать шаблонизатор на javascript, который бы генерировал контент. Недостаток этого способа - затрудненный доступ к контенту роботам и браузерами с отключенным javascript.

Третий способ подойдет для аяксового контента и для определенного круга задач является единственно верным. В новом релизе я уже добавил шаблонизатор mustache - в будущих разработках он найдет свое место.

Каждый из способов имеет свои недостатки. Наиболее простой способ для разработчика скрипта - сделать несколько классов и id обязательными. Такой способ позволит разрабатывать новые скрипты, которые бы работали во всех темах. Можно формализовать эти требования сведя их в отдельный список, доступный для редактирования разработчиками тем. Отлично, придумал табличку для связывания скриптов и mustache шаблонов. Как эту табличку передать? Целиком на каждой странице темы мне кажется излишним, так как это является излишним информированием. В современных реалиях плевать на избыточность - у нас нет инструмента - сборщика, или наоборот - чистильщика мусора. В рамках одной темы создавать подобные инструменты является слишком дорогой задачей, неадекватной получаемому результату. Проще включить всю таблицу соответствий. Очевидно, следует сделать такую таблицу соответствий для темы по умолчанию, а во всех остальных темах указывать только отличающиеся данные, формально требуя процитировать всю таблицу целиком. Причина - значения по умолчанию зло, та как оно может изменится ведя за собой непредсказуемые последствия.

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

Таблицу соответствий можно оформить в виде нативного javascript - объект с ключами. Сливать таблицы в jqery методом extend. Можно декларировать все в одном месте, а можно будет вставлять одну строчку script type=text/javascript" перед шаблоном, где это требуется. Задокументировать и свести воедино эти требования. Желательно затребовать включить все это в секцию head (в ручную собрать) перед подключением модулей jquery.