В этом посте я предложу свою версию сабжа. На истину в последней инстанции не претендую. Итак, где же хранить, к примеру, сообщение для alert "Вы не авторизованы"? [spoiler] До недавних пор я хранил их в самом js-коде, иногда вынося в script-блок html-кода (var salert = 'Вы не авторизованы';), но как-то не нравилось мне это - не централизовано, кодировка может сбиться (если хранить в js-файле), или html-код загрязняется script-блоками. Я решил навести порядок.
Дело в том что на каждом хите уже подключается js-массив bx.message, в котором и хранятся системные фразы. Остается его дополнить нашими фразами и дело в шляпе.
Все. Массив мы можем хранить прямо в обработчике, или вынести централизованно где-то в админке. Речь не о решениях для маркета, поэтому подход у каждого проекта свой. Хотя, конечно, для Маркетплейса такой подход тоже приветствуется.
Теперь мы можем использовать фразу в js-коде:
a lert(bx.message('product_like'));
Очень полезная идея от разработчика Битрикс Евгения здесь.
сомнительная крутизна генерить js-код средствами php. если кто-то захочет поменять "нравится" на "круто" - он же Вас прокленёт потом! ) вместо того, чтобы отредактировать очевидное место ему придётся рыскать в поисках спрятанного где-то в дебрях битрикса массива.
gall555 , для удобства все сообщения можно собрать например в лэнг файле шаблона и оставить комментарий в js о место нахождение языковых файлов, на случай поддержки сторонним программистом.
В дальнейшем это может облегчить работу. При таком подходе уже не обязательно быть программистом, чтобы изменить текст сообщения, т.е. владелец сайта, сможет зайти в лэнг файл, поправить нужные фразы, практически без риска что нибудь сломать на сайте (разве что добавит лишние кавычки, или удалит точку с запятой, но это менее критично, чем испортит что-либо в скрипте).
Еще одно преимущество, о котором часто забывают - отсутствие дублирования. Т.е. есть фраза, например "уже в корзине", которая может присутствовать в нескольких шаблонах catalog.section, catalog.element, и т.д., прописывается один раз, в одном месте, и в случае если нужно будет ее как либо изменить, не нужно будет обходить все шаблоны.
gall555 смотря что проклинающий встретит в js-коде. Если ересь, то да, проклянет. А если непонятный с первого взгляда массив, то источник его он полезет смотреть в единственное место - php_interface, где все грамотно структуировано.
Всё-таки удивляюсь насколько евангелисты Битрикс любят рекомендовать примеры плохого использования технологий. Во всех нормальных фреймворках существует бекендовый модуль для добавления статичного свойства в JS объект и вывода на всех страницах. Что-то аналогичное существует в Битрикс?
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».