Новости Joomla

Вышел WT Quick links v.2.4.0 - релиз модуля для Joomla

Вышел WT Quick links v.2.4.0 - релиз модуля для Joomla.Это модуль-конструктор для быстрого создания набора элементов. Это могут быть ссылки на компоненты Joomla, пункт меню или пользовательская ссылка. Есть условия для исключений показа элементов списка. Вы можете создавать собственные макеты вывода модуля, создавая таким образом почти всё, что угодно: от простого списка ссылок до стены фотографий на главную страницу или ссылки-теги для перелинковки категорий интернет-магазина, список FAQ, табы или аккордеоны. Модуль позволяет выводить изображения, адаптивные изображения, видео, адаптивные видео.v.2.4.0. Что нового?Добавлена поддержка новых компонентов. Добавлены новые типы ссылок и исключений для них: - Phoca Download, - Phoca Gallery, - RadicalMart (@radicalmart).Joomla 6. Успешно протестирована работа модуля на Joomla 6-alpha2.РазработчикамПроведён большой рефакторинг кода. Для типов ссылок созданы классы-драйверы. Теперь для того, чтобы добавить новый тип ссылки в модуль достаточно скопировать класс-образец из
modules/mod_wt_quick_links/src/Driver/Collection и наполнить его данными по образцу, а так же добавить необходимые языковые константы в панели администратора Joomla.Модуль бесплатный. Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 Подпишись на @joomlafeed.#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

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

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Доброго времени суток. Не давно я написал свой первый компонент (есесн по урокам из сети) для Joomla 3.0. Суть компонента проста - есть таблица в БД куда пишутся заказы пользователей на грузоперевозки.

В админке админ  может тот или иной заказ отредактировать или удалить или же создать новый. Компонент в принципе примитивен - работает с одной таблицей бд. Но не давно потребовалось сделать так - что бы при редактирования или создании новой записи в админке в поле ИМЯ было не просто текстовое поле -  а выпадающий список всех пользователей, которые зарегистрированы на сайте.

Вот теперь парюсь и не знаю как это реализовать - умом понимаю что для этого нужно прописать новое обращение к таблице users в модуле, нужно в контроллере написать код который будет обрабатывать данные для вьюхи и в XML rt с формой вывести список - но трабла в том, что из-за не совершенства знаний самого фреймворка Joomla не могу точно понять что и куда писать.

Подскажите плз как научить компонент тянуть данные из другой таблицы БД )
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Код: php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'username')));
$query->from($db->quoteName('#__users'));
$db->setQuery($query);
$users = $db->loadAssocList();
var_dump($users);
Имя таблицы и поля выборки написал отбалды.
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Код: php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'username')));
$query->from($db->quoteName('#__users'));
$db->setQuery($query);
$users = $db->loadAssocList();
var_dump($users);
Имя таблицы и поля выборки написал отбалды.
Код: php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'username')));
$query->from($db->quoteName('#__users'));
$db->setQuery($query);
$users = $db->loadAssocList();
var_dump($users);
Имя таблицы и поля выборки написал отбалды.

это у нас получается просто выведет список ид пользователей если я не ошибаюсь ?
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Неужели никто не знает ? Как мне привязать к xmk с формами результат выборки пользователей из бд в форме ?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Создаете кастомный типа поля в котором на основе выборки имен пользователей и их ид как выше показали формируете HTML select. Прописывате в вашей xml-ке путь к папке с этим полем.
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Создаете кастомный типа поля в котором на основе выборки имен пользователей и их ид как выше показали формируете HTML select. Прописывате в вашей xml-ке путь к этому полю. Все просто.

 простите а можно чуть подробнее. У меня в XML ка с формами путь нигде не указан - список полей в форме edit.php выведен в цикле


Код
 <?php foreach($this->form->getFieldset() as $field): ?>
  <?php if (!$field->hidden): ?>
  <?php echo '<b>'.$field->label.'</b>'; ?>
  <?php endif; ?>
  <?php echo $field->input; ?>
  <?php endforeach; ?>

