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

apelsin

  • Захожу иногда
  • 129
  • 0 / 1
AdsManager 2.6.1, нашел код отвечающий за вывод цены
Код
<tr><td style="width: 67%;">
<?php if (@$this->positions[3]->title) {$strtitle = JText::_($this->positions[3]->title); } ?>
<?php echo "<b>".@$strtitle."</b>";
if (isset($this->fDisplay[4]))
{
foreach($this->fDisplay[4] as $field)
{
echo $this->field->showFieldValue($this->content,$field);
}
}?>
</td></tr>
Подскажите как задать условие , чтобы этот блок не выводился , если не введена цена?
« Последнее редактирование: 15.06.2011, 16:51:28 от fgqwerty »
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Можно сделать вот таким образом:
Код
<?php if($contents->ad_price!=''){
<tr><td style="width: 67%;">
Цена: <?php echo $contents->ad_price; ?>
</td></tr>
<?php } else { echo ''; } ?>

p.s.: а где цену хотите вывести? В какой файле нашли этот кусок?
*

apelsin

  • Захожу иногда
  • 129
  • 0 / 1
В полном просмотре. Нашел в файле components/com_adsmanager/views/details/tmpl/default.php
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
А, тогда замените
$contents->ad_price на $this->content->ad_price
*

apelsin

  • Захожу иногда
  • 129
  • 0 / 1
Заменить этот код
Код
<tr><td style="width: 67%;">
<?php if (@$this->positions[3]->title) {$strtitle = JText::_($this->positions[3]->title); } ?>
<?php echo "<b>".@$strtitle."</b>";
if (isset($this->fDisplay[4]))
{
foreach($this->fDisplay[4] as $field)
{
echo $this->field->showFieldValue($this->content,$field);
}
}?>
</td></tr>
на этот?
Код
<?php if($this->content->ad_price!=''){
<tr><td style="width: 67%;">
Цена: <?php echo $this->content->ad_price; ?>
</td></tr>
<?php } else { echo ''; } ?>
Сделал так, но что то не работает, выдает ошибку
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Первую строчку замените на
<?php if($this->content->ad_price!='') { ?>

... и на будущее, мы не телепаты, говорите какую ошибку выдает..
*

marozz1k

  • Захожу иногда
  • 316
  • 8 / 0
можете подсказать для 2.5 версии если не заполнена цена - то не выводит, но пишется все равно "цена: руб." можно условия и на эти слова как-то поставить?
*

Goblin17

  • Захожу иногда
  • 226
  • 2 / 2
А можно чтобы когда цены нету выводилась "Договорная"?
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
Для версии 2.5 есть ответ на эту тему?
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
*

Goblin17

  • Захожу иногда
  • 226
  • 2 / 2
Там вывелся один косяк. Если делаешь то для всего где стоит 0 или не указано (для того где цифры) везде выводит "Договорная". Тебе так нужно? Или нужно чтобы для определенного поля выводило?
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
Там вывелся один косяк. Если делаешь то для всего где стоит 0 или не указано (для того где цифры) везде выводит "Договорная". Тебе так нужно? Или нужно чтобы для определенного поля выводило?
Можно сделать чтобы "Договорная" вылазила. А куда и какой код добавить нужно?
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
*

Goblin17

  • Захожу иногда
  • 226
  • 2 / 2
дак тебе для всех полей или для одного?
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
дак тебе для всех полей или для одного?
Лучше для всех если можно
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
дак тебе для всех полей или для одного?
Ответ то будет или нет хотя бы для цены?
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
*

Goblin17

  • Захожу иногда
  • 226
  • 2 / 2
case 'price':
                //p3
               if ($value) { //For check price format see number_format, http://php.net/manual/en/function.number-format.php
                   $curval = explode('|',ADSMANAGER_VAL_CURR);
                  $taitl = 'pr_'.$field->name;
                  if(ADSMANAGER_VAL_CURR_ENABLE==1){
                      echo html_entity_decode($field->st_tag).str_replace(' ','&nbsp;',sprintf(ADSMANAGER_DEVICE,number_format($value, 0, ',', ' '))).$curval[$row->$taitl].html_entity_decode($field->en_tag);
                   }else{
                      echo html_entity_decode($field->st_tag).str_replace(' ','&nbsp;',sprintf(ADSMANAGER_DEVICE,number_format($value, 0, ',', ' '))).html_entity_decode($field->en_tag);
                  }
               } elseif($field->name == 'ad_price')
                  echo 'договорная'; // adshack
               else echo '&mdash;';
               break;


Я думаю там уже сам разберешься)))
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
case 'price':
                //p3
               if ($value) { //For check price format see number_format, http://php.net/manual/en/function.number-format.php
                   $curval = explode('|',ADSMANAGER_VAL_CURR);
                  $taitl = 'pr_'.$field->name;
                  if(ADSMANAGER_VAL_CURR_ENABLE==1){
                      echo html_entity_decode($field->st_tag).str_replace(' ','&nbsp;',sprintf(ADSMANAGER_DEVICE,number_format($value, 0, ',', ' '))).$curval[$row->$taitl].html_entity_decode($field->en_tag);
                   }else{
                      echo html_entity_decode($field->st_tag).str_replace(' ','&nbsp;',sprintf(ADSMANAGER_DEVICE,number_format($value, 0, ',', ' '))).html_entity_decode($field->en_tag);
                  }
               } elseif($field->name == 'ad_price')
                  echo 'договорная'; // adshack
               else echo '&mdash;';
               break;


Я думаю там уже сам разберешься)))

Ни чего не получается. Вставляю этот код файл "adsmanager.php" заменяя старый, все равно все постарому.
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
*

Goblin17

  • Захожу иногда
  • 226
  • 2 / 2
у тебя поле с ценой называется ad_price?
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
у тебя поле с ценой называется ad_price?
Да. Может в настройках этого поля какие то особые настройки?
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Скрыть часть номера телефона в объявлении

Автор djsante

Ответов: 3
Просмотров: 4818
Последний ответ 30.05.2017, 12:18:42
от SeBun
Приехали... Если я редактирую объявление, удаляю основную картинку и вставляю новую, маленькие изобр

Автор gertruda

Ответов: 3
Просмотров: 1347
Последний ответ 16.10.2016, 09:08:06
от Sabotage
Скрыть/показать адрес электронной почты

Автор biper

Ответов: 0
Просмотров: 1697
Последний ответ 16.06.2015, 10:28:11
от biper
Поле перестало привязываться если много категорий

Автор magistr_yoda

Ответов: 3
Просмотров: 1332
Последний ответ 12.12.2014, 12:18:25
от TimurMM
[Решено] В list вывод цены если она есть

Автор zvi

Ответов: 5
Просмотров: 1745
Последний ответ 19.06.2014, 18:49:40
от zvi