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

Вопрос? Помогите с xfsearch

  • Автор темы Автор темы archi
  • Дата начала Дата начала

archi

Зелёный
Регистрация
11 Апр 2019
Сообщения
24
Рейтинг реакций
3
Баллы
3
Возраст
36
1/3
Автор темы
Решил убрать слово xfsearch из "перекрестных гиперссылок", но столкнулся с проблемой: при нажатии на год, например 2000 - находит все фильмы 2000 года и проскакивает несколько других годов (фильмы, у которых в других доп. полях есть значение "2000"). Как это убрать? Как сделать чтобы находило именно то, что нужно!? Версия движка 13.3.
P.S. Если перейти по ссылке /xfsearch/year/2000/ - находит исключительно фильмы 2000 года, без лишних, а /year/2000/ - находит лишнее.
P.P.S. Перестроение публикаций делал.

Правил так: в файлах engine/modules/show.short.php, engine/modules/show.full.php, engine/modules/show.custom.php, engine/modules/topnews.php

это

Код:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] .$value[0]."/". urlencode( $value2 ) . "/\">" . $value2 . "</a>";

на это
Код:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] .$value[0]."/". rawurlencode( $value2 ) . "/\">" . $value2 . "</a>";

в main.php это
Код:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" .$value[0]."/". rawurlencode( $value2 ) . "/\">" . $value2 . "</a>";

на это
Код:
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] .$value[0]."/". rawurlencode( $value2 ) . "/\">" . $value2 . "</a>";

в engine.php это
Код:
$url_page = $config['http_home_url'] . "xfsearch/" . rawurlencode ( str_replace(array("&#039;", "&quot;"), array("'", '"'), $xf) );

на это
Код:
$url_page = $config['http_home_url'] . rawurlencode($_GET['xn']) . "/" . rawurlencode ( str_replace(array("&#039;", "&quot;"), array("'", '"'), $xf) );
 
Последнее редактирование:
Автор темы
Кажется, нашел решение.
в engine.php заменил
Код:
%{$xf}%
на
Код:
%|{$xf}%
и все начало корректно отображаться

Хотя нет, все равно находит лишние фильмы...
 
Последнее редактирование:
сталкивался с этим, точно не помню где , но гуглил и нашел решение
 
Потерто
 
Последнее редактирование:
Автор темы
а в .htaccess что правили?
Что-то правили, иначе у вас ссылки типа /year/2000/ не работали бы

Код:
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]
 
Потерто
 
Последнее редактирование:
Автор темы
Попробуй вместо вышеуказанной тобой правки .htaccess прописать так:

RewriteRule ^(year)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=year/$2 [L]
RewriteRule ^(year)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=year/$2&cstart=$3 [L]
Работает! Спасибо.
 
Всем доброго времени, решил воспользоваться выше указанным примером, как убрать xfsearch из "перекрестных гиперссылок", вроде все получилось, но осталась самая малость доделать этот хак.
Для тех кто в теме помогите, сейчас ситуация такая, если ссылка состоит из одного слова то все работает нормально
Пример - (Джаз) ссылка получается такая //site/category/джаз,
но если два слова
Пример - (Популярная музыка) ссылка опять получается с xfsearch //site/xfsearch/category/Популярная+музыка
Заранее большое спасибо всем кто откликнется с советом.
 
ramor есть готовый плагин для этого, который на 14,0 вроде как работает, но лично его не проверял.
Код:
Установка:

1. Скачать и установить плагин:
2. Прописать правила (обязательно выше правил для категорий)

NGINX (nginx.conf -> server -> location):

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



Вставить выше:
location / {

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

 }


APACHE2 (.htaccess):

Найти:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]



Выше вставить:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[\.]+.*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
RewriteRule ^(.*[\.]+.*)/([^/]*)(/?)+$ index.php?do=xfsearch&xf=$1 [L]


3. Убрать редиректы из .htaccess связанные с xfsearch
RewriteRule ^xfsearch/(.*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [B,L]
RewriteRule ^xfsearch/(.*)/?$ index.php?do=xfsearch&xf=$1 [B,L]


4. Завести переадресацию для старых xfsearch (допустим на главную)

Найти:
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]


выше вставить:
RewriteRule ^xfsearch/(.*)$ / [R=301,L]



или на новую страницу:
RewriteRule ^xfsearch/(.*)$ /$1 [R=301,L]


5. Редиректы добавляем для того, что бы работал xfsearch для значений с точкой. Все новые перекрестные доп.поля будут работать и не будут требовать добавления правила в .htaccess

Автор: dj-avtosh
Версия DLE: 14
 

Вложения

Спасибо byroot, чуток полазив по скрипту DLE сам нашел как полностью убрать с ссылки /xfsearch/.
Если что, у меня сайт еще на лицензированной версии 12.0, так вот делюсь как я реализовал данный вопрос у себя на сайте.

В файлах движка:
\engine\modules\main.php
\engine\modules\show.custom.php
\engine\modules\show.full.php – тут два кода
\engine\modules\show.short.php
\engine\modules\topnews.php
в строке:

if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" .$value[0]."/". urlencode( $value2 ) . "/\">" . $value2 . "</a>";

удалил . "xfsearch/"

Получилось

if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] .$value[0]."/". urlencode( $value2 ) . "/\">" . $value2 . "</a>";


Потом в
.htaccess

в разделе # поиск по доп полям
после
RewriteRule ^xfsearch/(.*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
RewriteRule ^xfsearch/(.*)/?$ index.php?do=xfsearch&xf=$1 [L]

добавил:

RewriteRule ^(category)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=category/$2 [L]
RewriteRule ^(category)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=category/$2&cstart=$3 [L]
RewriteRule ^(country)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=country/$2 [L]
RewriteRule ^(country)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=country/$2&cstart=$3 [L]

И все прекрасно работает.

В л/с могу скинуть название сайта.

------------------------------------------------------------------------------------------------------------------------
P/S: Обновил скрипт DLE на v.14.3, выше представленный способ прекрасно работает.
 
Последнее редактирование:
Отправьте в лс название сайта, пожалуйста.
 

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

Назад
Сверху