#Настройки и демо-данные
#settings — поля, которые правит владелец
Тема объявляет, какие поля нужны её вёрстке. При установке они заводятся в «Настройки сайта», и владелец правит их сам, не трогая разметку.
"settings": [
{ "name": "phone", "title": "Телефон", "type": "phone" },
{ "name": "address", "title": "Адрес", "type": "text" }
]В вёрстке — {setting.phone}.
Вбивать телефон прямо в html нельзя. Тогда владелец меняет его правкой шаблона, и настройки теряют смысл. Хорошая тема не содержит ни одного контакта в разметке.
#Занятые имена
Имена id и domain использовать нельзя: это служебные столбцы каждой
таблицы, а domain вдобавок означает разграничение сайтов и
выбрасывается перед подстановкой. Настройка с таким именем заводилась бы
«успешно» и не читалась никогда.
Для адреса сайта берите site_url:
{ "name": "site_url", "title": "Адрес сайта без слеша на конце", "type": "text" }и в шапке:
<link rel="canonical" href="{setting.site_url}{PFM.url}">Тогда при переезде на свой домен владелец правит одно поле в панели, а не шаблон.
#demo.json — примеры содержимого
Тема на пустом сайте выглядит сломанной: справочники пусты. Это чинит
demo.json.
{
"dictionaries": {
"portfolio": [
{ "zagolovok": "Кухня 12 м²", "tag": "Кухни", "cena": "450000" }
],
"reviews": [
{ "name": "Анна", "text": "Сделали в срок", "rating": "5" }
],
"forms": [
{ "title": "Заявка", "code": "zayavka", "button": "Отправить", "active": 1 }
],
"form_fields": [
{ "form_id": "@forms:code=zayavka", "code": "name",
"name": "Как вас зовут", "type": "text", "sort": 1 }
]
},
"settings": {
"phone": "+7 (495) 000-00-00",
"address": "г. Москва, ул. Строителей, д. 12"
}
}#Ссылка на другую запись
Пишется как "@справочник:поле=значение" — например
@forms:code=zayavka. Номера записей у каждого сайта свои, и подставить
их в файл нельзя.
#Четыре правила, которые стоит знать заранее
- Демо кладётся только в ПУСТОЙ справочник. Это касается почти всех поставляемых решений:
portfolioнесёт 4 записи,reviews— 3,faq— 4,form— 17. На свежем сайте эти справочники уже не пусты, и демо темы к ним не применится.
- Это защита, а не ошибка. Но если теме важны именно её записи, рассчитывать на
demo.jsonдля таких справочников нельзя — либо владелец чистит справочник и жмёт «Импортировать демо-данные», либо тема живёт с примерами решения.
- Данные помечаются принадлежащими теме, поэтому кнопку можно нажимать повторно: правленые записи не трогаются.
- Один справочник наполняет кто-то один. Если решение везёт свои примеры, а тема — свои, кладёт пришедший первым (обычно решение). В отчёте будет сказано: «справочник уже наполнен (N записей) — примеры темы для него не клались».
Довод здесь не про механику. Примеры решений написаны под конкретную
отрасль: faq и reviews из поставки — про ремонт квартир. Тема
книжного дизайнера получит вопрос «Кто покупает материалы?» и отзыв про
переделанную проводку, и заметит это только тот, кто откроет сайт после
установки. Тема при этом выглядит установленной правильно.
Отсюда правило сборки, и у него две половины:
- в
demo.jsonкладите примеры для справочников, которых не касается ни одно решение; - а если теме нужны свои записи там, где справочник наполняет решение, — везите свой справочник, а не пытайтесь перебить чужой.