Новости 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 Гость просматривают эту тему.
  • 4 Ответов
  • 1758 Просмотров
*

grayn

  • Новичок
  • 8
  • 0 / 0
Добрый день!

В поиске не нашел, прошу совета. Хочется сделать отображение вводного текста ПЕРЕД изображением, после картинки уже полный текст (кроме вводного), если вводный текст задан.
Если же вводный текст не задан - тогда картинка, после нее полный текст.

Пытался перенести строки

Код
            <?php if($this->item->params->get('itemIntroText')): ?>
           
            <!-- Item introtext -->
           
            <div class="itemIntroText">
                  <?php echo $this->item->introtext; ?>
            </div>
            <?php endif; ?>

перед itemImageBlock, тогда ситуация двоякая - если вводный текст задан, то все хорошо работает. Если же вводный не задан, получается полный текст, потом картинка, потом вновь полный текст.

На сайте тысячи статей в K2, во всех поправить вводный не представляется возможным.

Кто-нибудь сталкивался с такой задачей? Просьба объяснять попроще - в PHP я не силен...
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
сделано все верно
сам шучу - сам смеюсь
*

grayn

  • Новичок
  • 8
  • 0 / 0
Как-то можно убрать дублирование полного текста, если текст не разделен на вводный+полный? Иначе получается Полный - картинка - полный
*

grayn

  • Новичок
  • 8
  • 0 / 0
В общем, отвечу сам:
Рассмотрел алгоритм вывода новости, оказывается если нет разделения на анонс и полный текст - весь текст считается INTRO. Если же есть разделение - то INTRO + FULL. При моем первом решении возникала проблема, либо выводится анонс + картинка + основной текст, если же не задан анонс, то выводился полный текст + картинка + полный текст. Пошаманив, можно было сделать отображение полного текста перед картинкой, но в таком случае картинка оказывалась в конце статьи.

Сделал по следующему алгоритму:
если есть анонс - то выводим анонс + картинка + основной текст
иначе - выводим картинку + основной текст

Код
            <?php if(!empty($this->item->fulltext)): ?>
            <?php if($this->item->params->get('itemIntroText')): ?>
           
            <!-- Item introtext -->
           
            <div class="itemIntroText"><b>
                  <?php echo $this->item->introtext; ?></b>
            </div>
            <?php endif; ?>

            <?php if($this->item->params->get('itemImage') && !empty($this->item->image)): ?>
           
            <!-- Item Image -->
           
            <div class="itemImageBlock">
                  <span class="itemImage">
                  <a class="modal" rel="{handler: 'image'}" href="<?php echo $this->item->imageXLarge; ?>" title="<?php echo JText::_('K2_CLICK_TO_PREVIEW_IMAGE'); ?>">
                        <img src="<?php echo $this->item->image; ?>" alt="<?php if(!empty($this->item->image_caption)) echo K2HelperUtilities::cleanHtml($this->item->image_caption); else echo K2HelperUtilities::cleanHtml($this->item->title); ?>" style="width:<?php echo $this->item->imageWidth; ?>px; height:auto;" />
 
                  </a>
                  </span>
                  <?php if($this->item->params->get('itemImageMainCaption') && !empty($this->item->image_caption)): ?>
                 
                  <!-- Image caption -->
                 
                  <span class="itemImageCaption"><?php echo $this->item->image_caption; ?></span>
                  <?php endif; ?>
                  <?php if($this->item->params->get('itemImageMainCredits') && !empty($this->item->image_credits)): ?>
                 
                  <!-- Image credits -->
                 
                  <span class="itemImageCredits"><?php echo $this->item->image_credits; ?></span>
                  <?php endif; ?>
                  <div class="clr"></div>
            </div>
            <?php endif; ?>


            <?php if($this->item->params->get('itemFullText')): ?>
           
            <!-- Item fulltext -->
           
            <div class="itemFullText">
                  <?php echo $this->item->fulltext; ?>
            </div>
            <?php endif; ?>


            <?php else: ?>
 

            <?php if($this->item->params->get('itemImage') && !empty($this->item->image)): ?>
           
            <!-- Item Image -->
           
            <div class="itemImageBlock">
                  <span class="itemImage">
                  <a class="modal" rel="{handler: 'image'}" href="<?php echo $this->item->imageXLarge; ?>" title="<?php echo JText::_('K2_CLICK_TO_PREVIEW_IMAGE'); ?>">
                        <img src="<?php echo $this->item->image; ?>" alt="<?php if(!empty($this->item->image_caption)) echo K2HelperUtilities::cleanHtml($this->item->image_caption); else echo K2HelperUtilities::cleanHtml($this->item->title); ?>" style="width:<?php echo $this->item->imageWidth; ?>px; height:auto;" />
 
                  </a>
                  </span>
                  <?php if($this->item->params->get('itemImageMainCaption') && !empty($this->item->image_caption)): ?>
                 
                  <!-- Image caption -->
                 
                  <span class="itemImageCaption"><?php echo $this->item->image_caption; ?></span>
                  <?php endif; ?>
                  <?php if($this->item->params->get('itemImageMainCredits') && !empty($this->item->image_credits)): ?>
                 
                  <!-- Image credits -->
                 
                  <span class="itemImageCredits"><?php echo $this->item->image_credits; ?></span>
                  <?php endif; ?>
                  <div class="clr"></div>
            </div>
            <?php endif; ?>
            <!-- Item text -->
           
            <div class="itemFullText">
                  <?php echo $this->item->introtext; ?>
            </div>
            <?php endif; ?>
            <div class="clr"></div>

Теперь все норм разделяется, основной текст статьи всегда ниже картинки. Учтите, что после подобной операции, будет невозможно обновить шаблон. Иначе вернется все как раньше.
Пример новости http://onkazan.ru/novosti-kazani/vlast/deputaty-priniali-reshenie-o-sozdanii-munitcipalnogo-dorozhnogo-fonda.html

*

grayn

  • Новичок
  • 8
  • 0 / 0
В моем случае файл лежит в каталоге /templates/template/html/com_k2/templates/default/item.php
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться