This repository has been archived on 2026-06-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
colors-patch/global/templates/header/scrape.js
T

63 lines
1.7 KiB
JavaScript

(() => {
const header = document.querySelector("#header");
// Extract Logo
const logoEl = header.querySelector(".vc-headerlogo img");
const logo = {
src: logoEl ? logoEl.src : '',
alt: logoEl ? logoEl.alt : '',
};
const customContentBlock = header.querySelector(".custom-content-block.custom-content-header-1 > .content");
const customContentHeader = customContentBlock ? customContentBlock.innerHTML : '';
function extractMenuTree(ulElement) {
if (!ulElement) return [];
const listItems = Array.from(ulElement.children).filter(el => el.tagName === 'LI');
return listItems.map(li => {
const link = li.querySelector(":scope > a");
const itemData = {
text: link ? link.textContent.trim() : '',
href: link ? link.href : ''
};
const subMenu = li.querySelector(":scope > ul[role='menu']");
if (subMenu) {
itemData.sublinks = extractMenuTree(subMenu);
}
return itemData;
});
}
const rootMenu = header.querySelector("#menu #menucategories nav ul[role='menu']");
const menuData = extractMenuTree(rootMenu);
const menuTop = header.querySelector("#menutop ul[role='menu']");
const menuTopLinks = menuTop.querySelectorAll("li > a");
const menuTopData = Array.from(menuTopLinks).map(link => ({
text: link.textContent.trim(),
href: link.href
}));
const itemCountBasket = parseInt(header.querySelector("#basketinfo .vc-basketinfoextended-numberofitems").textContent) || 0;
const basket = {
itemCount: itemCountBasket,
link: header.querySelector("#basketinfo .vc-basketinfoextended-header").href || '/kosik'
}
return {
logo,
customContentHeader,
menu: {
top: menuTopData,
main: menuData
},
basket,
};
})();