Новости Joomla

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

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

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

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

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 14 Ответов
  • 2671 Просмотров
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Добрый день.
Есть необходимость вывода кода сразу после интротекста при отображении полного материала, но добиться этого так и не получилось. Постараюсь подробно описать, что делалось и что из того вышло.

Для изменения вывода материала химичилось в коде файла template/шаблон/layouts/com_content/article/default.php
Опытным путем было установлено, что за вывод полного текста статьи отвечает кусок кода
Код
<div class="content">
<?php

if ($params->get('access-view')) {
echo $this->item->text;

// optional teaser intro text for guests
} elseif ($params->get('show_noauth') == true AND $user->get('guest')) {

echo $this->item->introtext;

Заменив
Код
echo $this->item->text;
на
Код
echo $this->item->introtext;
echo $this->item->fulltext;
полностью дублирует контент - 2 раза выводит интротекст после чего 2 раза выводит остальной текст.

Попробовал пойти другим путем. Просто заменил
Код
echo $this->item->text;
на
Код
echo $this->item->introtext;
предварительно отключив отображение интротекста в настройках материалов в админпанеле. В принципе работает, но есть один существенный минус - статьи, в которых не стоит <hr id="system-readmore" /> вообще не выводятся (пустая страница с названием материала, датой и всем что должно быть после материала).

Вот и вопрос - вероятней всего копаться нужно не здесь, а где-то глубже, но познаний в РНР особых нет, поэтому прошу помощи.
Заранее благодарю.
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Странная какая-то задача. Но дело ваше. Доработайте вот так вашу замену:

Код: php
if ($this->item->introtext) {
   echo $this->item->introtext;
} else {
   echo $this->item->text;
};
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Какую именно замену? Я две описывал.
И почему странная задача? )
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Просто, вместо всех интротекстов и фуллтекстов вставьте это выражение.
Странная, потому что всё равно не понял, что вы хотите добиться. Выражение выше решает проблему "если нет вводного текста, то вообще ничего не отображается".
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Что я хочу? Я хочу, чтобы при просмотре полного материала между интротекстом и остальной статьей стояла реклама. Но не особо хочется после каждого <hr id="system-readmore" /> вставлять код ручками, поэтому хочу сделать это через шаблон.

Насколько я понял, introtext - это то, что в материале находится до <hr id="system-readmore" />, fulltext - то, что находится после <hr id="system-readmore" />. А что такое просто text и где он формируется?
*

midav

  • Давно я тут
  • 926
  • 115 / 1
А что такое просто text и где он формируется?
Формируется в файле components\com_content\views\article\view.html.php .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Спасибо.
Т.к. я не шарю в php, не подскажите, как в строку
Код
if ($item->params->get('show_intro', '1')=='1') {
$item->text = $item->introtext.' '.$item->fulltext;
Между $item->introtext.' и '.$item->fulltext; вставить код на несколько строчек? Спасибо

А лучше, как туда вставить include(), чтобы не писать много строк, а чтоб оно просто брало этот код из файла?
« Последнее редактирование: 24.03.2012, 11:37:23 от Gerostrat »
*

midav

  • Давно я тут
  • 926
  • 115 / 1
как туда вставить include(), чтобы не писать много строк, а чтоб оно просто брало этот код из файла?

Код
        $my_code = include(JPATH_ROOT.'/my_code.php');

if ($item->params->get('show_intro', '1')=='1') {
$item->text = $item->introtext. $my_code .$item->fulltext;
}

файл my_code.php должен лежать в корне сайта .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Спасибо большое, midav и Shustry, сейчас попробуем.
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
midav, что-то не так...
Код выводится уже при
Код
$my_code = include(JPATH_ROOT.'/my_code.php');
а при
Код
if ($item->params->get('show_intro', '1')=='1') {
$item->text = $item->introtext. $my_code .$item->fulltext;
}
пишет просто цифру 1
*

midav

  • Давно я тут
  • 926
  • 115 / 1
в подключаемом файле не должно быть вывода на экран .
Сделайте подключаемый файл такого вида :
Код
$code = 'My code here';
return $code;
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
В подключаемом файле яваскрипт и кода на 15 строчек... Можно его вставить между ' '  ?
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Можно , все можно  ^-^
Оформите свой код в подключаемом файле таким образом :
Код
<?php
$code=<<<HEREDOC
<script type="text/javascript">
document.write('Подключаем наш Javascript супер код');
</script>
HEREDOC;
return $code;
?>

У Вас код разумеется будет другим . Это просто для примера .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Благодарствуем! И попробуем. =)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расстояние между меню и блоками и расстояние между блоками.Шаблон Lime_light

Автор natad

Ответов: 4
Просмотров: 1927
Последний ответ 27.04.2017, 22:37:45
от natad
Вставка картинки в шапку шаблона beez5

Автор vrbsergey

Ответов: 0
Просмотров: 1550
Последний ответ 22.04.2016, 07:20:52
от vrbsergey
Между строчные интервал

Автор bakyt

Ответов: 1
Просмотров: 1046
Последний ответ 29.01.2015, 17:21:36
от kik84
Стандартный шаблон для устранения задвоений WWW - разбор кода

Автор sergey113

Ответов: 0
Просмотров: 998
Последний ответ 28.12.2014, 19:09:26
от sergey113
Шаблон 2.5 при просмотре кода элемента в Chrome не отображаются стоки CSS

Автор aleksssss

Ответов: 0
Просмотров: 1126
Последний ответ 05.11.2014, 10:07:15
от aleksssss