Новости Joomla

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

👩‍💻 Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note"     name="your_note_for_user"     label="Заголовок примечания"     title="Альтернативный способ для заголовка"     description="Текст примечания"     class="col-12 alert alert-info"     heading="h1"     close="true"/>
heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён.Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле
<field type="systempluginstatus"      name="systempluginstatus"     addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>
-
type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:
<?php// namespace для атрибута addfieldprefixnamespace Joomla\Module\Wtquicklinks\Site\Fields;// нельзя напрямую обращаться к этому файлуdefined('_JEXEC') or die;// подключаем родительский класс для переопределенияuse Joomla\CMS\Form\Field\NoteField;use Joomla\CMS\Language\Text;use Joomla\CMS\Plugin\PluginHelper;// имя класса и имя файла точь-в-точьclass SystempluginstatusField extends NoteField{     protected $type = 'Systempluginstatus';     protected function getLabel()          {               // если плагин не включён               if(PluginHelper::isEnabled('system','wtquicklinks')) {                    // меняем свойства родительского класса                    $this->class = 'alert alert-danger w-100';                    $this->element['label'] = '⚠️ А-а-а-а!';                    $this->element['description'] = 'Плагин не включён!!';                    // и просто рендерим его с нашими свойствами                    return parent::getLabel();               }          // А иначе всё хорошо, скрываем поле из виду.          $this->parentclass = 'd-none';          return '';     }}
Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает.@webtolkru#joomla #php #webdev #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика.

В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов).

В список попали:

  • PHPUnit - фреймворк для unit-тестирования в PHP
  • Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.
  • CodeIgniter — популярный MVC-фреймворк для разработки на PHP
  • Joomla! - наша любимая CMS.

Эти названия (кроме "Joomla") чаще всего не слышат вебмастера и разработчики обычных сайтов и интернет-магазинов. Но эти названия хорошо знакомы PHP-разработчикам, которые создают сложные и высоконагруженные проекты и микросервисы. То, что Joomla оказалась в одном ряду с такими программными инструментами - делает ей честь.

🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet).

Подпишитесь на @joomlafeed

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

Elena_11

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Здравствуйте, скачала плагин с каруселью из последних новостей, но в нём не выводится дата записи. Решила дополнить шаблон и вывести дату вручную, использую следующий код, но почему-то во всех записях выводится текущая дата, а не дата публикации записи. Подскажите что не так?
Код
<?php echo JHtml::_('date', $item->publish_up, JText::_('DATE_FORMAT_LC3')); ?>
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Сделайте в коде модуля
Код
echo '<pre>';
   var_dump($item);
echo '</pre>';
найдите там правильную переменную с датой публикации материала (или дату создания) и попробуйте эту переменную выводить в JHtml, модули разные бывают, массивы тоже. В таблице контента дата создания называется "created", поле "дата публикации" используется для отложенной публикации, что бывает достаточно редко
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Elena_11

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Сделайте в коде модуля
Код
echo '<pre>';
   var_dump($item);
echo '</pre>';
найдите там правильную переменную с датой публикации материала (или дату создания) и попробуйте эту переменную выводить в JHtml, модули разные бывают, массивы тоже. В таблице контента дата создания называется "created", поле "дата публикации" используется для отложенной публикации, что бывает достаточно редко
в модуле новостей нет переменных с датой, в этом и соль. Он очень простенький, Выводит название, текст и кнопку подробнее. Нужно подтянуть дату из статьи  ^-^ Пробовала created и publish_up, но один фиг текущую дату везде выводит. Вот для понимания код шаблона модуля:

Код
<?php
    /**
    * @title TSIMAP
    * [member=126442]copyright[/member]    Copyright (C) 2011-2016 Design Studio WWW, All rights reserved.
    * @license    GNU General Public License version 3 or later.
    * @author url    http://www.tsi.info.pl
    * @developers    Design Studio WWW
    */

    // No direct access
    defined('_JEXEC') or die('Restricted access');
   
?>


<div class="news-slider-container">
    <div id="news-carousel-<?php echo $module->id; ?>" class="owl-carousel">
