Коллеги, на сайте есть страницы.
Не важно какая функция, но есть функция, которая считывает наличие страниц и возвращает массив (этих самых страниц), и в соответствии из данных которого я уже создаю объект с нужными мне данными.
let _getPages = [];
pages.forEach((s, i, arr) => {
_getPages[i] = {
href: s.split('/')[2].split('.')[0].capitalize(),
link: s
}
})
Получаю такое:
{href: "About_us", link: "frontend/pages/about_us/index.html"}
{href: "Contact", link: "frontend/pages/contact/index.html"}
{href: "Main", link: "frontend/pages/main/index.html"}
{href: "Slider", link: "frontend/pages/slider/index.html"}
Далее, имея все это я создаю Меню на странице
const li = document.createElement('li');
const menu = document.querySelector('menu');
_getPages.forEach((s, i, arr)=>{
let listPage = li.cloneNode(true);
listPage.classList.add('listPage');
listPage.innerHTML = s.href
menu.appendChild(listPage);
})
И в итоге, что у меня есть
В итоге, не могу сообразить, как именно и на каком уровне с сортировать так, чтобы я получил меню С той последовательностью страниц которую хочу.
Допустим, чтобы Main
, был на первом месте, About_us
, на последнем....
P.S. Первое что пришло в голову, это добавить в название папок буквы
a, b, c, d.....
, а потом их срезать, но не думаю, что это
профессиональный подход
Вопрос немного глуповат, но не соображу ни как.
Не прошу готовы пример, мне нужна лишь подсказка.
Так как и на каком уровне отсортировать массив?
Для начала, следует признать, что порядок - не единственная информация которую вам не удалось получить. Ещё вам нужны нормальные заголовки ("About us" пишется без подчёркивания!), перевод их на другие языки, цвет...
Проще всего - не играться с автоматическим определением страниц сайта, а записать всё меню в отдельный файл.
Если же такой вариант не устраивает по каким-то причинам (например, из-за раздельного деплоя) - нужно добавить файл с описанием к каждой странице. Пусть у вас будут файлы pages/about_us/info.json
, pages/contact/info.json
и т.п. Дальше можно завести для каждой страницы атрибут order
и сортировать по нему.
Как вариант, всю необходимую информацию можно попытаться добавить в мета-тэги. Но тут вам понадобится уже парсер html чтобы её прочитать.
const menuIWant = ["Main","Contact","Slider", "About_us" ];
let _getPages = [
{href: "About_us", link: "frontend/pages/about_us/index.html"},
{href: "Contact", link: "frontend/pages/contact/index.html"},
{href: "Main", link: "frontend/pages/main/index.html"},
{href: "Slider", link: "frontend/pages/slider/index.html"},
];
const result = [];
menuIWant.forEach(item => {
for (let i=0; i<_getPages.length; i++){
if (_getPages[i].href === item) {
result.push(_getPages[i]);
break;
}
}
})
console.log(result)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возникла проблема при обновлении страницы с помощью AjaxПо идее oldImage и newImage Это один и тот же элемент
Как можно сделать перехват запросов посредством JS в "Chrome" ? Например, чтобы на любой запрос на какой-то или на все сайты мне возвращалась строка...
При формировании таблицы в mpdf необходимо развернуть текст в шапке и в заданных местах перенестиВот пример кода:
Проблема в том, что некорректно отображаются товары, некие дыры в спискеКак починить? Кто-то сталкивался с таким?