Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Стол заказов » Сделать чтобы поиск был строго по одному доп. полю для киносайта

Сделать чтобы поиск был строго по одному доп. полю для киносайта


 barabanas    12.08.2015    Стол заказов    1399    18 комментариев

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

site.ru/country
site.ru/year
site.ru/genre
site.ru/director
site.ru/actor

если я нажимаю на site.ru/year/2015 то показывало 2015 а не 2015, 1990 и т.д
или если site.ru/country/USA то показывало не только где есть USA но и USA, Germany, Italy

или

site.ru/country/Germany то Germany, USA, Japan

site.ru/director/Norman Buckley показывало не только где он один но и Norman Buckley, Ron Lagomarsino

надеюсь понятно описал

18 комментариев

barabanas
Юзер

barabanas - 12 августа 2015 16:00 -

забыл написать у меня DLE 10.5 UTF-8

PunPun
Эксперт

PunPun - 12 августа 2015 16:24 -

Чем этот вариант не подходит ? http://igameer.ru/port/50-fxfield.html

well​

barabanas
Юзер

barabanas - 12 августа 2015 16:37 -

ну я не знаю не видел его но если он для етого более точного поиска может и подходет но ето уже у меня сделано

Ищем в файлах /engine/modules/show.short.php, /engine/modules/show.custom.php и два раза /engine/modules/show.full.php для того чтоб поменялос с xfsearch на другое слово так я и непонимаю что делать помоги я заплачю

Googledono
Юзер

Googledono - 13 августа 2015 10:54 -

Цитата: barabanas
для того чтоб поменялос с xfsearch на другое слово так я и непонимаю что делать помоги я заплачю

а я вас не понял, что вы хотите. хотите xfsearch на своё слово заменить? или не знаете как искать в файлах?

barabanas
Юзер

barabanas - 13 августа 2015 11:02 -

у меня уже xfsearch заменено на свое слово.

год-year
страна-country и т.д

но идет не точныи поиск особено по годам site.ru/year/2015 мне показывает 2015, 1990, 2012

хочю сделать боле менее точныи поиск по доп. полям

Googledono
Юзер

Googledono - 13 августа 2015 12:34 -

так, этот хак и поможет... будет выводить xfsearch/year/2015
замените xfsearch на своё и радуйтесь

barabanas
Юзер

barabanas - 13 августа 2015 13:34 -

Далее открываем файл /engine/engine.php находим :

"xfsearch/"

Меняем на :

"xfsearch/" . urlencode($xn) . "/"


немогу наити у себя "xfsearch/"

Googledono
Юзер

Googledono - 13 августа 2015 14:06 -

// ################ Вывод профиля пользователя #################

и выше должны быть эти строки

barabanas
Юзер

barabanas - 13 августа 2015 14:12 -

