Всем привет, может у кого уже было подобное и подскажет как про проще все осуществить.
У меня на сайте есть поиск, в котором есть дополнительные настройки, такие как учитывать пользователя, раздел и т.д.
Так как эти страницы по факту разные, было бы глупо запрещать их индексировать поисковикам, по этому хочется создать уникальные заголовки к ним.
Есть GET запросы
1. SEARCH - поисковое слово
2. CATALOG - раздел документа
3. USER - пользователя документа
Было принято решение сделать некий ключ из get запросов по которому делать выборку заголовка из языкового файла
Вот так создаю ключ
function getPageTitleKey(request) {
return o = ["catalog", "user", "search"].filter(e => Object.keys(request).includes(e)), o.join(".")
}
В результате получаю различные вариации ключа
1. search
2. catalog
3. user
4. search.catalog
5. search.user
6. catalog.user
7. catalog.search.user
Это помогает выбрать из языкового файла правильный заголовок для последующей с ним работы
//ru.js
//....
titles: {
"catalog": {
name: "CATALOG ...."
},
"search": {
name: "SEARCH ....."
},
"user": {
name: ".... USER"
},
"catalog.search": {
name: "SEARCH CATALOG ......"
},
"catalog.user": {
name: "CATALOG от пользователя USER"
},
"user.search": {
name: "SEARCH ..... добавленные пользователем USER"
},
"catalog.user.search": {
name: "SEARCH CATALOG от пользователя USER"
}
}
//....
Сама проблема заключается в масштабах, потому что в самом обработчике (search.js) мне нужно через switch создавать заголовки
switch(page_title_key) {
case "search": return isNameSearch(request)
case "catalog": return isNameCatalog(request)
case "catalog.user": return isNameCatalogUser(request)
//....
}
Ну и уже в самой функции заменяю с помощью replace необходимое значение
По факту раздувается файл search.js, конечно это терпимо, но и не приятно совсем.
Было бы здорово создать midleware и при обращении на страницу поиска подготавливать уже данные выборке заголовков страницы, но проблема в том что в заголовках присутствуют различные данные которые получаю из базы данных.
Мне вот интересно можно ли как то осуществить это с помощью middleware к примеру который будет в request выплевывать функцию с настройками, к примеру
request.titles = function(e, key) {
return lang[key].name.replace("USER" e.user)
}
А в search.js получать эту функцию производить более простые настройки по передаче данных в request.titles для получения нужного результата?
Ну или вообще какие могут быть альтернативы? Любые мысли по теме будут интересны.