Файл settings/settings.json

Данный файл содержит информацию об интерфейсе пользовательских настройках сайта (в том числе об их значениях по умолчанию), а также некоторые конфигурационные опции, которыми пользователь не может управлять.

Файл имеет формат JSON. Содержит два корневых элемента config и structure.

  • config - содержит конфигурационные опции, которые доступны разработчику шаблона, но не доступны пользователю
  • structure - содержит информацию о пользовательских настройках (в том числе об их интерфейсе, а также об их значениях по умолчанию)

Элемент "config"

Элемент с именем config имеет формат массива пар «имя: значение». Имена являются зарезервированными значениями, список которых приведен ниже. Значение и его формат специфично для каждой настройки.

Настройка Описание
bannerPlace… Таких настроек может быть несколько. Описывает «Место размещения баннеров».

Имя настройки имеет формат bannerPlace:<devName>:<типы>:<страницы>.
<devName> - здесь вписывается «имя для разработчика» места размещения (используйте только буквы латинского алфавита и цифры).
<типы> - здесь вписывается через запятую, какие типы баннеров характерны данному месту размещения (image, imageAndText).
<страницы> - здесь вписывается через запятую, на каких видах страниц будет использоваться данное место размещения баннеров (catalog, brand, page, articleCatalog).

Значением настройки является строка, в которой указывается имя данного места размещения, отображаемое в интерфейсе пользователя
af_… Таких настроек может быть несколько. Описывает «Дополнительные поля» для определенной сущности, которые отображаются в интерфейсе пользователя. Т.е. в системе могут существовать и другие «дополнительные поля», но в интерфейсе будут отображены только те, которые указаны в данном файле. Исключением является раздел настроек «дополнительных полей», в котором отображаются все.

Имя настройки имеет формат af_<сущность>[:<devName>].
<сущность> - здесь вписывается имя сущности, «дополнительные поля» которой перечисляются в значении данной настройки (catalog, brand, brandSeries, offer, user, order, page, article, articleCatalog).
<devName> - может отсутствовать; здесь указывается «имя для разработчика» конкретной сущности, если есть необходимость указать, что данные дополнительные поля будут отображаться только для сущности с этим «именем для разработчика».

Значением настройки является строка, в которой через запятую указываются имена «дополнительных полей» для данной сущности
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": ""
                        }
                    ]
                }
            ]
        }
    ]
}