====== Файл settings/settings.json ====== Данный файл содержит информацию об интерфейсе пользовательских настройках сайта (в том числе об их значениях по умолчанию), а также некоторые конфигурационные опции, которыми пользователь не может управлять. ===== Описание формата файла ===== Файл имеет формат [[https://ru.wikipedia.org/wiki/JSON|JSON]]. Содержит два корневых элемента ''config'' и ''structure''. * ''config'' - содержит конфигурационные опции, которые доступны разработчику шаблона, но не доступны пользователю * ''structure'' - содержит информацию о пользовательских настройках (в том числе об их интерфейсе, а также об их значениях по умолчанию) ==== Элемент "config" ==== Элемент с именем ''config'' имеет формат массива пар "имя: значение". Имена являются зарезервированными значениями, список которых приведен ниже. Значение и его формат специфично для каждой настройки. ^ Настройка ^ Описание ^ | ''bannerPlace...'' | Таких настроек может быть несколько. Описывает "Место размещения баннеров".\\ \\ Имя настройки имеет формат ''bannerPlace::<типы>:<страницы>''.\\ '''' - здесь вписывается "имя для разработчика" места размещения (используйте только буквы латинского алфавита и цифры).\\ ''<типы>'' - здесь вписывается через запятую, какие типы баннеров характерны данному месту размещения (''image'', ''imageAndText'').\\ ''<страницы>'' - здесь вписывается через запятую, на каких видах страниц будет использоваться данное место размещения баннеров (''catalog'', ''brand'', ''page'', ''articleCatalog'').\\ \\ Значением настройки является строка, в которой указывается имя данного места размещения, отображаемое в интерфейсе пользователя | | ''af_...'' | Таких настроек может быть несколько. Описывает "Дополнительные поля" для определенной сущности, которые отображаются в интерфейсе пользователя. Т.е. в системе могут существовать и другие "дополнительные поля", но в интерфейсе будут отображены только те, которые указаны в данном файле. Исключением является раздел настроек "дополнительных полей", в котором отображаются все.\\ \\ Имя настройки имеет формат ''af_<сущность>[:]''.\\ ''<сущность>'' - здесь вписывается имя сущности, "дополнительные поля" которой перечисляются в значении данной настройки (''catalog'', ''brand'', ''brandSeries'', ''offer'', ''user'', ''order'', ''page'', ''article'', ''articleCatalog'').\\ '''' - может отсутствовать; здесь указывается "имя для разработчика" конкретной сущности, если есть необходимость указать, что данные дополнительные поля будут отображаться только для сущности с этим "именем для разработчика".\\ \\ Значением настройки является строка, в которой через запятую указываются имена "дополнительных полей" для данной сущности | | ''adminMenu_articleCatalogs'' | Указывает какие каталоги публикаций верхнего уровня будут отображаться в главном меню панели управления.\\ \\ Значением настройки является строка, в которой через запятую указываются "имена для разработчика" тех каталогов публикаций, которые будут отображены пользователю | | ''adminMenu_pages'' | Указывает какие "страницы" будут отображаться в главном меню панели управления.\\ \\ Значением настройки является строка, в которой через запятую указываются "имена для разработчика" тех "страниц", которые будут отображены пользователю | ==== Элемент "structure" ==== В данном элементе указываются настройки того, что будет отображено в интерфейсе на странице настроек шаблона сайта в панели управления. А также указываются значения по умолчанию, которые будут иметь данные настройки. Является массивом с произвольным количеством элементов. === Описание корневого элемента массива "structure" === * Каждый элемент соответствует в интерфейсе группе настроек; * Каждый элемент имеет следующие поля: ''name'', ''label'', ''icon'', ''settings'' (или ''subSettings'') * ''name'' - имя данной группы настроек (должно быть уникально) * ''label'' - текст, который выводится в интерфейсе, как имя группы настроек * ''icon'' - имя изображения, которое выводится в интерфейсе для данной группы настроек (пока не используется) * ''subSettings'' - массив вложенных групп настроек, структура которого идентична структуре групп настроек (может отсутствовать, если присутствует ''settings'') * ''settings'' - массив объектов настроек данной группы настроек (может отсутствовать, если присутствует ''subSettings'') ==== Описание массива "settings" ==== * Является массивом объектов настроек, каждый из которых может иметь различный набор полей * Обязательно каждый объект имеет поля ''type'' и ''label'' * ''type'' - определяет тип объекта настройки (строка) * ''label'' - текст, который выводится, как имя данной настройки * ''id'' - идентификатор настройки; это и есть имя переменной, которая используется в коде шаблона * ''default'' - значение по умолчанию для данной настройки (в интерфейсе именно оно используется, если пользователь еще не сохранял настройки шаблона ни разу) === Типы настроек (значения элементов "type") === Ниже перечислены типы настроек. В квадратных скобках указаны другие элементы в данном объекте, указание которых обязательно для данного типа настройки. * ''header'' - заголовок набора настроек [''label'']; используется для визуального разделения наборов настроек * ''input'' - одно строчное текстовое поле [''id'', ''label'', ''default''] * ''textarea'' - много строчное текстовое поле [''id'', ''label'', ''default''] * ''checkbox'' - поле флага [''id'', ''label'', ''default''] (значения могут быть только ''1'' или ''0'') * ''image_picker'' - элемент выбора (загрузки) изображения [''id'', ''label'', ''default''] * ''color_picker'' - элемент выбора цвета [''id'', ''label'', ''default''] (значение - hex код цвета) ==== Пример файла ==== { "config": { "bannerPlace:place1:image:page": "Баннер на главной странице в центральном блоке", "bannerPlace:place2:image,imageAndText:catalog,brand": "Баннер на странице каталогов брендов в центральном блоке", "af_user": "af_desc", "af_offer": "af_description,af_characteristics,af_video", "af_order": "af_some", "af_catalog": "af_text", "af_brand": "af_text", "af_page": "af_text", "af_page:contacts": "af_text, af_map", "af_article": "af_description,af_text", "af_articleCatalog": "af_text", "adminMenu_articleCatalogs": "news,article,action,vat", "adminMenu_pages": "index,about,contacts,paymentAndDelivery" }, "structure": [ { "name": "company", "label": "Компания", "icon": "metadata", "settings": [ { "type": "header", "label": "Компания" }, { "type": "input", "id": "companyName", "label": "Название компании", "default": "Наша компания" }, { "type": "header", "label": "Данные" }, { "type": "textarea", "id": "companyAddress", "label": "Адрес компании", "default": "г. Вывилон, ул. Уличная 17" } ] }, { "name": "phonesAndEmail", "label": "Телефоны и Email", "icon": "metadata", "settings": [ { "type": "header", "label": "Список телефонов" }, { "type": "input", "id": "phone1", "label": "Телефон №1", "default": "+3(000) 111-11-11" }, { "type": "input", "id": "phone2", "label": "Телефон №2", "default": "+3(000) 222-22-22" } ] }, { "name": "index", "label": "Главная", "icon": "font", "subSettings": [ { "name": "index_noveltyOfferBlock", "label": "Блок \"Новинки\"", "icon": "font", "settings": [ { "type": "header", "label": "Отображение" }, { "type": "checkbox", "id": "showNoveltyOfferBlockOnIndexKey", "label": "Отображать блок \"Новинки\"", "default": "1" }, { "type": "header", "label": "Количество" }, { "type": "input", "id": "indexOfferNoveltyAmount", "label": "Количество товаров", "default": "12" }, { "type": "header", "label": "Баннер в блоке \"Новинок\"" }, { "type": "input", "id": "noveltyLinkBanner", "label": "Ссылка", "default": "#" }, { "type": "image_picker", "id": "noveltyImageBanner", "label": "Изображение", "default": "" } ] } ] } ] }