LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 01:58:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Модуль AJAX поиска на стандартном mootools  (Прочитано 2397 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SmokerMan
Профи
********

Репутация: +521/-20
Offline Offline

Пол: Мужской
Сообщений: 5195



« : 04.01.2010, 22:07:10 »

Продолжение темы Модуль AJAX поиска по сайту (Joomla 1.5, Jquery, com_content only)

По желанию трудящихся сделал аналогичный модуль, только на стандартном (правда только для Joomla его можно назвать стандартным Azn, т.к в быту он уже давно не юзается) Mootools 1.11 - 1.12

Результаты поиска выводятся в <div id="sm-searchresult"></div> (смотрите шаблон модуля, для этого блока стоит абсолютная позиция)
Эффектов правда никаких не делал, кому надо сам разберется, CSS стили подключаются в модуле (файл mod_sm_ajax_search.php).

Для работы модуля нужно установить компонент.

Если кому будет интересно можно также переделать этот модуль на JSON, так даже думаю будет интереснее, просто не охота просто так заморачиваться Azn




* com_sm_ajax_search.zip (4.37 Кб - загружено 171 раз.)
* mod_sm_ajax_search.zip (2.95 Кб - загружено 165 раз.)
« Последнее редактирование: 04.01.2010, 22:10:23 от SmokerMan » Записан
sova
Осваиваюсь на форуме
***

Репутация: +21/-1
Offline Offline

Сообщений: 146



« Ответ #1 : 04.01.2010, 22:33:54 »

Поставил - проверил на IE6, FaerFox 3.5.6, Opera 9.63.
Работает без проблем в контенте.
В VirtueMart не ищет.
Записан
SmokerMan
Профи
********

Репутация: +521/-20
Offline Offline

Пол: Мужской
Сообщений: 5195



« Ответ #2 : 04.01.2010, 22:43:49 »

В VirtueMart не ищет.
Так ты топик внимательней почитай Azn
С чего бы он там искал?
просто тот же модуль переделал под стандартный Mootools 1.12
Вобще поиск можно сделать по чему угодно, я в принципе думал сделать различные вариантов поиска, но чего-то пока не охота заорачиваться на это.
Для этого  достаточно в js задать разные урлы (task для контроллера) ну и в контроллере создать соответствующий task (функцию) и создать нужную модель в которой будет запрос к БД, где искать.
Если конечно это что-то скажет тебе Azn
Записан
Antosha
Завсегдатай
*****

Репутация: +50/-0
Offline Offline

Сообщений: 578


Плохо спорить плохо


« Ответ #3 : 05.01.2010, 19:52:31 »

Подключал поиск на jQuery к RokDownloads, в принципе все сводится к заданию запроса к БД.
Записан
DKsN
Давно я тут
****

Репутация: +9/-0
Offline Offline

Пол: Мужской
Сообщений: 233


[BODY]


« Ответ #4 : 29.01.2010, 07:04:39 »

mod_rokajaxsearch.zip мне на много больше понравился.  Smiley
Записан
Лена)
Завсегдатай
*****

Репутация: +26/-0
Offline Offline

Сообщений: 453



« Ответ #5 : 07.09.2011, 11:10:06 »

А возможно результаты поиска выводить не в отдельном всплываещем окошке, а в позиции модуля например? вопрос в том, сама разобраться смогу с этим?)
_________________________________________________

как оказалось, нет ничего проще
« Последнее редактирование: 13.09.2011, 13:23:56 от Лена) » Записан
Лена)
Завсегдатай
*****

Репутация: +26/-0
Offline Offline

Сообщений: 453



« Ответ #6 : 13.09.2011, 13:30:41 »

никак не получается сделать поиск только по заголовкам материалов. убирала строчки, как говорил в этой теме smart. но этот файл /plugins/search/content.php и поиск AJAX не связаны почему-то.
SmokerMan, вы случайно не знаете, где там что подправить?
я думаю, нужно подправить код в файле /components/com_sm_ajax_search/models/content.php
Записан
SmokerMan
Профи
********

Репутация: +521/-20
Offline Offline

Пол: Мужской
Сообщений: 5195



« Ответ #7 : 13.09.2011, 13:39:59 »