// ################ Поиск новостей по доп. полям #################            
            if ($cstart) {
                $cstart = $cstart - 1;
                $cstart = $cstart * $config['news_number'];
            }

            $xf = urldecode ( $_GET['xf'] );

            if ( $config['charset'] == "windows-1251" AND $config['charset'] != detect_encoding($xf) ) {

                if( function_exists( 'mb_convert_encoding' ) ) {
            
                    $xf = mb_convert_encoding( $xf, "windows-1251", "UTF-8" );
            
                } elseif( function_exists( 'iconv' ) ) {
                
                    $xf = iconv( "UTF-8", "windows-1251//IGNORE", $xf );
                
                }

            }

            $xf = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $xf ) ) ), ENT_QUOTES, $config['charset'] ) );
            $url_page = $config['http_home_url'] . urlencode($_GET['xn']) . "/" . urlencode ( str_replace("'", "'", $xf) );
            $user_query = "do=xfsearch&xf=" . urlencode ( str_replace("'", "'", $xf) );
        
            if (isset ( $_SESSION['dle_sort_xfsearch'] )) $news_sort_by = $_SESSION['dle_sort_xfsearch'];
            if (isset ( $_SESSION['dle_direction_xfsearch'] )) $news_direction_by = $_SESSION['dle_direction_xfsearch'];
            
            $sql_select = "SELECT SQL_CALC_FOUND_ROWS p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}xfields LIKE '%{$xf}%' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
            $sql_count = "SELECT FOUND_ROWS() as count";
            $allow_active_news = true;
        
        } elseif ($subaction == 'userinfo') {
            // ################ Вывод профиля пользователя #################



и где ето ? "xfsearch/"

PunPun
Эксперт

PunPun - 13 августа 2015 14:14 -

barabanas, это из-за ваших правок, откатитесь назад и сделайте по инструкции.

well​

barabanas
Юзер

barabanas - 13 августа 2015 14:19 -

извиняюсь виноват посмотрел на старыи engine нашол. и где надо переименовать xfsearch на свое слово чтоб было так site.ru/find/year/2015 ?

Googledono
Юзер

Googledono - 13 августа 2015 14:26 -

да, так. только и в последующих шагах заменяйте xfsearch на find (функции для ЧПУ)

barabanas
Юзер

barabanas - 13 августа 2015 14:36 -

я ничего уже не понимаю какои еще чпу? ты лутче скажи мне какие тебе фаилы прислать ты мне сделаи я тебе переведу 5$ ок ?

Googledono
Юзер

Googledono - 13 августа 2015 18:04 -

боже, вы когда устанавливали, было написано "Включить ЧПУ? (Человекопонятное УРЛ)"

всё, что пишется примерно так:
 $url_page = $config['http_home_url'] . "xfsearch/" . urlencode($xn) . "/" . urlencode ( str_replace("'", "'", $xf) );

Это функция вывода для ЧПУ
а что выводится примерно вот так:
do=xfsearch&xf=

это обычный вывод, без ЧПУ.
посему и говорю - когда будете заменять - не трогайте подобные строки

если вы всё ещё не понимаете, то пишите в скайп или асю
ICQ: 12309700
Skype: af_animefighter

barabanas
Юзер

barabanas - 13 августа 2015 18:17 -

я все сделал по етому хаку http://igameer.ru/port/50-fxfield.html теперь все нормально. но незнаю как поменять xfsearch на свое слово где надо переписать ?

Googledono
Юзер

Googledono - 13 августа 2015 18:41 -

лично для тебя
Ищем в файлах /engine/modules/show.short.php, /engine/modules/show.custom.php и два раза /engine/modules/show.full.php
$value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . $preg_safe_name . "/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";

меняем на
[code
$value3[] = "<a href=\"" . $config['http_home_url'] . "СВОЁСЛОВО/" . $preg_safe_name . "/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
][/code]
Далее открываем файл /engine/engine.php находим :
"xfsearch/" . urlencode($xn) . "/"

меняем на
"СВОЁСЛОВО/" . urlencode($xn) . "/"

Далее открыть .htaccess (там где index.php) найти :
RewriteRule ^xfsearch/([^/]*)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2 [L]
RewriteRule ^xfsearch/([^/]*)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2&cstart=$3 [L]

меняем на
RewriteRule ^СВОЁСЛОВО/([^/]*)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2 [L]
RewriteRule ^СВОЁСЛОВО/([^/]*)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2&cstart=$3 [L]

barabanas
Юзер

barabanas - 13 августа 2015 20:58 -

переписал все хорошо большое тебе спасиба

Googledono
Юзер

Googledono - 13 августа 2015 14:20 -

 $xf = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $xf ) ) ), ENT_QUOTES, $config['charset'] ) );
            $url_page = $config['http_home_url'] . urlencode($_GET['xn']) . "/" . urlencode ( str_replace("'", "'", $xf) );
            $user_query = "do=xfsearch&amp;xf=" . urlencode ( str_replace("&#039;", "'", $xf) );
на это заменить
$xn = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $_GET['xn'] ) ) ), ENT_QUOTES, $config['charset'] ) );
            $xf = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $xf ) ) ), ENT_QUOTES, $config['charset'] ) );
            $url_page = $config['http_home_url'] . "xfsearch/" . urlencode($xn) . "/" . urlencode ( str_replace("'", "'", $xf) );
            $user_query = "do=xfsearch&xf=" . urlencode ( str_replace("'", "'", $xf) );

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