Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Модули для DLE » 0.18 Короткая ссылка на новости (site.ru/{id}) [плагин]

0.18 Короткая ссылка на новости (site.ru/{id}) [плагин]


     08.10.2019    Модули для DLE    3959    52 комментария

Краткая информация о модуле (хаке)

Автор: dj-avtosh
Версия DLE: 13
Контакты: telegram: @blob42
Условия продажи: Freeware
Цена: Бесплатно
Легкий и быстрый плагин для изменения ссылок по всему сайту.

Для работы решения должен быть установлен тип SEO-ссылок: 1 или 2

Превращает по всему сайту ссылки: site.ru/{cat}/text-{id} в site.ru/{id}


Способ установки:

1. Загрузить и установить плагин в админке (/admin.php?mod=plugins)
2. Прописать правила:

- Для apache2 (httpd) [файл .htaccess] (желательно выше всех правил):

RewriteRule ^([0-9]+)(/?)+$ index.php?newsid=$1 [L]


- Для nginx [conf-файл из /etc/nginx.conf]:

rewrite ^/([0-9]+)(/?)+$ /index.php?newsid=$1 last;


--------------------------------------------------------------------------------------------------------------

P.S.

Если вы хотите ссылку site.ru/123.html, тогда открываем плагин и

$newsPattern = "$1";
$newsCommentsPattern = "$3";


заменяем на

$newsPattern = "$1.html";
$newsCommentsPattern = "$3.html";


и переделываем правила apache2 или nginx


А так же (если вам нужна переадресация со старых адресов на новый, то должно в .htaccess работать такое):

Тип ЧПУ 1:
RewriteRule ^([0-9]+)-(.*).html$ /$1 [R=301,L]



Тип ЧПУ 2:
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$2 [R=301,L]


* можно добавить оба - будет работать.


------------------------------

* не меняются ссылки в BlockPro? есть решение:

engine/modules/base/core/base.php

все что с :

 $url = ... 



меняем на:

$url = $this->dle_config['http_home_url'] . $data['id'];


----------------------------

Скачать плагин (версия 0.18): news-new-link-type.xml.zip [1.76 Kb] (cкачиваний: 134)

Отредактировал 9-10-2019, 16:51 - dj-avtosh
Причина: Исправлена постраничная навигация в комментариях внутри новости, исправлены ссылки при генерации в sitemap - просьба перекачать!

52 комментария

dj-avtosh
PHP-developer

dj-avtosh - 3 октября 2019 15:36 -

Комментарий для плюсов.

Добавил версию 0.18beta
- Исправлена постраничная навигация в новости
- Исправлена генерация sitemap

Добавляю коммент:

Что бы было /категория/{id}:

В двух местах найти

$str = preg_replace( '#https?://.*?page,([0-9]+),([0-9]+),([0-9]+)-.*\.html#i', '/' . $newsCommentsPattern . '/?news_page=$1&cstart=$2', $str );

      $str = preg_replace( '#https?:\/\/.*\/([0-9]+)-.+\.html#i', '/' . $newsPattern, $str );


и заменить:

$str = preg_replace( '#https?://.*?page,([0-9]+),([0-9]+),([0-9]+)-(.*)\.html#i', '/' . $newsCommentsPattern . '/?news_page=$1&cstart=$2&seourl=$4', $str );

      $str = preg_replace( '#https?://.*/(.*)/([0-9]+)-.+\.html#i', '/' . $newsPattern, $str );


Использовать паттерн:

 $newsPattern = "$1/$2.html";
      $newsCommentsPattern = "$3/$4.html";


APACHE2:

RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]

Переадресация со старых на новые
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$1/$2 [R=301,L]


NGINX:

nginx rewrite ^/([^.]+)/([0-9]+)(/?)+$ /index.php?seocat=$1&newsid=$2 last;


------

ВНИМАНИЕ!

Что бы не сломать системные пути, делаем так для NGINX:

Удаляем это:

    rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last; 
    rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last


В самый низ над всеми правилами вставляем это:

    rewrite ^/([^.]+)/([0-9]+)(/?)+$ /index.php?seocat=$1&newsid=$2 last;
    rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last;
    rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last;


APACHE:

СТРОГО над этим:

RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]


вставляем это:

RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

amnistik
Юзер

amnistik - 3 октября 2019 17:21 -

Спасибо тебе Добрый человек, давненько искал подобное решение!, только у меня почему то на DLE 13.2 не работает, карявит немного шаблон, и урл не изменился, при попытке удалить все кроме id выдает вообще хрень какуюто, новости за 1990 год,

dj-avtosh
PHP-developer

dj-avtosh - 3 октября 2019 18:55 -

Просьба попробовать обновленный и отписаться. В версии должно быть 0.12

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

amnistik
Юзер

