Новости Joomla

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

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

  • Глобальный модератор
  • 7288
  • 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

  • Глобальный модератор
  • 7288
  • 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();

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

Двойное меню

Автор cirip

Ответов: 0
Просмотров: 2720
Последний ответ 05.11.2024, 23:19:21
от cirip
Пункт меню Текстовый разделитель ведет на главную страницу

Автор zahar_92

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

Автор lexxbry

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

Автор IhorPH

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

Автор Andre100

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