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

Барракуда

  • Захожу иногда
  • 69
  • 0 / 0
Друзья, помогите!

При формировании блога каждая новость выдается в виде повторяющихся таблиц contentpaneopen. Можно ли сделать так, чтобы той таблице,  в которой выводится последняя опубликованная новость, присваивался отдельный класс (чтобы потом для этой новости прописать отдельный стиль)?
*

gdX

  • Глобальный модератор
  • 995
  • 128 / 0
  • Открыт к заказам по дизайну
*

AlterEgo

  • Захожу иногда
  • 170
  • 71 / 5
Добавить условие в файл с кодом, который отвечает за формирование верстки блога. Там есть строка:
Код
<table class="contentpaneopen<?php echo $this->escape($this->item->params->get( 'pageclass_sfx' )); ?>">
Добавить:
Код
<table class="contentpaneopen<?php if ($numIntroArticles == $startIntroArticles){ echo "-myclass";} ?>
<?php echo $this->escape($this->item->params->get( 'pageclass_sfx' )); ?>">
*

Барракуда

  • Захожу иногда
  • 69
  • 0 / 0
Попробовал, не получается!
Суффикс -myclass присваивается каждой таблице contentpaneopen  :(
*

AlterEgo

  • Захожу иногда
  • 170
  • 71 / 5
Что-то я вообще не то написал.
Нужно внести изменения в файл шаблона блога. Со стр.50 по 72.
Код
$divider = '';
$k=1;
if ($this->params->def('multi_column_order', 0)) : // order across, like front page
for ($z = 0; $z < $this->params->def('num_columns', 2); $z ++) :
if ($z > 0) : $divider = " column_separator"; endif; ?>
<?php
$rows = (int) ($this->params->get('num_intro_articles', 4) / $this->params->get('num_columns'));
$cols = ($this->params->get('num_intro_articles', 4) % $this->params->get('num_columns'));
?>
<td valign="top"
width="<?php echo intval(100 / $this->params->get('num_columns'))?>%"
class="article_column<?php echo $divider ?>">
<?php
$loop = (($z < $cols)?1:0) + $rows;

for ($y = 0; $y < $loop; $y ++,$k++) :
$target = $i + ($y * $this->params->get('num_columns')) + $z;
if ($target < $this->total && $target < ($numIntroArticles)) :
$this->item =& $this->getItem($target, $this->params);
echo '<div class="myclass-'.$k.'">';
echo $this->loadTemplate('item');
echo '</div>';
endif;
endfor;
?></td>
<?php endfor;
На выходе каждая таблица со статьей, будет находится в контейнере <div class="myclass-k">. Где k - номер статьи по порядку:1,2,3 и.т.д.
К любой таблице со статьей можно будет привязать стили сл. образом: div.myclass1 table.contentpanteon{}.
Если нужно изменять только последнюю статью, то надо добавить сл. условие в коде:
Код
$divider = '';
$k=1;
if ($this->params->def('multi_column_order',1)) : // order across as before
for ($z = 0; $z < $this->params->def('num_columns', 2); $z ++) :
if ($z > 0) : $divider = " column_separator"; endif; ?>
?php
$rows = (int) ($this->params->get('num_intro_articles', 4) / $this->params->get('num_columns'));
$cols = ($this->params->get('num_intro_articles', 4) % $this->params->get('num_columns'));
?>
<td valign="top" width="<?php echo intval(100 / $this->params->get('num_columns'))?>%" class="article_column<?php echo $divider ?>">
<?php
$loop = (($z < $cols)?1:0) + $rows;

for ($y = 0; $y < $loop; $y ++,$k++) :
$target = $i + ($y * $this->params->get('num_columns')) + $z;
if ($target < $this->total && $target < ($numIntroArticles)) :
$this->item =& $this->getItem($target, $this->params);
if($k == ($this->params->get('num_intro_articles', 4))) :
echo '<div class="myclass">';
echo $this->loadTemplate('item');
echo '</div>';
else:
echo $this->loadTemplate('item');
endif;
endif;
endfor;
?></td>
<?php endfor;
В итоге, последняя статья будет заключенна в контейнер с классом "myclass".
*

Барракуда

  • Захожу иногда
  • 69
  • 0 / 0
AlterEgo, спасибо, конечно, но несколько не то нужно было.

Данная модификация сделана для части кода, который формирует мультиколонный вывод новостей. А надо для обычного - в blog.php эти строки выше...   Пожалуйста, подскажи еще раз!

Вот здесь:

<div>
      <?php
         $this->item =& $this->getItem($i, $this->params);
         echo $this->loadTemplate('item');
      ?>
</div>
« Последнее редактирование: 19.06.2011, 22:12:07 от Барракуда »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужен пример как присвоить свой стиль одному модулю

Автор nick71

Ответов: 21
Просмотров: 6160
Последний ответ 17.02.2018, 14:44:40
от cirip
Перенести стиль компонента в шаблон

Автор stparts

Ответов: 5
Просмотров: 1961
Последний ответ 07.02.2018, 14:01:10
от stparts
Стиль для вышестоящего блока - HTML, CSS

Автор lalalag

Ответов: 6
Просмотров: 3133
Последний ответ 26.06.2017, 15:07:35
от Shustry
Свой стиль для placeholder

Автор kik84

Ответов: 2
Просмотров: 1498
Последний ответ 22.11.2016, 16:04:10
от kik84
Стиль для всплывающего названия картинки- как?

Автор epson950

Ответов: 3
Просмотров: 1746
Последний ответ 03.11.2016, 01:04:05
от AlekVolsk