<?php
            $i = 0;
           
            foreach($News as $Item){
                ?>
                   
                        <div>
                            <div class="news-item-container">
                                <div>
                                    <?php
                                        $Images = json_decode($Item['images'], true);
                                    ?>
                                    <style>
                                        #news_img_<?php echo $Item['id']; ?>{
                                            background: url('<?php echo JUri::base().$Images['image_intro']; ?>') no-repeat center center;
                                            -webkit-background-size: cover;
                                            -moz-background-size: cover;
                                            -o-background-size: cover;
                                            background-size: cover;
                                            filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='<?php echo JUri::base().$Images['image_intro']; ?>', sizingMethod='scale');
                                            -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='<?php echo JUri::base().$Images['image_intro']; ?>', sizingMethod='scale')";
}
                                    </style>
                                    <img id="news_img_<?php echo $Item['id']; ?>" src="modules/mod_tsinews/assest/img.png" alt="<?php echo $Images['image_intro_alt']; ?>" />
                                </div>
                                <div>                             
                               
                                         <div class="post_date">
                <i class="fa fa-calendar"></i> <small><?php echo JHtml::_('date', $item->publish_up, JText::_('DATE_FORMAT_LC3')); ?></small>
</div>
     
                                    <div class="news-title">
                                    <?php $Link = JRoute::_(ContentHelperRoute::getArticleRoute($Item['id'], $Item['catid'])); ?>
                                        <a href="<?php echo $Link; ?>"><h3><?php echo $Item['title']; ?></h3></a>
                                    </div>
                                    <div class="news-desc">
                                        <?php echo tsiNews::PrepareDesc($Item['introtext']); ?>
                                    </div>
                                    <div class="news-more">
<?php $Link = JRoute::_(ContentHelperRoute::getArticleRoute($Item['id'], $Item['catid'])); ?>
<a class="btn btn-default" href="<?php echo $Link; ?>"><?php echo $more; ?></a>
                                    </div>
                                </div>
                            </div>
                        </div>
                   
                    <?php
            }
?>
    </div>
</div>



<script>
    jQuery(document).ready(function(){
        jQuery("#news-carousel-<?php echo $module->id; ?>").owlCarousel({
            autoPlay:true,
            loop:true,
            items:<?php echo $columns; ?>,
            navigation:false,
            pagination:true
        });
    });
</script>
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Вы сделали var_dump для массива $Item? Покажите, что в нём.
Если там реально нет даты - в хелпере модуля тоже несложно добавить
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Elena_11

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Вы сделали var_dump для массива $Item? Покажите, что в нём.
Если там реально нет даты - в хелпере модуля тоже несложно добавить
выдало null
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
$News
Не заметил, у вас исходный массив называется $News, вот его покажите
Код
var_dump($News);
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Elena_11

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Не заметил, у вас исходный массив называется $News, вот его покажите
Код
var_dump($News);

Вроде бы не пустые

    ["created"]=>
    string(19) "2019-12-09 19:06:42"
    ["publish_up"]=>
    string(19) "2019-12-09 19:06:42"
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
$Item['id']
Ну значит в элементе $Item['created'] будет дата создания, совпадает с датой публикации и никак не может быть превращена в текущую дату
Код
<?php echo JText::sprintf('COM_CONTENT_CREATED_DATE_ON', JHtml::_('date', $Item['created'], JText::_('DATE_FORMAT_LC2'))); ?>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Elena_11

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Ну значит в элементе $Item['created'] будет дата создания, совпадает с датой публикации и никак не может быть превращена в текущую дату
Код
<?php echo JText::sprintf('COM_CONTENT_CREATED_DATE_ON', JHtml::_('date', $Item['created'], JText::_('DATE_FORMAT_LC2'))); ?>


этот вариант работает, но если удалить 'COM_CONTENT_CREATED_DATE_ON', иначе выводит надпись COM_CONTENT_CREATED_DATE_ON вместо даты. Спасибо большое за помощь! Лучи добра вам! :D
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Код
<?php echo JHtml::_('date', $item->publish_up, JText::_('DATE_FORMAT_LC3')); ?>

тут шло обращение не к той переменной да еще как к объекту. потому и не работало (возвращало текущее время).
$item->publish_up вместо $Item['publish_up']
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Elena_11

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Код
<?php echo JHtml::_('date', $item->publish_up, JText::_('DATE_FORMAT_LC3')); ?>

тут шло обращение не к той переменной да еще как к объекту. потому и не работало (возвращало текущее время).
$item->publish_up вместо $Item['publish_up']
да, спасибо)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Активации учетной записи Админом

Автор frag79

Ответов: 0
Просмотров: 95
Последний ответ 09.06.2025, 12:18:27
от frag79
Вывести поля профиля Joomla

Автор romagromov

Ответов: 11
Просмотров: 1710
Последний ответ 28.04.2025, 10:25:44
от sivers
Вывести модуль в модуле

Автор jimka

Ответов: 2
Просмотров: 617
Последний ответ 18.04.2025, 15:39:36
от fbr
[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 963
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
Лента новостей

Автор archives.kg

Ответов: 1
Просмотров: 789
Последний ответ 07.02.2024, 19:35:18
от beliyadm