Сайт-визитка: главная, архитектура, проекты
- Главная: фото, факты, соцсети, форма связи, анимации - Архитектура: карточки проектов и отдельные страницы (Тихий двор, павильон, «Лофт») - Проекты: Aman's World (скриншоты, описание) и хоумлаб - Меню из config.json, шаблон новых страниц, черновики training/work/fixed - Чистый HTML/CSS/JS без сборки, шрифты и картинки локально Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
// Верхнее меню из config.json: pages. На главной показывается, только если есть страницы; на остальных всегда.
|
||||
(function () {
|
||||
window.siteConfig.then(function (c) {
|
||||
var nav = document.getElementById('topnav');
|
||||
if (nav && c) {
|
||||
var pages = (c.pages || []).filter(function (p) { return !p.draft; }); // черновики в меню не попадают
|
||||
var norm = function (p) { return p.replace(/\/+$/, '') + '/'; };
|
||||
var here = norm(location.pathname);
|
||||
var home = here === '/';
|
||||
if (pages.length || !home) {
|
||||
var brand = document.createElement('a');
|
||||
brand.className = 'brand'; brand.href = '/';
|
||||
var parts = (c.name || 'Главная').split(' ');
|
||||
brand.appendChild(document.createTextNode(parts[0]));
|
||||
if (parts.length > 1) { var rest = document.createElement('span'); rest.className = 'brand-rest'; rest.textContent = ' ' + parts.slice(1).join(' '); brand.appendChild(rest); }
|
||||
nav.appendChild(brand);
|
||||
var ul = document.createElement('ul');
|
||||
pages.forEach(function (p) {
|
||||
if (!/^\/[\w\-./]*$/.test(p.url)) return; // только внутренние адреса
|
||||
var a = document.createElement('a');
|
||||
a.className = 'pill'; a.href = p.url; a.textContent = p.label;
|
||||
var u = norm(p.url);
|
||||
if (u === here || (u !== '/' && here.indexOf(u) === 0)) a.setAttribute('aria-current', 'page');
|
||||
var li = document.createElement('li'); li.appendChild(a); ul.appendChild(li);
|
||||
});
|
||||
nav.appendChild(ul);
|
||||
document.body.classList.add('has-nav');
|
||||
}
|
||||
}
|
||||
}).then(window.siteReady);
|
||||
})();
|
||||
Reference in New Issue
Block a user