Как убрать из URL xfsearch на DLE » Onm | Блог вебмастера
    Данный материал предоставлен сайтом Onm.by исключительно в ознакомительных целях.
    Администрация не несет ответственности за его содержимое.

Как убрать из URL xfsearch на DLE

Для сайтов, построенных на CMS DLE, которые активно используют дополнительные поля, с 11 версии движка актуальна проблема xfsearch в URL. В данной статье разберёмся как это обойти. Одна из основных направлений CMS DataLife Engine - киносайты, которых полно на просторах интернета. Различного рода проекты онлайн кинотеатров используют большое количество дополнительных полей, для парсинга и вывода информации в статье (в данном случае, фильме). К слову, как настроить парсер для киносайта мы рассказывали не так давно, а также публиковали различного рода киношаблоны для DLE. Заходим в панель дополнительных полей сайта - в нашем случае имеем 35 дополнительных полей, которые не слабо нагружают базу данных (рекомендуем, по возможности, ограничиваться меньшим количеством полей). Но кто спорит - дополнительные поля облегчают работу не только веб мастеру, но и пользователю проще отсортировать записи по нужному критерию из дополнительной строки. А уже при использовании такой сортировки записей или поиска по дополнительным полям - получаем никому не нужную "xfsearch" в URL, который на фоне поискового запроса и домена сайта выглядит ужасно. К слову, данный хак проверен и актуален на версиях DLE, начиная с 11.
Первое, что необходимо сделать, найти несколько файлов: engine/modules/show.short.php, engine/modules/show.custom.php, engine/modules/topnews.php и engine/modules/show.full.php - Внимание! В последнем искомая строка присутствует дважды, заменить требуется в обоих случаях.
Находим строку: 
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" .$value[0]."/". urlencode( $value2 ) . "/\">" . $value2 . "</a>";
И заменяем на:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] .$value[0]."/". urlencode( $value2 ) . "/\">" . $value2 . "</a>";
Это ещё не всё. Теперь находим файл: engine/engine.php и находим:
$url_page = $config['http_home_url'] . "xfsearch/" . urlencode ( str_replace("'", "'", $xf) );
Или
$url_page = $config['http_home_url'] . "xfsearch/" . urlencode ( str_replace("&#039;", "'", $xf) );
Найденное, заменяем на:
$url_page = $config['http_home_url'] . urlencode($_GET['xn']) . "/" . urlencode ( str_replace("&#039;", "'", $xf) );
Далее следуем в файл .htaccess в корневой папке с сайтом, там находим:
RewriteRule ^xfsearch/(.*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
И после дописываем:
RewriteRule ^(year)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2 [L] 
RewriteRule ^(year)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2&cstart=$3 [L]
В данном случае запись выполнена для доп.поля с перекрёстной ссылкой "year", поэтому, при наличии большего количесства перекрёстных дополнительных полей, стоит дописать их также в файл .htaccess.  


Версия DataLife Engine  13.x 

Добавить комментарий

Кликните на изображение чтобы обновить код, если он неразборчив