Open sotnikov-link opened 9 years ago
common
создаем файл common/page/page.bh.js
, пишем туда:bh.match('page', function (ctx) {
ctx.json().favicon = 'новая иконка';
// если так не сработает, то:
// ctx.param('favicon', 'новая иконка'); // ← кажется, это самый православный способ
// или
// json.favicon = 'новая иконка'; return json;
});
Refs:
@zxqfox, про первый пункт ничего не понял, второй уже пробовал.
ctx.param('favicon', 'новая иконка'); // ← кажется, это самый православный способ
Если указать в «common.blocks/page/page.bh.js»:
// ...
ctx.param('favicon', 'page.png');
// ...
Параметр попадает на сборку «desktop.bundles/index/index.html», но путь не правильный к «page.png». Ответ сервера: «Cannot GET /desktop.bundles/index/page.png». Нужно добиться автоматического переписывания пути к файлу и в будущем чтобы можно было собрать нормально статику «borschik'ом».
Другие варианты из 2-го пункта попробовал, результаты один в один.
Информация по ссылкам была мне известна, но однозначно, спасибо за помощь!
Мой файл «common.blocks/page/page.bh.js»:
module.exports = function(bh) {
bh.match('page', function(ctx, json) {
//ctx.param('favicon', 'page.png');
//ctx.json().favicon = 'page.png';
json.favicon = 'page.png'; return json;
})
}
Объясните про первый пункт подробнее, пожалуйста, плохо знаком с htmltree.
bemtree служит для генерации bemjson дерева из сырых данных, которые можно получать от API или с сервера. На вход у него (собранного шаблона bemtree из кусочков в блоках) обычный объект с указанием корневого блока. Что-то типа:
{
block: 'root',
projects: [ ... ],
users: [ ... ],
// etc...
}
А на выходе обычная bemjson структура:
{
block: 'page',
// ...
content: [
{ block : 'project-list', content: [ ... ] }, // etc...
]
}
И при генерации этой структуры можно и favicon прописать. Выглядят эти шаблоны как bemhtml, но вместо преобразования в HTML bemjson структуры они её генерируют из сырых данных.
Только проблема в том, что от этого у вас путь правильным все равно не станет, тут надо борщик использовать. И с ним Я так и не поигрался полноценно.
Refs:
@zxqfox, спасибо! Про BEMTREE имел ввиду, что не особо с ним работал, а что и для чего он, я понимаю.
Вроде задачка простая, но как ее решить правильно, не понятно… Мне кажется, что много кто не указывал для каждой страницы «favicon». Решение точно должно быть, буду ждать и думать. ;)
Доброго времени!
Для создания проекта использовал «yo bem-stub». Выбранные основные технологии: bemtree, bemjson, bh. Выбранные уровни переопределения: desktop, touch-pad, touch-phone. Сборщик — ENB.
Как при описании блока «page», например, в «desktop.bundles/index/index.bemjson.js» не указывать параметр favicon, а использовать значение и ресурсы самого блока, переопределенного на уровне «common»?
Заранее спасибо за помощь!