#Своё решение темы
Иногда нужного решения не существует. Системное «Портфолио» писалось под
ремонт: заголовок, тег, цена, картинка. У книжного дизайнера работа —
это издание с клиентом, годом и задачей, и втискивать её в «цену»
строкой 2024 · дизайн, вёрстка значит отнять у владельца возможность
править содержимое, не трогая вёрстку.
Поэтому тема вправе привезти своё решение — со своим справочником, своими полями и своим модулем.
#Как это выглядит в архиве
moya-tema.zip
theme.json
packages/
moya-tema-portfolio/
manifest.json{
"code": "moya-tema",
"version": "1.0.0",
"bundled_packages": ["moya-tema-portfolio"],
"views": [
{ "module": "moya_folio", "code": "moya-tema.folio",
"html": "<div class=\"folio\">{item}</div>",
"item_html": "<b>{module.moya_folio.title}</b>" }
]
}Манифест решения — обычный манифест Wacis:
{
"name": "Работы",
"code": "moya-tema-portfolio",
"version": "1.0.0",
"core_version": ">=1.0.0",
"dictionaries": [
{ "name": "moya_folio", "title": "Работы", "fields": [
{ "name": "title", "title": "Издание", "type": "text" },
{ "name": "zakazchik", "title": "Клиент", "type": "text" },
{ "name": "god", "title": "Год", "type": "text" }
]}
],
"modules": [
{ "name": "moya_folio", "title": "Работы", "type": "BFM",
"dictionary": "moya_folio",
"box_layout": "<div class=\"folio\">{item}</div>",
"item_layout": "<b>{module.moya_folio.title}</b>" }
]
}#Правила, о которые чаще всего спотыкаются
- Код решения начинается с кода темы и дефиса.
moya-tema-portfolio— да,portfolio— отказ. Иначе две темы с похожими решениями столкнутся на одном сайте, и вторая перепишет справочник первой. - Код внутри
manifest.jsonсовпадает с объявленным вbundled_packages. Расхождение — отказ на установке. - Список, даже если решение одно:
["moya-tema-portfolio"], не строкой. - Кода по-прежнему нет. В
packages/можно класть толькоmanifest.json;.phpвнутри отклоняется так же, как в самой теме. core_versionсо знаком:">=1.0.0".
#Порядок установки
- ставятся решения темы (
bundled_packages); - добираются требуемые (
requires_packages); - укладываются виды.
Порядок здесь не для стройности: вид ищет модуль по имени. Уложи его раньше — модуля ещё нет, вид не ляжет, и тема встанет с пустым блоком.
#Что происходит с чужим
Чужое не трогается. Если на сайте уже стоит системное portfolio с
сотней записей, тема ставит своё рядом, под своим кодом и со своим
справочником. Заменить чужое значило бы потерять чужие данные ради
оформления.
#Обновление и снятие темы
| Действие | Что с решением темы |
|---|---|
| обновление темы | структура догоняется: новые поля, новые модули. Записи не трогаются никогда |
| снятие темы | решение и его записи остаются |
| оборванная установка | своё поставленное снимается обратно; стоявшее до темы не трогается |
Справочник привезла тема, но сто работ в нём завёл владелец — это содержимое сайта, а не оформление. В отчёте о снятии будет сказано, что решение осталось; снять его отдельно можно в Marketplace.