Все для DataLife Engine / DLE модули / Searchfields для DLE 10.3

Searchfields для DLE 10.3


Представляем на 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:"/",data: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&amp;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 в архиве

Searchfields_v5.1.zip [19,31 Kb] (cкачиваний: 249)
  • 100

Комментарии 10

dle9.com от 21 марта 2016 10:50
Цитата: snamp
Вроде поставил, но при поиске выдает белый экран. ссылка на 5.2
Внимание! У Вас нет прав для просмотра скрытого текста.


Цитата: snamp
а нет все нормально, все работает просто в .htaccess в одну строку поставились

спасибо за архив
snamp от 21 марта 2016 09:21
а нет все нормально, все работает просто в .htaccess в одну строку поставились
snamp от 21 марта 2016 09:15
Вроде поставил, но при поиске выдает белый экран. ссылка на 5.2
Внимание! У Вас нет прав для просмотра скрытого текста.
dle9.com от 20 марта 2016 18:34
Цитата: snamp
Нашел это место, но в 11.0 там разбито на части, т.е. не получится так заменить просто, хз как сделать


думаю лучший вариант использовать адаптированный вариант для 10.6, должен подойти для dle 11.0
Внимание! У Вас нет прав для просмотра скрытого текста.


если не сложно, скинуть ссылку с открытого файлообменика, проверю на ссылки и добавлю сюда
snamp от 20 марта 2016 18:13
Нашел это место, но в 11.0 там разбито на части, т.е. не получится так заменить просто, хз как сделать
dle9.com от 20 марта 2016 13:47
Цитата: snamp
Почти поставил на 11.0, кроме
4. Навигация. Открыть файл /engine/modules/show.short.php предпоследнее изменение не могу сделать, там по другому как то разбито, не понятно как правильно сделать, кто поможет?

1. возможно разработчики перенесли код в другой файл там установить
2. когда встречаетесь с такой проблемой, делается так, скачиваете версию 10.3, т.к. именно для этой версии инструкция установки, далее смотрите где и в каком месте файла делается установка, вот примерно в dle 11.0 в этом же месте примерно и делается установка
snamp от 20 марта 2016 13:16
Почти поставил на 11.0, кроме
4. Навигация. Открыть файл /engine/modules/show.short.php предпоследнее изменение не могу сделать, там по другому как то разбито, не понятно как правильно сделать, кто поможет?
snamp от 1 июля 2015 12:16
вродь встало нормально, но не ищет - допустим хочу вывести новости за 2015 год пишет это -
/sf/style:/released:2015/int_start_price:/int_end_price:/

или по жанрам - такая же ситуация
dle9.com от 1 июля 2015 07:40
Цитата: snamp
на 10.5 пойдет?

стоит попробовать изменений с 10.3 до 10.5 не много в движке, будут ошибки напишите сюда ....
snamp от 30 июня 2015 20:15
на 10.5 пойдет?
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent