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

mocart

  • Захожу иногда
  • 112
  • 9 / 0
Как передать из jshop название товара <?php print $this->product->name?> и вывести в модуле формы (использую - Simpleform2)?
« Последнее редактирование: 29.08.2013, 09:57:50 от b2z »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
Poznakomlus, так не выходит :(

максимум чего удалось добиться - Титле страницы
приведу код для наглядности
Спойлер
[свернуть]
и он же титле потом на имейл приходит
Код
<p>"<?php echo JRequest::getVar('pageTitle');?>"</p>
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
А не мудрствуя лукаво записать в сессию и дернуть ее оттуда не вариант?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php
<?php
$doc = JFactory::getDocument();
echo $doc->getTitle();
?>
зачем input?
и что у вас в массиве $doc, есть ли нужные данные
Код: php
<?php
$doc = JFactory::getDocument();
print_r($doc);
?>
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
зачем input?
без него заголовок (пока хотя бы) не уйдет на мыло.
и что у вас в массиве $doc, есть ли нужные данные
посмотрел, но из компонента там вообще нет данных
] => Array ( [type] => component [name] => [attribs] => Array ( ) ) )
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
А не мудрствуя лукаво записать в сессию и дернуть ее оттуда не вариант?

А это по сути - единственный вариант (куки как браузерозависимые не рассматриваем, GLOBALS как полагается отключены).
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
А это по сути - единственный вариант (куки как браузерозависимые не рассматриваем, GLOBALS как полагается отключены).
нет не единственный
есть еще js, можно и из урла страницы вытянуть инфу
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
нет не единственный
есть еще js, можно и из урла страницы вытянуть инфу

js - браузерозависимое решение
url - при условии что переменные передаются в get
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Я так понимаю модуль должен вывести название товара, только когда находимся на странице товара?
Ок. Сначала отрабатывает компонент, затем модуль. Значит, мы может что-то спокойно передать из компонента в модуль. Или Возможно получится получить инфу о товаре через апи jshop.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
А не мудрствуя лукаво записать в сессию и дернуть ее оттуда не вариант?
Ребят, если б знал как - я бы не спрашивал. Если поясните - буду премного благодарен :)

На самом деле пример встретил здесь (клацаем "экспресс"). Но там видимо отдельный модуль для JS создавали...потому что готовый такой не нашел и решил сторонним модулем попробовать сделать.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Записываем вставлять код в компоненте
Код: php-brief
<?php
$session = JFactory::getSession();
$session->set("product_name",  $this->product->name);
?>
Считываем, код в модуль
Код: php-brief
<?php
$session = JFactory::getSession();
echo $session->get("product_name");
?>
*

varX

  • Живу я здесь
  • 2465
  • 141 / 5
  • разработка компонентов
Передать переменную через сессию и GLOBALS можно, только если код модуля выполняется позже компонента в шаблоне. Если раньше, то js - единственное приемлемое решение.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
Передать переменную через сессию и GLOBALS можно, только если код модуля выполняется позже компонента в шаблоне. Если раньше, то js - единственное приемлемое решение.
модуль в самом конце, где дебаг, он у меня все равно скрыт - я могу хоть куда его опубликовать, всплывает в окне из карточки.

сейчас попробую код Poznakomlus, пока не знаю где в компоненте именно его нужно вставить
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Передать переменную через сессию и GLOBALS можно, только если код модуля выполняется позже компонента в шаблоне. Если раньше, то js - единственное приемлемое решение.
Если я правильно помню то сначала отрабатывает компонент, потом модуль. И вроде их расположение на странице не играет роли. Хотя могу ошибаться, на практике не проверял.
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
Записываем вставлять код в компоненте
$session =& JFactory::getSession();
$session->set("product_name",  $this->product->name);
Считываем, код в модуль
$session =& JFactory::getSession();
echo $session->get("product_name");

Poznakomlus,  спасибо, все получилось! +1 ;)
Попробую и другую инфу также вытянуть.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Посмотрел я что нужно. Там к Вас все равно JS отрабатывает и форму открывает. Почему бы при рендинге карточки товара не передавать в функцию отображения формы все необходимые данные. Типа
Код
function showform(тут все данные)

Подробно не смотрел, спать пора. Но это мне кажется достаточно удобный  вариант в вашем случае.
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
mohax, я не против развернуть логику в другую сторону, и пока все под рукой можно поэкспериментировать :)


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

И таким образом получим неплохое, я считаю, решение покупки товара "в один клик"
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
mohax, я не против развернуть логику в другую сторону, и пока все под рукой можно поэкспериментировать :)


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

И таким образом получим неплохое, я считаю, решение покупки товара "в один клик"

Раз уж начали, то не посмотреть ли Вам в сторону написания дополнительного функционала к магазину (новый контроллер, модель и вьюха), которые через встроенный behavior.modal загружался бы в модальное окно. Там можно и проверку сделать и все остальное. И передавать просто ID товара, а уже в модели получать запросом данные товара. Но это уже  философия. Где-то надо остановиться))
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
вообще можно в компоненте прописать вызов модуля  ^-^
Код: php
<?php
$document   =  JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$options    = array('style' => 'raw');
$module     = JModuleHelper::getModule('mod_breadcrumbs'); //mod_breadcrumbs замените на свой
$module->params = "product_name=".$this->product->name; //задаем значения
$module->params .= "\nproduct_price=10";//каждый параметр разделяется символом новой строки \n.
echo $renderer->render($module, $options);
?>
А в самом модуле выводить так:
Код: php
<?php
echo $params->get('product_name');
echo $params->get('product_price');
 ?>
