bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Реализация своего базового блока page #887

Open v-bornov opened 8 years ago

v-bornov commented 8 years ago

В основе каждой страницы сайта лежит блок page. Как можно дополнить этот блок, чтоб добавить для него дополнительные теги?

Интересует возможность добавить ряд статичных meta-тегов в head, прописать favicon (может быть еще что то). Идея в том, чтобы задать все это в одном месте, а не прописывать в bemjson-е каждого бандла. Подобные вещи реализуются в BEMHTML-шаблонах. Но блок page уже имеет свой шаблон и нужно как то его дополнить, но при этом не сломать. Хотелось бы пример подобной реализации.

Спасибо!

Yeti-or commented 8 years ago

Ты вроде можешь передать всё необходимое в поле head: https://ru.bem.info/libs/bem-core/v2.8.0/desktop/page/#declfields-head

voischev commented 8 years ago

@Yeti-or ты вот не понял. Он хочет до определить базовый шаблон page, что бы оно приехало во все bemjson файлы

voischev commented 8 years ago

Насколько я понимаю нужно примерно следующий код bemhtml шаблона в блоке page на своем уровне проекта сделать.

block('page').def()(function() {
    this.ctx.head.concat([{ elem: '...', ... }]); // пишем то что хочется
    return applyNext();
});

Возможно кто-то напишет решение красивее.

tadatuta commented 8 years ago

Решение @voischev для BEMHTML — ок, но более православный путь — это использовать BEMTREE для генерации BEMJSON.

См. https://ru.bem.info/forum/716

v-bornov commented 8 years ago

@voischev, спасибо!

@tadatuta, я ознакомился с материалом, очень интересно и доступно. Насколько я понял, правильнее bemjson в бандлах вообще не писать, а декларировать (bemdecl.js) необходимые блоки и уже в bemtree шаблонах этих блоков формировать необходимый bemjson?

tadatuta commented 8 years ago

@v-bornov да, все так.