Редактор темы

[хак] делаем ссылку на полную новость вида сайт.ру/категория/id/чпу-новости/

DLEPlugins

Кодер
Регистрация
29 Ноя 2015
Сообщения
1.601
Рейтинг реакций
968
Баллы
113
1/3
Автор темы
Как сделать вид ссылок подобно кинопоиску я написал тут. В этой теме поделюсь с вами хаком, который использую на своих сайтах. Он делает ссылку на полную новость такой:
сайт.ру/категория/id/чпу-новости/
то есть к примеру будет
Правки аналогичны выше указанному хаку, отличается лишь заменяемой частью.

1. Открываем все перечисленные ниже файлы
\engine\ajax\adminfunction.php,\engine\ajax\comments.php,\engine\ajax\editcomments.php,\engine\ajax\search.php,\engine\classes\google.class.php,\engine\inc\cmoderation.php,\engine\inc\editnews.php,\engine\modules\addcomments.php,\engine\modules\show.custom.php,\engine\modules\show.full.php,\engine\modules\show.short.php и \engine\modules\topnews.php
ищем во всех этих файлах код
PHP:
$row['id'] . "-" . $row['alt_name'] . ".html";
заменить на код
PHP:
$row['id'] . "/" . $row['alt_name'] . "/";
2. Далее открываем следующие файлы \engine\classes\comments.class.php,\engine\inc\cmoderation.php,\engine\inc\comments.php и \engine\inc\complaint.php
найти в них весь стречающийся код код
PHP:
$row['post_id'] . "-" . $row['alt_name'] . ".html";
заменить на
PHP:
$row['post_id'] . "/" . $row['alt_name'] . "/";
3. Открываем два файла - \engine\ajax\find_relates.php и \engine\modules\show.full.php и ищем весь повторяющийся код в них
PHP:
$related['id'] . "-" . $related['alt_name'] . ".html";
меняем на код
PHP:
$related['id'] . "/" . $related['alt_name'] . "/";
4. Наконец открываем файл .htaccess
ищем код
PHP:
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]

RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
RewriteRule ^([0-9]+)-(.*).html$ index.php?newsid=$1&seourl=$2 [L]
меняем на
PHP:
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)/(.*)/$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)/(.*)/$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)/(.*)/$ engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/([0-9]+)/(.*)/$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]

RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)/(.*)/$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
RewriteRule ^page,([0-9]+),([0-9]+)/(.*)/$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)/(.*)/$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
RewriteRule ^([0-9]+)/(.*)/$ index.php?newsid=$1&seourl=$2 [L]

Под конец очистить кеш в админке. Этот хак не будет работать, если у вас включена "обработка неверных ссылок чпу", ее побороть у меня пока что не получилось.
 
@DomiTori, привет! подскажи пожалуйста, сейчас новый сайт ставлю на движке 11.1 какую лучше базу выбрать http://take.ms/Z7UHB
 
Автор темы
Какая разница между ними, я хз

вот разница.какой выбрать не знаю
2. Добавлена поддержка движка InnoDB для базы данных MySQL. При установке скрипта вы можете выбрать, какой тип хранения использовать. Для выбора доступно использование либо InnoDB либо MyISAM. При выборе движка мы рекомендуем руководствоваться следующими критериями. Если ваш сайт будет редко обновляться новым контентом (регистрация большого количества пользователей, активное добавление новых комментариев и т.д.) т.е. сайт "справочник", то рекомендуется использовать MyISAM тип, он быстрее при выборке из базы данных. Если на сайте планируется активное обсуждение чего-либо большим количеством пользователей, то рекомендуется использовать InnoDB тип. Для большинства сайтов оптимальным выбором будет именно InnoDB, т.к. в будущем он более легко масштабируется. Выбор движка базы данных доступен только если на вашем сервере установлена версия MySQL не ниже чем 5.6.4. Если версия MySQL сервера ниже, то доступно использование только MyISAM.
 
Автор темы
вот разница.какой выбрать не знаю
2. Добавлена поддержка движка InnoDB для базы данных MySQL. При установке скрипта вы можете выбрать, какой тип хранения использовать. Для выбора доступно использование либо InnoDB либо MyISAM. При выборе движка мы рекомендуем руководствоваться следующими критериями. Если ваш сайт будет редко обновляться новым контентом (регистрация большого количества пользователей, активное добавление новых комментариев и т.д.) т.е. сайт "справочник", то рекомендуется использовать MyISAM тип, он быстрее при выборке из базы данных. Если на сайте планируется активное обсуждение чего-либо большим количеством пользователей, то рекомендуется использовать InnoDB тип. Для большинства сайтов оптимальным выбором будет именно InnoDB, т.к. в будущем он более легко масштабируется. Выбор движка базы данных доступен только если на вашем сервере установлена версия MySQL не ниже чем 5.6.4. Если версия MySQL сервера ниже, то доступно использование только MyISAM.
Судя по словам разработчика значит нам всем inodb подходит. Myisam для сайта визитки или одностраничника какогото, нах оно вообще нада
 
Этот хак не будет работать, если у вас включена "обработка неверных ссылок чпу", ее побороть у меня пока что не получилось.
У меня работает вроде. Или я чего-то не замечаю?
 
Автор темы
У меня работает вроде. Или я чего-то не замечаю?
не должно по идеи. по крайней мере у меня при включенной опции редиректит на стандартную ссылку, по которой новость не найдена. хз даже
 
Не забывайте одно, чтоб использовать innodb нужна спец настройка из коробки конфигурашка не очень, вангую на частые падения базы 🙂
 
Автор темы
для тех кто использует модуль HTML SiteMap от Alaev
Открываем /engine/modules/sitemap.php
ищем в нем участок кода
PHP:
if(intval($post['category']) && $this->dle_api->dle_config['seo_type'] == 2)
                    {
                        $url = $this->dle_api->dle_config['http_home_url'].get_url(intval($post['category'])).'/'.$post['id'].'-'.$post['alt_name'].'.html';
                    }
                    else
                    {
                        $url = $this->dle_api->dle_config['http_home_url'].$post['id'].'-'.$post['alt_name'].'.html';
                    }
Заменяем на код
PHP:
if(intval($post['category']) && $this->dle_api->dle_config['seo_type'] == 2)
                    {
                        $url = $this->dle_api->dle_config['http_home_url'].get_url(intval($post['category'])).'/'.$post['id'].'/'.$post['alt_name'].'/';
                    }
                    else
                    {
                        $url = $this->dle_api->dle_config['http_home_url'].$post['id'].'/'.$post['alt_name'].'/';
                    }
Просьба модераторов добавить правку в первый пост
 
а статические страницы все равно останутся с html на конце да?
 

Похожие темы Последние темы Популярные темы

Назад
Сверху