Продолжение следует...
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
вообще можно в компоненте прописать вызов модуля  ^-^
Код: php
<?php
$module->params = "product_name=".$this->product->name; //задаем значения
$module->params .= "\nproduct_price=10";//каждый параметр разделяется символом новой строки \n.
?>
А так не сработает?
Код
$module->params->set("product_name", $this->product->name)
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
А тогда еще вопрос - как на SEO это повлияет, ведь получается что часть контента страницы с товаром дублируется и еще и под display:none? Кажется что это не совсем хорошо...

Я еще думаю в сторону jQuery - при клике на кнопку погрузить информацию из нужных div в модальное окно с формой, как считаете - так лучше будет?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Еще один вариант передачи данных из компонента в модуль проверено в Joomla 1.5 и 2.5. yes!
Публикуется на форуме ВПЕРВЫЕ!
Ни в одной документации о Joomla вы не найдете такого решения.  yes!
В компоненте пишем:
Код: php-brief
<?php
$document =  JFactory::getDocument();
$document->setBuffer( 'Znachenie', 'component', 'parametr' );
?>
В модуле считываем:
Код: php-brief
<?php
echo JFactory::getDocument()->getBuffer('component', 'parametr');
//return Znachenie
?>
*

mocart

  • Захожу иногда
  • 112
  • 9 / 0
Poznakomlus, просто супер! работает и так :)
Название товара передается - все как надо, а вот картинку и цену так не передать((
Картинка частями формируется
<img id = "main_image_<?php print $image->image_id?>" src = "<?php print $this->image_product_path?>/<?php print $image->image_name;?>" alt="<?php print htmlspecialchars($image->_title)?>" title="<?php print htmlspecialchars($image->_title)?>" />

и вот так ничего не передает
$document->setBuffer( '$image->image_id', 'component', 'параметр' );
возможно, я что-то не так понял

и цена тоже получается на ходу формируется
<?php print formatprice($this->product->getPriceCalculate())?><?php print $this->product->_tmp_var_price_ext;?>
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
В компонент код
Код: php-brief
<?php
$document =  JFactory::getDocument();
$document->setBuffer( json_encode( $image), 'component', 'image' );
?>
В модуль
Код: php-brief
<?php
$document =  JFactory::getDocument();
$image = json_decode($document->getBuffer('component', 'image'));
$image_product_path = "Введите путь к папке картинок он постоянный";
?>
<img id = "main_image_<?php print $image->image_id?>" src = "<?php print $image_product_path;?>/<?php print $image->image_name;?>" alt="<?php print htmlspecialchars($image->_title)?>" title="<?php print htmlspecialchars($image->_title)?>" />
*

Dron79

  • Захожу иногда
  • 321
  • 37 / 0
  • Век живи - век учись!
Еще один вариант передачи данных из компонента в модуль проверено в Joomla 1.5 и 2.5. yes!
Публикуется на форуме ВПЕРВЫЕ!
Ни в одной документации о Joomla вы не найдете такого решения.  yes!
В компоненте пишем:
Код: php-brief
<?php
$document = & JFactory::getDocument();
$document->setBuffer( 'Znachenie', 'component', 'parametr' );
?>
В модуле считываем:
Код: php-brief
<?php
echo JFactory::getDocument()->getBuffer('component', 'parametr');
//return Znachenie
?>
Благодарю за новую инфу.
кодинг на php.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Дополню решением с JRequest::getVar и JRequest::setVar
Код: php-brief
JRequest::setVar('name', 'Myname', 'post');//задаем
echo JRequest::getVar('name', '', 'post'); //считываем
просто и элементарно
API по свежее JInput
Код: php-brief
JFactory::getApplication()->input->set('parametr', 'znachenie');//задаем
echo JFactory::getApplication()->input->get('parametr'); //считываем
         
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Дополню решением с помощью API (setUserState, getUserState)
Код: php-brief
JFactory::getApplication()->setUserState('parametr', 'znachenie'); //задаем
echo JFactory::getApplication()->getUserState('parametr'); //считываем
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
Дополню решением с помощью API (setUserState, getUserState)
Код: php-brief
JFactory::getApplication()->setUserState('parametr', 'znachenie'); //задаем
echo JFactory::getApplication()->getUserState('parametr'); //считываем

Супер!
Poznakomlus, спасибо))

я как раз по другому поводу искал решение подобное решение
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Дополню решением с помощью API (setUserState, getUserState)
Код: php-brief
JFactory::getApplication()->setUserState('parametr', 'znachenie'); //задаем
echo JFactory::getApplication()->getUserState('parametr'); //считываем
Так она на базе сессий и работает же. Зачем городить огород, если можно с сессией работать?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль mod_custom: где сохраняется добавляемый код?

Автор r0m4n

Ответов: 8
Просмотров: 2685
Последний ответ 20.12.2023, 09:52:48
от kit2m2
Формирование ссылок для компонента Joomla Tags

Автор stepan39

Ответов: 6
Просмотров: 3595
Последний ответ 05.02.2023, 15:22:13
от tweenpix
URL компонента меток

Автор tweenpix

Ответов: 0
Просмотров: 1986
Последний ответ 04.02.2023, 11:08:54
от tweenpix
Не могу установить языковой пакет для компонента Joomla Events Manager ((jem))

Автор Ded Magomed

Ответов: 0
Просмотров: 1644
Последний ответ 24.05.2022, 15:06:38
от Ded Magomed
Передать значение из шаблона в модель

Автор ruyurik

Ответов: 4
Просмотров: 1073
Последний ответ 02.04.2020, 04:47:44
от ruyurik