Как убрать id новости в DLE

29 Мая 2022г. в 04:33

Итак, давайте начнем с того, какие же варианты ЧПУ нам предлагает DLE из коробки. Всего нам предлагается три варианта ЧПУ на выбор, которые называются незамысловато: Тип 1, Тип 2 и Тип 3. Вот что они из себя представляют:

Тип 1 — ссылки на полную новость будут иметь вид //domen/id-имя новости.html

Тип 2 — ссылки на полную новость будут иметь вид //domen/категория/подкатегория/id-имя новости.html

Тип 3 — ссылки на полную новость будут иметь вид //domen/2008/04/02/имя новости.html, внимание данный тип несет повышенную нагрузку на сервер

Примеры и описания ссылок я скопировал прямо из справки по ЧПУ в админпанели DLE. Найти ее можно и, соответственно, выбрать нужный тип ЧПУ, в разделе Настройки скрипта — Настройка системы:



Обратите внимание, кроме опции выбора типа ЧПУ, есть также две дополнительные настройки: первая позволяет включить ЧПУ, вторая — обрабатывает неверные ЧПУ.

Но вернемся к типам ЧПУ. Как видим, все три варианта достаточно привлекательны. Пожалуй, я бы остановился на первом или втором варианте, они мне больше по душе. Однако в каждом из выбранных вариантов в начале названия новости присутствует ее id, т.е. часть ссылки будет иметь следующий вид — 5-bukingemskiy-dvorec.html, где цифра 5 — это и есть id новости.

На мой взгляд, ничего критичного в этом нет и URL от лишней цифры не стал менее читабельным и привлекательным. Однако, если вы перфекционист, то лишняя циферка в ссылке вполне может мозолить глаза. Понимаю.

К сожалению, DLE не предоставляет нам другого типа ЧПУ, где бы не было ID новости, а было лишь ее название. Почему так? Сложно сказать. В сети можно встретить мнение, что сделано это в целях быстродействия. Поскольку id в таблице новостей имеет первичный ключ, это значит, что найти нужную запись по id можно очень быстро и DLE достанет нам полный текст по id новости действительно быстро. Если же убрать id и искать новость по ее алиасу (название транслитом), тогда процесс будет идти тем медленнее, чем больше новостей на сайте.

Однако это не совсем так, поскольку данная проблема надумана и легко решается. Достаточно проиндексировать поле, в котором хранится алиас, и поиск по данному полю будет производиться так же быстро, как и по полю id с первичным ключом. К слову, поле alt_name в таблице dle_post проиндексировано, для него установлен индекс KEY, т.е. выборка по данному полю будет осуществляться быстро. Так что проблема, как я и сказал выше, надумана и реализовать еще один тип ЧПУ или же просто убрать из двух первых ненужные ID — вполне реально.

Возможно, разработчики DLE в последующих версиях движка внесут соответствующие изменения, но пока что мы вынуждены довольствоваться тем, что есть, поскольку без изменений в коде самого движка убрать id новости в DLE не получится.

К слову, разработчики всегда принимают предложения от пользователей для будущих версий движка. Можете внести свое предложение, если такового еще нет, или проголосовать за уже внесенное здесь.