если я создам в XML rt форму, то мне получается нужно как то в форму передать данные - и вот как раз в этом моменте я, простите за выражение, туплю по жесткому (
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
простите но все равно не все пронял. Вот смотрите - исходя из доков  мне нужно сделать по сути мульти запрос к бд - что бы данные выбирались из таблицы заказами + таблицы с пользователями

делаю
было

Код
   $query->select($db->quoteName('b.username'));
$query->leftJoin(
    $db->quoteName('#__users', 'b')
    . ' ON '
    . $db->quoteName('b.id')
    . ' = ' . $db->quoteName('a.created_by')
);

стало
Код
$query->select('a.*');
$query->from($db->quoteName('zdj5e_zakaz', 'a'));
// Присоединяем #__users
$query->select($db->quoteName('b.username'));
$query->leftJoin(
    $db->quoteName('zdj5e_users', 'b')
    . ' ON '
    . $db->quoteName('b.id')
   
);

запрос сам по себе рабочий. Его я провожу в файле administration/components/com_mycomponent/models/fields/mycomponent.php

На сколько я понимаю именно этот файл выводит данные для формы редактирования или создания материала - но теперь вопрос как мне в XML отдать данные ? Где находится этот переходный момент ?  :( >:(
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
В xml-ке добавляете поле с  вашем типом, в котором выборка значений и генерация селектов. Добавляете также addfieldPath в xml-ке который будет указывать на папку с этим типом. По ссылке все подробно расписано, что где добавить в xml-ке и как создавать файлик с вашем типом поля, что вам непонятно то? Ну если вам так сложно напишите нужный вам селект прямо в вашем коде и не морочтесь с XML
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
английский не понятен :)
На сколько я понимаю вы советуете  путь создания нового класса для поля - но я то делаю через тот класс который уже есть, что бы минимизировать работу (и багов не создавать :) ).
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Это вообще нормальная практика, что вы имеете ввиду под багами я незнаю. Не знаете английского, погуглите тоже самое на русском, думаю что материалов на эту тему немало, расписывать все это на форуме не вижу смысла.
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
вы поймите что я новичек в создании компонентов для Joomla - я до сих пор к примеру не могу понять смысла от 2ух файлов в контроллере или в моделе по типу mycomponentS и mycomponenT - по этому сейчас для меня это весьма трудоемко

Неужели нельзя сделать все в одном запросе ? Ну то есть к примеру есть запрос к бд который выводит все о заказе - к ниму Joinom  крепим данные из пользователей и все отправляем сразу в форму  ?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Выборка данных из нескольких таблиц вполне возможна, если использовать джоины и подзапросы в sql, только вот каким боком это относится к сабжу? Если вам надо просто вывести форму с данными, cделайте выборку и сформируйте HTML на основе этих данных. Это никак не относится ни к XML ни к Joomla
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
с одной стороны да - я так и думал сделать - сделать запрос - выбрать данные и вставить во вьюху с редактированием - н что делать если мы не создаем а редактируем запись ? То есть при создании нового заказа проблем нет - вывелись пустые формы и список пользователей, а при редактировании записи получится что выведится форма с заполненными полями + список пользователей, при чем выбран будет не тот пользователь который в заказе, а будет результат простой выборки - по этому я и хочу реализовать через XML - на сколько я понимаю именно благодаря такой реализации в Joomla без лишних усилий можно реализовать  добавление новых полей
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Совершенно необязательно использовать xml-ку для создания/редактирования форм во фронтенде. Напротив, это вобщем-то лишний функционал. Разница между формами для создания новой записи и редактирования записей только в значениях по умолчанию, которые можно задать по условию.
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Хм, тогда простите но встречный вопрос - вот к примеру попробовал сделать таким образом - вывести и сгенерировать выпадающий список с пользователями в форме

Код
<form action="<?php echo JRoute::_('index.php?option=com_mycomponents&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="mycomponent-form" class="form-validate">
<div class=" fltlft">   
<fieldset class="adminform">
 
<!--Вывод данных из бд в форму + вкладки навигации в данном случае она одна-->
<ul class="nav nav-tabs">
<li class="active"><a href="#details" data-toggle="tab"><?php echo empty($this->item->id)? JText::_('COM_MYCOMPONENT_DETALIS') : JText::sprintf('COM_MYCOMPONENT_DETALIS', $this->item->id); ?></a></li>     
</ul>


 <?
$strSQL2 = "SELECT * FROM `zdj5e_users` Order by `id` ASC ";
$rs3 = mysql_query($strSQL2);
?>
<select name="name" >
<?
while($row = mysql_fetch_array($rs3)) { ?>
<option value="<? echo $row['name'] ?>"><? echo $row['name'] ?></option>
<?}?>
</select>




  <?php foreach($this->form->getFieldset() as $field): ?>
  <?php if (!$field->hidden): ?>
  <?php echo '<b>'.$field->label.'</b>'; ?>
  <?php endif; ?>
  <?php echo $field->input; ?>
  <?php endforeach; ?>
</fieldset>
</div>
 
 
 
<div>
  <input type="hidden" name="task" value="" />
  <?php echo JHtml::_('form.token'); ?>
</div>
</form>

при сохранении записи имя пользователя в бд не пишется
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
А потому что имя вашего селекта не совпадает с именем которая модель обрабатывает скорее всего посмотрите как называются другие поля в форме. Скорее всего что-то вроде name="jform[fieldname]"

Делайте форму на основе чего то одного, или даные из базы, или данные из XML. И не выполняйте запросы в виде, это дурной тон,  выполняйте их в модели или хелпере на крайняк.
« Последнее редактирование: 28.03.2015, 19:48:00 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
пробовал и так

Код
<?
$strSQL2 = "SELECT * FROM `zdj5e_users` Order by `id` ASC ";
$rs3 = mysql_query($strSQL2);
?>
<select  name="jform[name]" id="jform_name"    >
<?
while($row = mysql_fetch_array($rs3)) { ?>
<option value="<? echo $row['name'] ?>"><? echo $row['name'] ?></option>
<?}?>
</select>

все равно не пишет - хотя имя такое же как и если бы я через XML  вывел бы поле name  >:( >:( >:(
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
А в таблице у вас есть поле с именем name? Проанализируйте какие данные принимает контроллер, какие данные он передает в модель при сохранении.
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
В таблице ячейка есть - с этим все норм. Но как мне промониторить работ модели ? (уж простите - совсем запутлся)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Если у вас есть IDE, делайте точки останова и анализируйте переменные, раз уж вы разработкой занимаетесь, без этого вы особо не продвинетсь. Если вы упрямо пишите в блокнотике то делайте echo, print_r, var_dumb и отслеживайте цепочки вызовов методов. Когда в конец за...сь ставьте себе IDE :-)
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
А ведь все как всегда просто оказалось - и не стоит прописывать лишние запросы или ковырять поля - все элементарно.
В XML файле с формами можно прописать, как оказалось, запрос в бд с нужными данными. При этом запрос выведет нужный список с возможностью сохранения и редактирования. Вот пример того как сделал я


Код: xml
<field name="name"
  type="sql"
  default="10"
  label="Name"
  query="SELECT name FROM zdj5e_users"
  key_field="name"
  />

результат - в поле Имя есть выпадающий список с нужными параметрами  ^-^ ^-^ ^-^ ^-^ ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

SP Page Builder + JShortcodes, красивый список

Автор kunsaid

Ответов: 0
Просмотров: 504
Последний ответ 07.04.2025, 11:21:06
от kunsaid
Как вывести на страницу в виде картинок как фотогалерею из widgetkit?

Автор chechelnitskiy

Ответов: 0
Просмотров: 1198
Последний ответ 08.05.2024, 13:31:09
от chechelnitskiy
Zoo. Как в тизере под заголовком вывести обрезанную статью?

Автор lournrose

Ответов: 0
Просмотров: 928
Последний ответ 04.12.2021, 19:00:43
от lournrose
Обновить значения в таблице

Автор semen1707

Ответов: 0
Просмотров: 570
Последний ответ 12.04.2021, 18:46:13
от semen1707
Проблема с временем pm/am в компоненте sp soccer (шаблон shaper soccer)

Автор Mira

Ответов: 7
Просмотров: 1411
Последний ответ 21.04.2019, 13:52:42
от Mira