
Представляем на https://dle9.com/ все для сайта dle адаптированную версию модуля Searchfields_v5.1 для DLE 10.3 позволяющая вам сделать Поиск по дополнительным полям на DLE 10.3, дле 10.2, 10.1 и ниже. Modules DLE пригодиться сайтам кино тематики, игровым, софт ресурсам и другим проектам, где собрана большая коллекция информации и распределена по категориям, жанрам и т.д. с использованием доп. полей.
Установка модуля "Поиск по дополнительным полям" на DLE 10.2 адаптирован для 10.3
Заметка: Установка должна быть выполнена полностью и без ошибок, не смотря на то, какие шаги и в какой последовательности будут выполнены
1. Открыть файл .htaccess
Найти:
# Редиректы RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]
Ниже вставить:
# Вывод по дополнительному полю RewriteRule ^sf(/?)+$ index.php?do=search_xf [L] RewriteRule ^sf/(.*)$ index.php?do=search_xf&q=$1 [L]
2. Подключение модуля. Открыть файл /engine/engine.php
Найти:
} elseif ($do == 'lastnews') {
Выше добавить:
} elseif ($do == 'search_xf') { include ENGINE_DIR . '/modules/search_xf.php'; $config['allow_cache'] = false;
Найти:
elseif ($do == 'xfsearch') $nam_e = $xf;
Ниже добавить:
elseif ($do == 'search_xf') $nam_e = 'Результаты выборки';
Кеширование (можно пропустить, не изучено).
Найти:
} elseif ($news_found and $cache_id < 6) create_cache ( "news", $tpl->result['content'], $cache_id . $cache_prefix, true );
Заменить на:
} elseif ($news_found and $cache_id < 6) { if($do != 'search_xf') { create_cache ( "news", $tpl->result['content'], $cache_id . $cache_prefix, true ); } }
3. Шаблонизатор. Открыть файл /engine/inc/options.php
Найти:
showRow( $lang['opt_sys_reason'], $lang['opt_sys_reasond'], "<textarea style="width:100%;height:150px;" name="save_con[offline_reason]">{$config['offline_reason']}</textarea>" );
Ниже вставить:
showRow( "ShortStory для SearchFields", "Шаблон короткой новости для поиска по дополнительным полям", "<input class="edit bk" type=text style="text-align: center;" name="save_con[sf_show_theme]" value="{$config['sf_show_theme']}" size=30>" );
4. Навигация. Открыть файл /engine/modules/show.short.php
Найти:
} elseif( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
Ниже вставить:
elseif( $do == 'search_xf' && $config['sf_show_theme'] ) $tpl->load_template( $config['sf_show_theme'] . '.tpl' );
Найти ДВА раза:
if ($j == 1) $pages .= "<a href="" . $url_page . "/">$j</a> "; else $pages .= "<a href="" . $url_page . "/page/" . $j . "/">$j</a> ";
Заменить ДВА раза на:
if ($j == 1){ if($do == 'search_xf') $pages .= "<a href="" . $url_page . "">$j</a> "; else $pages .= "<a href="" . $url_page . "/">$j</a> "; } else { if($do == 'search_xf') $pages .= "<a href="" . $url_page . "page:" . $j . "/">$j</a> "; else $pages .= "<a href="" . $url_page . "/page/" . $j . "/">$j</a> "; }
Найти:
$next = $url_page . '/page/' . $next_page . '/';
Заменить на:
$next = $do == 'search_xf' ? $url_page . 'page:' . $next_page . '/' : $url_page . '/page/' . $next_page . '/';
Найти:
$prev_page = $url_page . "/page/" . $prev . "/";
Заменить на:
$prev_page = $do == 'search_xf' ? $url_page . "page:" . $prev . "/" : $url_page . "/page/" . $prev . "/";
Найти:
$prev_page = $url_page . "/";
Заменить на:
$prev_page = $do == 'search_xf' ? $url_page : $url_page . "/";
Найти:
if( $config['allow_alt_url'] ) $pages .= "<a href="" . $url_page . "/">1</a> <span class="nav_ext">{$lang['nav_trennen']}</span> ";
Заменить на:
if( $config['allow_alt_url'] ) $pages .= $do =='search_xf' ? "<a href="" . $url_page . "">1</a> <span class="nav_ext">{$lang['nav_trennen']}</span> " : "<a href="" . $url_page . "/">1</a> <span class="nav_ext">{$lang['nav_trennen']}</span> ";
Найти:
$pages .= $nav_prefix . "<a href="" . $url_page . "/page/{$enpages_count}/">{$enpages_count}</a>";
Заменить на:
{ if($do == 'search_xf') $pages .= $nav_prefix . "<a href="" . $url_page . "page:{$enpages_count}/">{$enpages_count}</a> "; else $pages .= $nav_prefix . "<a href="" . $url_page . "/page/{$enpages_count}/">{$enpages_count}</a>"; }
В нужном месте шаблона main.tpl вставить
{include file="xf.tpl"}
При необходимости отредактировать форму под свои нужды.
Так же возможно использование технологии AJAX при поиске
Для этого создать файл libs.js (подключить его в main.tpl как это сделано дефаулт шаблоне) и если у вас есть подключенный файл .js вашего шаблона надо добавить следующее:
/* Ajax xf */ $(function(){$('#xf').submit(function(e){e.preventDefault();ShowLoading("Идет сортировка");var m_data=$(this).serialize();$.ajax({type:"GET",url:"/",dаta:m_data,success:function(data){$('#dle-content').empty($('#dle-content',data).html());$('#dle-content').prepend($('#dle-content',data).html());},error:function(data){DLEalert('Объектов, удовлетворяющих параметрам запроса, не обнаружено','Ошибка')}});HideLoading("Завершено");});});
Дополнение:
При создании дополнительного поля у нас есть возможность подключить "Перекрёстные ссылки". Но такой поиск не очень точный, он может вывести вам не то, что нужно. К примеру, в новости мы нажимаем на ссылку HDTV (значение доп.поля), при этом в адресной ссылке будет отображаться /xfsearch/HDTV, но на деле нам будут показаны все новости, где встречается слово HDTV (не только по доп.полям). Для того, чтобы при клике в новости по значению доп.поля, велся поиск ТОЛЬКО по значениям доп.поля, равным HDTV, делаем следующее:
1. Открыть файл /engine/show.short.php
Найти:
if( $config['allow_alt_url'] ) $value3[] = "<a href="" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/">" . $value2 . "</a>"; else $value3[] = "<a href="$PHP_SELF?do=xfsearch&xf=" . urlencode( $value2 ) . "">" . $value2 . "</a>";
Заменить на:
if( $config['allow_alt_url'] ) $value3[] = "<a href="" . $config['http_home_url'] . "sf/" . urlencode( $preg_safe_name ) . ":" . urlencode( $value2 ) . "/" title="Поиск по " . $value2 . "">" . $value2 . "</a>"; else $value3[] = "<a href="$PHP_SELF?do=search_xf&loc=1&loc=1&" . urlencode( $preg_safe_name ) . "=" . urlencode( $value2 ) . "">" . $value2 . "</a>";
2. Открыть файл /engine/show.full.php
Найти:
if( $config['allow_alt_url'] ) $value3[] = "<a href="" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/">" . $value2 . "</a>"; else $value3[] = "<a href="$PHP_SELF?do=xfsearch&xf=" . urlencode( $value2 ) . "">" . $value2 . "</a>";
Заменить на:
if( $config['allow_alt_url'] ) $value3[] = "<a href="" . $config['http_home_url'] . "sf/" . urlencode( $preg_safe_name ) . ":" . urlencode( $value2 ) . "/" title="Поиск по " . $value2 . "">" . $value2 . "</a>"; else $value3[] = "<a href="$PHP_SELF?do=search_xf&loc=1&loc=1&" . urlencode( $preg_safe_name ) . "=" . urlencode( $value2 ) . "">" . $value2 . "</a>";
На этом все
* DLE SearchFields v5.1 для Dle 10.x и ниже.
* All Rights Reserved!
* author Dave Aka Aios
* mod author Nravchik
* year 2010-2014
Скачать модуль для DLE 10.3 Searchfields в архиве