Новости Joomla

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

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Здравствуйте.

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

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

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

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

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

Спасибо.
Помог? Поставь(те) плюс в репутацию.
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Спасибо.
Но, к сожалению, так и не разобрался, как вывести псевдоним автора автора и заголовок категории (как ссылка или без нее).
Помог? Поставь(те) плюс в репутацию.
*

Thores

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Вот и мне интересно как задать этот дополнительный запрос к базе.
Например на количество просмотров статьи. Код компонента "Метки" мягко говоря отличается от того что есть в Joomla. Может я  и просмотрел и ошибся но привычных запросов к базе нету. по крайней мере в версии 3.4
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Ну так его придется делать в самом файле макета. После строки

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

добавить

Код: php
<?php $db = JFactory::getDbo();

$db->setQuery(
$db->getQuery(true)
->select('hits')
->from('#__content')
->where('id = ' . (int) $item->content_item_id)
);

$hits = $db->loadResult();

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

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

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

Thores

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Спасибо Дмитрий, но вы правы что это ужасно в  плане производительности, можно ли дописать свои значения в самом компоненте. Потому что там я получаю почти всю информацию необходимую мне, но тем не менее нескольких пунктов нехватает, лучше для меня пожертвовать обновлением пока что чем произоводительностью сайта
*

Thores

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

Thores

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Тогда ковыряйте 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

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Имя автора можно вывести кодом:
Код
<?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

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

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Имя автора можно вывести кодом:
Код
<?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:

Код: php
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
<?php foreach ($this->items as $i => $item) : ?>

доабвьте
Код: php
<?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();

Но опять - это запрос в цикле...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пункт меню Текстовый разделитель ведет на главную страницу

Автор zahar_92

Ответов: 8
Просмотров: 2495
Последний ответ 27.07.2023, 13:37:17
от ei-dos
[РЕШЕНО]Скрыть пункт меню на мобильных устройствах

Автор lexxbry

Ответов: 16
Просмотров: 4737
Последний ответ 23.05.2023, 07:22:49
от geral
Цвет фона меню

Автор IhorPH

Ответов: 7
Просмотров: 1164
Последний ответ 21.03.2023, 11:47:29
от marksetter
OffCanvas меню Helix Ultimate добавить текст к иконке

Автор Andre100

Ответов: 2
Просмотров: 2189
Последний ответ 20.03.2023, 12:42:49
от Andre100
OffCanvas меню

Автор Алексей Лоскутов

Ответов: 5
Просмотров: 2272
Последний ответ 13.02.2023, 20:20:37
от dashkov