Форум русской поддержки Joomla!® CMS
10.12.2016, 22:33:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Пункт меню "Список элементов": отобразить автора и категорию

 (Прочитано 438 раз)
0 Пользователей и 1 Гость смотрят эту тему.
slepoy
Завсегдатай
*****

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

Сообщений: 703


Тотальная шизофазия


« : 09.03.2015, 00:20:54 »

Здравствуйте.

Используя template override, создал файл:
/templates/vt_hiking/html/com_tags/tag/default_items.php

и на страницу "Список элементов" (где отображается список статей, объединенных одним тегом) добавил отображение тегов (по этой инструкции: http://joomlaforum.ru/index.php/topic,282086.0.html#msg1403167).

Но как добавить автора и заголовок категории категорию по тому же принципу (по сути сделать почти как блог)?

Я посмотрел файлы шаблона материала и там довольно часто встречается category  Sad

Что можно предпринять в таком случае?

Спасибо.
Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #1 : 09.03.2015, 11:29:35 »

Я отвечал на похожий вопрос на Joomla StackExchange
Displaying tagged items like category
Записан
slepoy
Завсегдатай
*****

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

Сообщений: 703


Тотальная шизофазия


« Ответ #2 : 11.03.2015, 01:37:28 »

Спасибо.
Но, к сожалению, так и не разобрался, как вывести псевдоним автора автора и заголовок категории (как ссылка или без нее).
Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #3 : 11.03.2015, 11:10:10 »

Только доп.запросами в базу.
Записан
Thores
Осваиваюсь на форуме
***

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

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



« Ответ #4 : 17.03.2015, 18:26:59 »

Вот и мне интересно как задать этот дополнительный запрос к базе.
Например на количество просмотров статьи. Код компонента "Метки" мягко говоря отличается от того что есть в Joomla. Может я  и просмотрел и ошибся но привычных запросов к базе нету. по крайней мере в версии 3.4
Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #5 : 17.03.2015, 19:03:29 »

Ну так его придется делать в самом файле макета. После строки

Код
<?php foreach ($items as $i => $item) : ?>

добавить

Код
<?php $db = JFactory::getDbo();
 
$db->setQuery(
$db->getQuery(true)
->select('hits')
->from('#__content')
->where('id = ' . (int) $item->content_item_id)
);
 
$hits = $db->loadResult();

В нужном месте вывести

Код
<?php echo $hits; ?>

Но это ужасно в плане производительности. На каждый материал делать доп. запрос...
Записан
Thores
Осваиваюсь на форуме
***

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

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



« Ответ #6 : 17.03.2015, 19:16:57 »

Спасибо Дмитрий, но вы правы что это ужасно в  плане производительности, можно ли дописать свои значения в самом компоненте. Потому что там я получаю почти всю информацию необходимую мне, но тем не менее нескольких пунктов нехватает, лучше для меня пожертвовать обновлением пока что чем произоводительностью сайта
Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #7 : 17.03.2015, 19:32:01 »

Тогда ковыряйте getTagItemsQuery
Записан
Thores
Осваиваюсь на форуме
***

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

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



« Ответ #8 : 17.03.2015, 19:39:50 »

 Спасибо за направление и помощь, о результатах отпишусь здесь, вдруг кому понадобится решение.
Записан
Thores
Осваиваюсь на форуме
***

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

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



« Ответ #9 : 18.03.2015, 20:57:51 »

Тогда ковыряйте getTagItemsQuery
Поковырял и отчасти разобрался, единственное что мне непонятно, что при любом добавочном запросе он идет не для всех значений таблицы сразу, а лишь к первому значению и оно принимается уже для каждого элемента. То бишь говоря простым языком запрашивается первое значение и устанавливается для всех.
Тогда в модели вывода components\com_tags\models\tag.php я добавил  у getItems()
Код:
$db = JFactory::getDbo();
$db->setQuery(
$db->getQuery(true)
->select('hits')
->from('#__content')
->where('id = ' . (int) $item->content_item_id));
$hits = $db->loadResult();
$item->hits = $hits;
И все заработало, хотя опять же я думаю, что это с точки зрения производительности равносильно тому как засовывать такой запрос в шаблон вывода. Не знаю так ли это...

Теперь есть другой вопрос правда уже не по пункту меню "Список элементов".
Пункт меню "Список меток". Как вывести на экран количество элементов метки. Такой функционал есть в модуле "Популярные метки". Но почему то вывода этого количества нету там где оно так необходимо.
Я так полагаю запрос, по аналогии, должен быть примерно такой:
Код:
<?php $db = JFactory::getDbo();
 
$db->setQuery(
$db->getQuery(true)
->select('tag_id')
->from('#__contentitem_tag_map')
->where('COUNT('tag_id') = ' . (int) $item->content_item_id)
);
 
$countelement = $db->loadResult();
Но вот куда его вставить ума не приложу ибо куда бы я не совался все нарушало структуру страницы. Прошу помощи.
Правильный ли запрос? Если нет, то как указать правильнее? И куда его засунуть?
Записан
slepoy
Завсегдатай
*****

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

Сообщений: 703


Тотальная шизофазия


« Ответ #10 : 18.03.2015, 21:46:50 »

Имя автора можно вывести кодом:
Код:
<?php echo $item->author; ?>

Однако, мне необходимо вывести псевдоним автора "created_by" но ничего не удается, даже если подглядывать в файл шаблона блога:
Код:
if ($params->get('show_author') && !empty($this->item->author )) :
$output .='<dd class="createdby">';
$author =  $this->item->author;
$author = ($this->item->created_by_alias ? $this->item->created_by_alias : $author);
if (!empty($this->item->contactid ) &&  $params->get('link_author') == true):
$output .= JText::sprintf('COM_CONTENT_WRITTEN_BY', JHtml::_('link', JRoute::_('index.php?option=com_contact&view=contact&id='.$this->item->contactid), $author));
else:
$output .= JText::sprintf('COM_CONTENT_WRITTEN_BY', $author);
endif;
$output .='</dd>';
endif;
Записан
Thores
Осваиваюсь на форуме
***

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

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



« Ответ #11 : 19.03.2015, 07:41:22 »

Имя автора можно вывести кодом:
Код:
<?php echo $item->author; ?>
Можно добавить доп. запрос, методом, описанным выше. Правда лучше дождаться ответа Дмитрия, потому как я уже написал незнаю как такой способ влияет на производительность.
« Последнее редактирование: 19.03.2015, 08:26:25 от Thores » Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #12 : 19.03.2015, 11:17:09 »

Имя автора можно вывести кодом:
Код:
<?php echo $item->author; ?>

Однако, мне необходимо вывести псевдоним автора "created_by" но ничего не удается, даже если подглядывать в файл шаблона блога:
Код:
if ($params->get('show_author') && !empty($this->item->author )) :
$output .='<dd class="createdby">';
$author =  $this->item->author;
$author = ($this->item->created_by_alias ? $this->item->created_by_alias : $author);
if (!empty($this->item->contactid ) &&  $params->get('link_author') == true):
$output .= JText::sprintf('COM_CONTENT_WRITTEN_BY', JHtml::_('link', JRoute::_('index.php?option=com_contact&view=contact&id='.$this->item->contactid), $author));
else:
$output .= JText::sprintf('COM_CONTENT_WRITTEN_BY', $author);
endif;
$output .='</dd>';
endif;

Так там же есть core_created_user_id и core_created_by_alias -  не надо никаких доп запросов... Вот что в принципе доступно в item:

Код
stdClass Object
(
   [type_alias] => com_content.article
   [content_item_id] => 24
   [core_content_id] => 1
   [match_count] => 1
   [tag_date] => 2015-01-29 14:28:39
   [core_title] => Joomla! Testing
   [core_alias] => Joomla
   [core_body] => Thanks for helping us to test Joomla!
   [core_state] => 1
   [core_access] => 1
   [core_metadata] => {"robots":"","author":"","rights":"","xreference":""}
   [core_created_user_id] => 913
   [core_created_by_alias] =>
   [core_created_time] => 2011-01-01 00:00:01
   [core_images] => {"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}
   [core_modified_time] => 2015-01-29 12:28:39
   [core_language] => *
   [core_catid] => 19
   [core_publish_up] => 2011-01-01 00:00:01
   [core_publish_down] => 0000-00-00 00:00:00
   [content_type_title] => Article
   [router] => ContentHelperRoute::getArticleRoute
   [author] => Super User
   [author_email] => test@test
   [link] => index.php?option=com_content&view=article&id=24:joomla
   [displayDate] => 2011-01-01 00:00:01
   [event] => stdClass Object
       (
           [afterDisplayTitle] =>
           [beforeDisplayContent] =>
           [afterDisplayContent] =>
       )
 
   [text] => Thanks for helping us to test Joomla!
   [core_params] =>
)

Поковырял и отчасти разобрался, единственное что мне непонятно, что при любом добавочном запросе он идет не для всех значений таблицы сразу, а лишь к первому значению и оно принимается уже для каждого элемента. То бишь говоря простым языком запрашивается первое значение и устанавливается для всех.
Тогда в модели вывода components\com_tags\models\tag.php я добавил  у getItems()
Код:
$db = JFactory::getDbo();
$db->setQuery(
$db->getQuery(true)
->select('hits')
->from('#__content')
->where('id = ' . (int) $item->content_item_id));
$hits = $db->loadResult();
$item->hits = $hits;
И все заработало, хотя опять же я думаю, что это с точки зрения производительности равносильно тому как засовывать такой запрос в шаблон вывода. Не знаю так ли это...
Туда нет смысла добавлять... Это тоже самое, что в макет добавить, но макет можно переопределить. Сам запрос в getTagItemsQuery - в нем надо колдовать. Но по моему, там ничего не сделать.

Цитировать
Теперь есть другой вопрос правда уже не по пункту меню "Список элементов".
Пункт меню "Список меток". Как вывести на экран количество элементов метки. Такой функционал есть в модуле "Популярные метки". Но почему то вывода этого количества нету там где оно так необходимо.

После
Код
<?php foreach ($this->items as $i => $item) : ?>

доабвьте
Код
<?php $db = JFactory::getDbo();
 
$db->setQuery(
$db->getQuery(true)
->select(COUNT('tag_id'))
->from('#__contentitem_tag_map')
->where('tag_id = ' . (int) $item->id)
);
 
$elementsCount = $db->loadResult();

Но опять - это запрос в цикле...
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | 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