Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Вопросы- ответы", создана пользователем archi, 10 сен 2020.

10.09.20 в 18:15
24.07.21 в 01:23
10
875
0
  1. TopicStarter Overlay
    archi

    archi Зелёный

    Регистрация:
    11 апр 2019
    Сообщения:
    24
    Лучших ответов:
    0
    Рейтинги:
    +4 / 0 / -0
    Решил убрать слово 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) );
     
    #1 archi, 10 сен 2020
    Последнее редактирование: 10 сен 2020
  2. TopicStarter Overlay
    archi

    archi Зелёный

    Регистрация:
    11 апр 2019
    Сообщения:
    24
    Лучших ответов:
    0
    Рейтинги:
    +4 / 0 / -0
    Кажется, нашел решение.
    в engine.php заменил
    Код:
    %{$xf}%
    на
    Код:
    %|{$xf}%
    и все начало корректно отображаться

    Хотя нет, все равно находит лишние фильмы...
     
    #2 archi, 10 сен 2020
    Последнее редактирование: 10 сен 2020
  3. Forian

    Forian Местный

    Регистрация:
    24 окт 2019
    Сообщения:
    1.374
    Лучших ответов:
    3
    Рейтинги:
    +317 / 45 / -0
    сталкивался с этим, точно не помню где , но гуглил и нашел решение
     
  4. Пафнутий

    Пафнутий Бывалый

    Регистрация:
    7 май 2020
    Сообщения:
    277
    Лучших ответов:
    3
    Рейтинги:
    +94 / 14 / -0
    Потерто
     
    #4 Пафнутий, 10 сен 2020
    Последнее редактирование: 12 фев 2022
  5. TopicStarter Overlay
    archi

    archi Зелёный

    Регистрация:
    11 апр 2019
    Сообщения:
    24
    Лучших ответов:
    0
    Рейтинги:
    +4 / 0 / -0
    Код:
    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]
     
  6. Пафнутий

    Пафнутий Бывалый

    Регистрация:
    7 май 2020
    Сообщения:
    277
    Лучших ответов:
    3
    Рейтинги:
    +94 / 14 / -0
    Потерто
     
    #6 Пафнутий, 10 сен 2020
    Последнее редактирование: 12 фев 2022
    • Нравится Нравится x 1
  7. TopicStarter Overlay
    archi

    archi Зелёный

    Регистрация:
    11 апр 2019
    Сообщения:
    24
    Лучших ответов:
    0
    Рейтинги:
    +4 / 0 / -0
    Работает! Спасибо.
     
    • Согласен Согласен x 1
  8. ramor

    ramor Зелёный

    Регистрация:
    26 апр 2021
    Сообщения:
    4
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Всем доброго времени, решил воспользоваться выше указанным примером, как убрать xfsearch из "перекрестных гиперссылок", вроде все получилось, но осталась самая малость доделать этот хак.
    Для тех кто в теме помогите, сейчас ситуация такая, если ссылка состоит из одного слова то все работает нормально
    Пример - (Джаз) ссылка получается такая //site/category/джаз,
    но если два слова
    Пример - (Популярная музыка) ссылка опять получается с xfsearch //site/xfsearch/category/Популярная+музыка
    Заранее большое спасибо всем кто откликнется с советом.
     
  9. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.205 / 74 / -0
    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
     

    Вложения:

    • Нравится Нравится x 2
  10. ramor

    ramor Зелёный

    Регистрация:
    26 апр 2021
    Сообщения:
    4
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Спасибо 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, выше представленный способ прекрасно работает.
     
    #10 ramor, 25 июн 2021
    Последнее редактирование: 25 июл 2021
  11. Naussan

    Naussan Зелёный

    Регистрация:
    10 июл 2021
    Сообщения:
    9
    Лучших ответов:
    0
    Рейтинги:
    +0 / 1 / -0
    Отправьте в лс название сайта, пожалуйста.
     
    • Смешно Смешно x 1
Похожие темы
  1. pouf
    Ответов:
    21
    Просмотров:
    2.837
  2. kogtehvost
    Ответов:
    2
    Просмотров:
    1.827
  3. Rolec
    Ответов:
    2
    Просмотров:
    590
  4. aeneas
    Ответов:
    3
    Просмотров:
    395
Загрузка...
Яндекс.Метрика