Еще одна тема, которая часто поднимается, но остается не раскрытой до конца.
Подскажите, если кто знает: При выдаче результатов поиска модулем Search новости (модуль News) открываются в той же странице, с какой производился поиск.
В хэлпе модуля дан пример, позволяющий определять модуль News при поиске, но мне не помогло: моя задача сложнее. Нужно новость открывать в такой detailpage, которая создана под КОНКРЕТНУЮ категорию новости.
Т.е. грубо говоря, логика вроде того:
{if $entry->module == 'News'}
$catname= имя категории
$news_id=ID статьи
<news id="$news_id" detailpage="$catname (я называю одинаково страницу и категорию)" summarytemplate="" >
{else}
<li><a href="{$entry->url}">{$entry->urltxt}</a></li>
{/if}
---
And in English:
Please, help me with this trouble.
When I get the Search module’s results, I have also the links that calls news’ articles (if article is relevant to search request).
By clicking this links I can open the news article, but it is being open in that page, I called the article from. But I need to open it in detail page, defined specially for its news category
So, I need something like this:
{if $entry->module == 'News'}
$catname= determination of news’ category, the main trouble
$news_id=ID of article
<news id="$news_id" detailpage="$catname (I named detail pages and categories equally)" summarytemplate="" >
{else}
<li><a href="{$entry->url}">{$entry->urltxt}</a></li>
{/if}
Категории новостей в результатах поиска
-
- Forum Members
- Posts: 30
- Joined: Thu May 22, 2014 7:17 am
Re: Категории новостей в результатах поиска
Т.к. в модуле News нельзя привязать глобальный шаблон к категории новостей, то приходится идти на ухищрения. Для вашего случая могу предложить следующий вариант.
Структура url в модуле News следующая:Но, для того чтобы в выдаче поиска получить url такого вида, вам следует кое что изменить. Прочитайте вот эту тему. В ней написано что нужно сделать.
Сейчас нас интересует id страницы контента.
1. Создаем тег пользователя get_news_url со следующим содержимым2. В шаблоне результата поиска в foreach записываем следующее
Структура url в модуле News следующая:
Code: Select all
/news/1/15/News-Module-Installed/
где,
"news" - зарезервированное слово
"1" - id новости
"15" - id страницы контента, чей глобальный шаблон будет использован
"News-Module-Installed" - алиас(ссылка) новости. Формируется либо автоматически, либо указывается внутри новости.
Сейчас нас интересует id страницы контента.
1. Создаем тег пользователя get_news_url со следующим содержимым
Code: Select all
$news_url = $params['url'];
$news_id = $params['news_id'];
$db = cmsms()->GetDb();
//Так как в модуле News нет функции позволяющей получить название категории, то используем прямой запрос к БД
$news_cat = $db->GetOne("SELECT ncat.`news_category_name` FROM `" .cms_db_prefix() . "module_news` as nws LEFT JOIN `" . cms_db_prefix() . "module_news_categories` as ncat USING(`news_category_id`) WHERE nws.`news_id` = ?", array($news_id));
$smarty = cmsms()->GetSmarty();
$manager = cmsms()->GetHierarchyManager();
$node =& $manager->sureGetNodeByAlias($news_cat);
$page_id = -1;
if ( isset($node) ) {
$content =& $node->GetContent();
if ($content !== FALSE && is_object($content)) {
$page_id = $content->Id();
}
}
if ( $page_id != -1 ) {
//Подменяем id страницы для раскрытия новости
$news_url = preg_replace('|(/[nN]ews/\d*/)(\d*)(.*)|', '${1}' . $page_id . '$3', $news_url);
}
$smarty->assign($params['assign'], $news_url);
Code: Select all
{if $entry->module == 'News'}
{get_news_url url=$entry->url news_id=$entry->modulerecord assign=news_url}
<li>{$entry->title} - <a href="{$news_url}">{$entry->urltxt}</a> ({$entry->weight}%)</li>
{else}
<li>{$entry->title} - <a href="{$entry->url}">{$entry->urltxt}</a> ({$entry->weight}%)</li>
{/if}
-
- Forum Members
- Posts: 30
- Joined: Thu May 22, 2014 7:17 am
Re: Категории новостей в результатах поиска
Большое спасибо за ответ.
Не смог только найти, где в модуле новостей менять представление адреса. Был комментарий, что "актуально для новых версий модуля". У меня установлен модуль 2.14.4, шел в сборке со всей ЦМС. При поиске самый свежий показывает 2.14.1
Не смог только найти, где в модуле новостей менять представление адреса. Был комментарий, что "актуально для новых версий модуля". У меня установлен модуль 2.14.4, шел в сборке со всей ЦМС. При поиске самый свежий показывает 2.14.1
-
- Forum Members
- Posts: 30
- Joined: Thu May 22, 2014 7:17 am
Re: Категории новостей в результатах поиска
Так сможете помочь с вопросом, где искать функцию модуля NEws для редактирования? У меня свежий модуль, но я там не нашел...
Re: Категории новостей в результатах поиска
Так всё-таки не выдает PrettyUrl в результатах поиска? ))
Постом выше вы в ПС-е писали что у вас всё работает, но теперь удалили. Ну да ладно. Функция SearchResultWithParams находится в главном файле модуля News.module.php (на ftp).
Постом выше вы в ПС-е писали что у вас всё работает, но теперь удалили. Ну да ладно. Функция SearchResultWithParams находится в главном файле модуля News.module.php (на ftp).
-
- Forum Members
- Posts: 30
- Joined: Thu May 22, 2014 7:17 am
Re: Категории новостей в результатах поиска
Я когда написал, что выдает правильный адрес - ошибся. Я настроил выдачу pretty url в адресной строке броузера и поспешил радоваться. Внимательно же перечитав Ваш ответ, понял, что Вы говорили про адрес в результате поиска. Поэтому стер, что глупость написал )
Спасибо за уточнение про Php!
Пока это не помогло, ковыряюсь )
Pretty URL выдается в поиске, но пока в нем для ссылки на новость по-прежнему используется ID страницы результата поиска, хотя тэг создавал и в результат поиска код замены ссылки вставил.
Спасибо за уточнение про Php!
Пока это не помогло, ковыряюсь )
Pretty URL выдается в поиске, но пока в нем для ссылки на новость по-прежнему используется ID страницы результата поиска, хотя тэг создавал и в результат поиска код замены ссылки вставил.
Re: Категории новостей в результатах поиска
У вас точно существуют страницы с алиасами идентичными категориям новостей? Если название категории отличается от алиаса страницы, то ссылка действительно останется без изменения. Проверьте регистр букв. Категория "Sport" не соответствует странице "sport"Singularity wrote:Pretty URL выдается в поиске, но пока в нем для ссылки на новость по-прежнему используется ID страницы результата поиска
-
- Forum Members
- Posts: 30
- Joined: Thu May 22, 2014 7:17 am
Re: Категории новостей в результатах поиска
Точно, не совпадали ) Спасибо Вам за это отличное решение! Работает!