никак не получается сделать поиск только по заголовкам материалов. убирала строчки, как говорил в этой теме smart. но этот файл /plugins/search/content.php и поиск AJAX не связаны почему-то.
SmokerMan, вы случайно не знаете, где там что подправить?
я думаю, нужно подправить код в файле /components/com_sm_ajax_search/models/content.php
подправить что? что бы поиск был только по заголовкам?
Тогда, да в этом файле нужно изменить запрос:
Код:
. ' WHERE a.title LIKE '.$queryString.' OR a.introtext LIKE '.$queryString
заменить на
Код:
. ' WHERE a.title LIKE '.$queryString
Записан
Лена)
Завсегдатай
*****

Репутация: +26/-0
Offline Offline

Сообщений: 453



« Ответ #8 : 13.09.2011, 13:50:02 »

умничка. спасибо, всё теперь как нужно! строчку эту я пыталась урезать, но после слова queryString оставляла точечку и апостроф, оттого и не  получалось, как нужно.
Записан
banzaika
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 24


« Ответ #9 : 24.10.2011, 02:51:33 »

Осознаю что руки кривые и все же...
joomla 1.7, инсталлировал компонент и модуль, модуль опубликовал - 0 эмоций.
Создал новый модуль, опубликовал - появилось окошко ввода запроса, текст вводишь - не реагирует...
Что не так как надо? Хоть куда подуть, где посмотреть??

(mod_rokajaxsearch встал и заработал сразу, но шото меня безопасность тревожит...)
Записан
Лена)
Завсегдатай
*****

Репутация: +26/-0
Offline Offline

Сообщений: 453



« Ответ #10 : 15.02.2012, 12:00:34 »


Вобще поиск можно сделать по чему угодно, я в принципе думал сделать различные вариантов поиска, но чего-то пока не охота заорачиваться на это.
Для этого  достаточно в js задать разные урлы (task для контроллера) ну и в контроллере создать соответствующий task (функцию) и создать нужную модель в которой будет запрос к БД, где искать.

обычный поиск работает для к2. теперь еще нужно, чтобы ajax-ковский заработал для материалов, созданных на к2. не очень пока получается.
задать урл в файле smsearch.js нужно в этой строке?
Код:
var url = 'index.php?option=com_sm_ajax_search&task=search&format=raw';
- пока не поняла, какой именно урл прописать