amnistik - 3 октября 2019 20:07 -

Уже шаблон не ломает, но не переходит на полную новость, (что то пошло не так) а при клике (открыть в новой вкладке выдает такое https://prnt.sc/pegoo8

dj-avtosh
PHP-developer

dj-avtosh - 3 октября 2019 20:10 -

прописали ли условие в .htaccess?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

amnistik
Юзер

amnistik - 3 октября 2019 20:23 -

Да прописал,
Извиняюсь, мой бок, забыл сохранить в .htaccess теперь все работает. Еще раз Спасибо!

dj-avtosh
PHP-developer

dj-avtosh - 3 октября 2019 20:36 -

всегда пожалуйста

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

amnistik
Юзер

amnistik - 5 октября 2019 11:32 -

Здравствуй, только обнаружил что теперь не хочет искать по сайту похожие новости https://prnt.sc/pf5jd8

dj-avtosh
PHP-developer

dj-avtosh - 5 октября 2019 12:21 -

Исправлено и перезалито.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shim
Юзер

shim - 5 октября 2019 16:28 -

DLE 13.3 Установил, прописал,почистил,обновил.
При переходе в полную новость
https://i.imgur.com/7pK0W3h.png

dj-avtosh
PHP-developer

dj-avtosh - 5 октября 2019 17:38 -

убедитесь, что прописали в .htaccess правило


RewriteRule ^([0-9]+)(/?)$ index.php?newsid=$1 [L]

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shim
Юзер

shim - 5 октября 2019 17:44 -

прописал 100%

dj-avtosh
PHP-developer

dj-avtosh - 5 октября 2019 17:45 -

ошибка указывает именно на то, можете написать мне в телегу - посмотрю.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shim
Юзер

shim - 5 октября 2019 18:00 -

dj-avtosh, спасибо за помощь в решении, всё заработало
- Для apache2 (httpd) [файл .htaccess] (желательно выше всех правил):

dj-avtosh
PHP-developer

dj-avtosh - 5 октября 2019 18:01 -

спасибо за отзыв

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

pika
Юзер

pika - 5 октября 2019 23:52 -

Подскажите как сделать так (site.ru /248-id.html )

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2019 00:21 -

Внутри плагина ВСЕ (в 0.16 оно 2 раза)

$newsPattern = "$1";


меняем на

$newsPattern = "$1-id.html";


Правила для .htaccess будет такое:

RewriteRule ^([0-9]+)-id.html(/?)$ index.php?newsid=$1 [L]

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

pika
Юзер

pika - 6 октября 2019 01:07 -

Спасибо. а для старых новостей правила ( RewriteRule ^([0-9]+)-(.*)-id.html $ /$1 [R=301,L] ) Я полагаю так? Всё получилось спасибо ...

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2019 01:30 -

нет, правая часть должна соответствовать новому паттерну.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2019 02:06 -

Тип ЧПУ 1:
RewriteRule ^([0-9]+)-(.*).html$ /$1-id.html [R=301,L]




Тип ЧПУ 2:
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$2-id.html [R=301,L]

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2019 02:41 -

а этот неправильный, его удалите.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

pika
Юзер

pika - 6 октября 2019 02:21 -

Я всё делала правильно, но в админке нажимаешь просмотр , перекидывает на просто (site.ru /248 ) и выдаёт ошибку

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2019 02:53 -

уберите свой "придуманный" редирект. Я Вам написал верный ответ.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Sander
PHP-developer

Sander - 8 октября 2019 15:08 -

Есть ряд причин, почему я никогда не хотел браться за разработку такого модуля:
1. Обработка неправильных URL адресов
2. Карта сайта.
3. Быстрый поиск (и find_relates.php).
3. {PAGEBREAK} - постраничная навигация в новости
4. Постраничная навигация в комментах
5. Версия для печати.
6. Все сторонние модули не использующие класс dle_templates при ajax выводе

В остальном по сути наверно и нет необходимости в модуле, достаточно правки в htaccess и в шаблоне просто прописывать адрес: example.com/{news-id}

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

dj-avtosh
PHP-developer

dj-avtosh - 8 октября 2019 15:17 -

А никто и не спорит, что всегда есть узкие места - для этого тут и создано обсуждение.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 8 октября 2019 15:22 -

2. Карта сайта.


Исправлено

3. Быстрый поиск (и find_relates.php).


учтено в плагине


4. Постраничная навигация в комментах


спасибо за замечание, исправлено.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Afro11
Юзер

Afro11 - 9 октября 2019 05:56 -

А можно данным плагином менять чпу на адрес новости следующего вида:
site/батареи/имя новости/

батареи-постоянное слово, не категория

???

dj-avtosh
PHP-developer

dj-avtosh - 9 октября 2019 11:42 -

имя новости? можно id новости.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Afro11
Юзер

Afro11 - 9 октября 2019 11:48 -

не, с id все понятно, именно alt_name, как в чпу 1, только без id, без html и с произвольным словом после урла сайта

dj-avtosh
PHP-developer

dj-avtosh - 9 октября 2019 12:00 -

В DLE id является ключевым параметром. Так что нет. Либо во всех скриптах получать id по alt_name. Данный плагин делает совсем другое.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 9 октября 2019 12:01 -

Ссылку плагин Вам построит, просто новости открываться не будут.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Kentavr
Юзер

Kentavr - 18 октября 2019 17:32 -

Автор подскажи пожалуйста как сделать чтобы в конце всегда был слеш например http://site.ru/3995/

dj-avtosh
PHP-developer

dj-avtosh - 18 октября 2019 20:52 -

использовать в обоих местах такой паттерн:

$newsPattern = "$1/";

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Kentavr
Юзер

Kentavr - 18 октября 2019 22:59 -

Спасибо за ответ и за плагин. Классная штука!

dj-avtosh
PHP-developer

dj-avtosh - 19 октября 2019 16:04 -

Рад был помочь.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

super120
Юзер

super120 - 30 октября 2019 00:16 -

А реально ли сделать чтобы данный плагин работал только с определенной категорией и в ссылке было видно имя категории?
У меня Тип ЧПУ 2. Нужно чтобы везде было site.ru/category/{id}-title.html, а, скажем, в категории под номером 24 было так site.ru/category24/{id}.html

dj-avtosh
PHP-developer

dj-avtosh - 30 октября 2019 04:13 -

Вполне, однако будет дубль и полной страницы новости.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

slaze
Юзер

slaze - 5 декабря 2019 21:18 -

Можно ли с помощью вашего модуля поменять стандартные урлы новостей?
http://site.ru/id-altname.html
на
http://site.ru/altname_id.html

dj-avtosh
PHP-developer

dj-avtosh - 8 декабря 2019 15:08 -

Можно, но с доп. манипуляциями в коде плагина.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

slaze
Юзер

slaze - 15 декабря 2019 17:52 -

В админке на странице редактирования новостей
_http://domen.com/admin.php?mod=editnews&action=list
остаются урлы стандартного вида.
Нужно так же внести правки в файл engine/inc/editnews.php

dj-avtosh
PHP-developer

dj-avtosh - 16 декабря 2019 00:47 -

если вы о нажатии на кол-во просмотров, то вполне мог упустить этот момент.

Однако этот момент совсем не критичный, потому что есть 301ая переадресация со старых адресов на новый.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

web102
Юзер

web102 - 13 февраля 2020 09:02 -

Доброго времени!

Уважаемый автор, возможно ли сделать так, чтобы в URL фигурировала категория (категории) - site.ru/category1/234 или site.ru/category1/category2/345?

Спасибо.

dj-avtosh
PHP-developer

dj-avtosh - 13 февраля 2020 11:40 -

Здравствуйте, стандартно нет. Хак заточен под самый короткий вариант ссылок.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

web102
Юзер

web102 - 13 февраля 2020 20:21 -

Не подскажете, в какую сторону копать для реализации данной возможности?

djgelius
Юзер

djgelius - 18 февраля 2020 11:17 -

все на самом деле проще есть тег {news-id} он выводит id новости, с нему лепите site.ru/{news-id}-.html и все у вас есть короткая ссылка только нужно включить вроде ЧПУ.
это только для поделиться если делать

Zipper
Юзер

Zipper - 15 мая 2020 16:14 -

А как сделать к примеру site.com/category/news ?

Sanerko
Юзер

Sanerko - 29 октября 2020 16:56 -

dj-avtosh Спасибо за плагин.

canonical имеет относительный url <link rel="canonical" href="/49/"> возможно исправить на абсолютный?

Sanerko
Юзер

Sanerko - 29 октября 2020 17:42 -


dj-avtosh
PHP-developer

dj-avtosh - 5 ноября 2020 12:08 -

В первый коммент добавил инструкцию как вывести категорию в url.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Coffee
Юзер

Coffee - 22 апреля 2021 16:50 -

На 14.2 не получилось заставить работать вывод категорий. Ссылки меняют свой вид, но при переходе в новость выдается ошибка. Вариант с урлом в виде только ид-а работает.

dj-avtosh
PHP-developer

dj-avtosh - 22 апреля 2021 16:52 -

что-то не так сделали в .htaccess

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Coffee
Юзер

Coffee - 22 апреля 2021 17:42 -

Какие только варианты не перебрал.

RewriteRule ^([0-9]+)(/?)+$ index.php?newsid=$1 [L]
+
RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$1/$2 [R=301,L]

------

RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$1/$2 [R=301,L]

------
RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]
+
RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]
СТРОГО над этим:
RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх