Технический сбой

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

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


 barabanas    Стол заказов    2354    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 - -

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

LazyDev
PHP-developer

LazyDev - -

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

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

barabanas
Юзер

barabanas - -

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

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

Googledono
Юзер

Googledono - -

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

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

barabanas
Юзер

barabanas - -

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

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

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

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

Googledono
Юзер

Googledono - -

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

barabanas
Юзер

barabanas - -

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

"xfsearch/"

Меняем на :

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


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

Googledono
Юзер

Googledono - -

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

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

barabanas
Юзер

barabanas - -

// ################ Поиск новостей по доп. полям #################            
            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/"

LazyDev
PHP-developer

LazyDev - -

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

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

barabanas
Юзер

barabanas - -

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

Googledono
Юзер

Googledono - -

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

barabanas
Юзер

barabanas - -

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

Googledono
Юзер

Googledono - -

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

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

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

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

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

barabanas
Юзер

barabanas - -

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

Googledono
Юзер

Googledono - -

лично для тебя
Ищем в файлах /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 - -

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

Googledono
Юзер

Googledono - -

 $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) );

наверх