a777d2
Создатель
- Регистрация
- 17 Сен 2012
- Сообщения
- 31
- Реакции
- 10
- Автор темы
- #1
Добрый день, в продолжении темы Для просмотра ссылки Войди или Зарегистрируйся
Мы добавили 2 новых поля в компонент k2 и нам нужно сделать поиск по этим полям, есть стандарный модуль k2 tools search, его то мы и будем править!
Начнем...
К примеру мы создали 2 поля, это artikul и vincode (для автомобильного сайта)
Нужно править всего 2 файла:
Первое идем в плагин /plugins/search/k2/k2.php
Номер строчки 104, и добавляем в запрос наши значения
Номер строчки 123, добавляем в запрос наши значения
Номер строчки 195, добавляем в запрос наши значения
Далее идем править файл k2: /components/com_k2/models/itemlist.php
Номер строчки 1050, добавляем в запрос наши значения
Номер строчки 1093, добавляем в запрос наши значения
Номер строчки 1143, добавляем в запрос наши значения
Вот и все, всем спасибо) Если возникнут вопросы, с радостью отвечу!
Мы добавили 2 новых поля в компонент k2 и нам нужно сделать поиск по этим полям, есть стандарный модуль k2 tools search, его то мы и будем править!
Начнем...
К примеру мы создали 2 поля, это artikul и vincode (для автомобильного сайта)
Нужно править всего 2 файла:
Первое идем в плагин /plugins/search/k2/k2.php
Номер строчки 104, и добавляем в запрос наши значения
Код:
if ($phrase == 'exact')
{
$text = JString::trim($text, '"');
$escaped = K2_JVERSION == '15' ? $db->getEscaped($text, true) : $db->escape($text, true);
$quoted = $db->Quote($escaped);
$where = " ( LOWER(i.title) = ".$quoted." OR LOWER(i.artikul) = ".$quoted." OR LOWER(i.vincode) = ".$quoted." OR LOWER(i.introtext) = ".$quoted." OR LOWER(i.`fulltext`) = ".$quoted." OR LOWER(i.extra_fields_search) = ".$quoted." OR LOWER(i.image_caption) = ".$quoted." OR LOWER(i.image_credits) = ".$quoted." OR LOWER(i.video_caption) = ".$quoted." OR LOWER(i.video_credits) = ".$quoted." OR LOWER(i.metadesc) = ".$quoted." OR LOWER(i.metakey) = ".$quoted.") ";
}
else
{
$escaped = K2_JVERSION == '15' ? $db->getEscaped($text, true) : $db->escape($text, true);
$quoted = $db->Quote('%'.$escaped.'%', false);
$where = " ( LOWER(i.title) LIKE ".$quoted." OR LOWER(i.artikul) LIKE ".$quoted." OR LOWER(i.vincode) LIKE ".$quoted." OR LOWER(i.introtext) LIKE ".$quoted." OR LOWER(i.`fulltext`) LIKE ".$quoted." OR LOWER(i.extra_fields_search) LIKE ".$quoted." OR LOWER(i.image_caption) LIKE ".$quoted." OR LOWER(i.image_credits) LIKE ".$quoted." OR LOWER(i.video_caption) LIKE ".$quoted." OR LOWER(i.video_credits) LIKE ".$quoted." OR LOWER(i.metadesc) LIKE ".$quoted." OR LOWER(i.metakey) LIKE ".$quoted.") ";
}
Номер строчки 123, добавляем в запрос наши значения
Код:
$query = "
SELECT i.title AS title,
i.metadesc,
i.metakey,
c.name as section,
i.image_caption,
i.artikul,
i.vincode,
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 (".$where.")
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)." )";
Номер строчки 195, добавляем в запрос наши значения
Код:
$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', 'artikul', 'vincode', '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);
}
}
Далее идем править файл k2: /components/com_k2/models/itemlist.php
Номер строчки 1050, добавляем в запрос наши значения
Код:
$jfQuery .= " AND (jfc.reference_field = 'title'
OR jfc.reference_field = 'artikul'
OR jfc.reference_field = 'vincode'
OR jfc.reference_field = 'introtext'
OR jfc.reference_field = 'fulltext'
OR jfc.reference_field = 'image_caption'
OR jfc.reference_field = 'image_credits'
OR jfc.reference_field = 'video_caption'
OR jfc.reference_field = 'video_credits'
OR jfc.reference_field = 'extra_fields_search'
OR jfc.reference_field = 'metadesc'
OR jfc.reference_field = 'metakey'
)";
Номер строчки 1093, добавляем в запрос наши значения
Код:
$jfQuery .= " AND (jfc.reference_field = 'title'
OR jfc.reference_field = 'artikul'
OR jfc.reference_field = 'vincode'
OR jfc.reference_field = 'introtext'
OR jfc.reference_field = 'fulltext'
OR jfc.reference_field = 'image_caption'
OR jfc.reference_field = 'image_credits'
OR jfc.reference_field = 'video_caption'
OR jfc.reference_field = 'video_credits'
OR jfc.reference_field = 'extra_fields_search'
OR jfc.reference_field = 'metadesc'
OR jfc.reference_field = 'metakey'
)";
Номер строчки 1143, добавляем в запрос наши значения
Код:
if ($type == 'exact')
{
$text = JString::trim($search, '"');
$escaped = K2_JVERSION == '15' ? $db->getEscaped($text, true) : $db->escape($text, true);
$quoted = $db->Quote('%'.$escaped.'%', false);
$sql .= " AND ( LOWER(i.title) = ".$quoted." OR LOWER(i.artikul) = ".$quoted." OR LOWER(i.vincode) = ".$quoted." OR LOWER(i.introtext) = ".$quoted." OR LOWER(i.`fulltext`) = ".$quoted." OR LOWER(i.extra_fields_search) = ".$quoted." OR LOWER(i.image_caption) = ".$quoted." OR LOWER(i.image_credits) = ".$quoted." OR LOWER(i.video_caption) = ".$quoted." OR LOWER(i.video_credits) = ".$quoted." OR LOWER(i.metadesc) = ".$quoted." OR LOWER(i.metakey) = ".$quoted.") ";
}
else
{
$escaped = K2_JVERSION == '15' ? $db->getEscaped($search, true) : $db->escape($search, true);
$text = $db->Quote($escaped);
$sql .= " AND ( LOWER(i.title) LIKE ".$quoted." OR LOWER(i.artikul) LIKE ".$quoted." OR LOWER(i.vincode) LIKE ".$quoted." OR LOWER(i.introtext) LIKE ".$quoted." OR LOWER(i.`fulltext`) LIKE ".$quoted." OR LOWER(i.extra_fields_search) LIKE ".$quoted." OR LOWER(i.image_caption) LIKE ".$quoted." OR LOWER(i.image_credits) LIKE ".$quoted." OR LOWER(i.video_caption) LIKE ".$quoted." OR LOWER(i.video_credits) LIKE ".$quoted." OR LOWER(i.metadesc) LIKE ".$quoted." OR LOWER(i.metakey) LIKE ".$quoted.") ";
}
Вот и все, всем спасибо) Если возникнут вопросы, с радостью отвечу!