код для функции поиска взяла с файла k2.php. он не подойдет?
Код:
function onSearch($text, $phrase = '', $ordering = '', $areas = null) {
JPlugin::loadLanguage('plg_search_k2', JPATH_ADMINISTRATOR);
jimport('joomla.html.parameter');
$mainframe = &JFactory::getApplication();
$db = &JFactory::getDBO();
$jnow = &JFactory::getDate();
$now = $jnow->toMySQL();
$nullDate = $db->getNullDate();
$user = &JFactory::getUser();
if(K2_JVERSION=='16'){
$accessCheck = " IN(".implode(',', $user->authorisedLevels()).") ";
}
else {
$aid = $user->get('aid');
$accessCheck = " <= {$aid} ";
}
$tagIDs = array();
$itemIDs = array();

require_once (JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_search'.DS.'helpers'.DS.'search.php');
require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'route.php');

$searchText = $text;
if (is_array($areas)) {
if (!array_intersect($areas, array_keys($this->onSearchAreas()))) {
return array();
}
}

$plugin = &JPluginHelper::getPlugin('search', 'k2');
$pluginParams = new JParameter($plugin->params);

$limit = $pluginParams->def('search_limit', 50);

$text = JString::trim($text);
if ($text == '') {
return array();
}

$rows = array();

if ($limit> 0){

if($pluginParams->get('search_tags')){
$tagQuery = JString::str_ireplace('*', '', $text);
$words = explode(' ', $tagQuery);
for($i=0; $i<count($words); $i++){
$words[$i].= '*';
}
$tagQuery = implode(' ', $words);
$tagQuery = $db->Quote($db->getEscaped($tagQuery, true), false);

$query = "SELECT id FROM #__k2_tags WHERE MATCH(name) AGAINST ({$tagQuery} IN BOOLEAN MODE) AND published=1";
$db->setQuery($query);
$tagIDs = $db->loadResultArray();

if(count($tagIDs)){
JArrayHelper::toInteger($tagIDs);
$query = "SELECT itemID FROM #__k2_tags_xref WHERE tagID IN (".implode(',',$tagIDs).")";
$db->setQuery($query);
$itemIDs = $db->loadResultArray();
}
}


if($phrase=='exact'){
$text = JString::trim($text,'"');
$text = $db->Quote('"'.$db->getEscaped($text, true).'"', false);
}
else {
$text = JString::str_ireplace('*', '', $text);
$words = explode(' ', $text);
for($i=0; $i<count($words); $i++){
if($phrase=='all')
$words[$i]= '+'.$words[$i];
$words[$i].= '*';
}
$text = implode(' ', $words);
$text = $db->Quote($db->getEscaped($text, true), false);
}


$query = "
SELECT i.title AS title,
   i.metadesc,
   i.metakey,
   c.name as section,
   i.image_caption,
   i.image_credits,
   i.video_caption,
   i.video_credits,
   i.extra_fields_search,
   i.created,
     CONCAT(i.introtext, i.fulltext) AS text,
     CASE WHEN CHAR_LENGTH(i.alias) THEN CONCAT_WS(':', i.id, i.alias) ELSE i.id END as slug,
     CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as catslug
     FROM #__k2_items AS i
     INNER JOIN #__k2_categories AS c ON c.id=i.catid AND c.access {$accessCheck}
WHERE (";
if($pluginParams->get('search_tags') && count($itemIDs)){
JArrayHelper::toInteger($itemIDs);
$query.=" i.id IN (".implode(',',$itemIDs).") OR ";
}
$query.="MATCH(i.title, i.introtext, i.`fulltext`,i.extra_fields_search,i.image_caption,i.image_credits,i.video_caption,i.video_credits,i.metadesc,i.metakey) AGAINST ({$text} IN BOOLEAN MODE)
)
AND i.trash = 0
   AND i.published = 1
   AND i.access {$accessCheck}
   AND c.published = 1
   AND c.access {$accessCheck}
   AND c.trash = 0
   AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
        AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
   GROUP BY i.id ";

switch ($ordering) {
case 'oldest':
$query.= 'ORDER BY i.created ASC';
break;

case 'popular':
$query.= 'ORDER BY i.hits DESC';
break;

case 'alpha':
$query.= 'ORDER BY i.title ASC';
break;

case 'category':
$query.= 'ORDER BY c.name ASC, i.title ASC';
break;

case 'newest':
default:
$query.= 'ORDER BY i.created DESC';
break;
}

$db->setQuery($query, 0, $limit);
$list = $db->loadObjectList();
$limit -= count($list);
if (isset($list)) {
foreach ($list as $key=>$item) {
$list[$key]->href = JRoute::_(K2HelperRoute::getItemRoute($item->slug, $item->catslug));

}
}
$rows[] = $list;
}

$results = array();
if (count($rows)) {
foreach ($rows as $row) {
$new_row = array();
foreach ($row as $key=>$item) {
$item->browsernav = '';
$item->tag = $searchText;
if (searchHelper::checkNoHTML($item, $searchText, array('text', 'title', 'metakey', 'metadesc', 'section', 'image_caption', 'image_credits', 'video_caption', 'video_credits', 'extra_fields_search', 'tag'))) {
$new_row[] = $item;
}
}
$results = array_merge($results, (array) $new_row);
}
}

return $results;
}

только в этой функции нет модели. я так понимаю, эти строчки отвечают за модель:
Код:
$model = $this->getModel('content');
$rows = $model->search($queryString);

а что значит "создать модель"?

Записан
Лена)
Завсегдатай
*****

Репутация: +26/-0
Offline Offline

Сообщений: 453



« Ответ #11 : 04.05.2012, 10:34:34 »

А как сделать поиск по заголовкам материалов в англ. версии сайта? Мультиязычность на сайте с помоью JoomFish. Когда вводишь русские буквы в поиске, выходит материал,  с заголовком на англ. языке. Когда вводишь англ. буквы, ничего не находит. Где можно добавить в алфавит англ. буквы?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet