Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 12 Ответов
  • 4647 Просмотров
*

SmokerMan

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

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

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

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

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





[вложение удалено Администратором]
« Последнее редактирование: 04.01.2010, 21:10:23 от SmokerMan »
*

sova

  • Захожу иногда
  • 135
  • 22 / 1
Поставил - проверил на IE6, FaerFox 3.5.6, Opera 9.63.
Работает без проблем в контенте.
В VirtueMart не ищет.
Поживу - увижу, доживу - узнаю, выживу - учту
*

SmokerMan

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

Antosha

  • Захожу иногда
  • 420
  • 52 / 0
  • Плохо спорить плохо
Подключал поиск на jQuery к RokDownloads, в принципе все сводится к заданию запроса к БД.
<a href="http://joomlablog.ru/">JoomlaBlog</a>
*

DKsN

  • Захожу иногда
  • 258
  • 15 / 0
  • [BODY]
mod_rokajaxsearch.zip мне на много больше понравился.  ^-^
*

Лена)

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

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

Лена)

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

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
никак не получается сделать поиск только по заголовкам материалов. убирала строчки, как говорил в этой теме 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
*

Лена)

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

banzaika

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

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

Лена)

  • Захожу иногда
  • 402
  • 28 / 0

Вобще поиск можно сделать по чему угодно, я в принципе думал сделать различные вариантов поиска, но чего-то пока не охота заорачиваться на это.
Для этого  достаточно в 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);

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

*

Лена)

  • Захожу иногда
  • 402
  • 28 / 0
А как сделать поиск по заголовкам материалов в англ. версии сайта? Мультиязычность на сайте с помоью JoomFish. Когда вводишь русские буквы в поиске, выходит материал,  с заголовком на англ. языке. Когда вводишь англ. буквы, ничего не находит. Где можно добавить в алфавит англ. буквы?
*

Лена)

  • Захожу иногда
  • 402
  • 28 / 0
Какое нужно задать условие, чтобы поиск слов был не "точное совпадение" (имеется ввиду как по порядку они написаны, в таком и виде будет производиться поиск), а таким образом, чтобы при поиске не учитывался порядок слов? В стандартном поиске похожим образом работает вариант "любое слово"
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль расширенных результатов ARI Quiz Results

Автор Beer

Ответов: 0
Просмотров: 1206
Последний ответ 03.02.2025, 15:27:35
от Beer
Модуль для отображения курсов валют

Автор Геон

Ответов: 2
Просмотров: 2555
Последний ответ 03.02.2024, 22:19:02
от Геон
Модуль «Image Show gk4», не отображается ни картинка, ни текст

Автор kaasin

Ответов: 1
Просмотров: 3852
Последний ответ 13.05.2023, 15:42:15
от anastasya96
Стандартный модуль случайного изображения не выводит фотографии

Автор strix

Ответов: 8
Просмотров: 8519
Последний ответ 19.10.2022, 16:07:11
от Andrej_777
Модуль тегов Joes Word Cloud для Joomla 3

Автор ecolora

Ответов: 1
Просмотров: 3055
Последний ответ 05.05.2022, 19:04:44
от ecolora