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

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
Собственно, самому нужно было. за пример взял топик с форума JoomGallery. Но там, говорили что хак не рабочий.. Но этот работает, проверено.

Хак работает для версии  JoomGallery 1.0 и 1.5  для Version 1.5.6.3 - смотрите ниже.
Для начала, нам необходимо добавить поля отключения\включения блокировки по IP и Cookies в админку JoomGallery.
Находим файл   /administrator/components/com_joomgallery/includes/html/ admin.configuration.html.php
В нем, где то после строки 248 добавляем следующий код.

Код
HTML_Joom_AdminConfig::Joom_ShowConfigRow('jg_checkcookievotes', 'yesno', 'JGA_ALLOW_RATING_COOKIE_CHECK', $config->jg_checkcookievotes);
HTML_Joom_AdminConfig::Joom_ShowConfigRow('jg_checkipvotes', 'yesno', 'JGA_ALLOW_RATING_IPADDR_CHECK', $config->jg_checkipvotes);

Он выведет нам переключатель да\нет для выбора блокировки голосования по IP или  Cookies.
Дальше, нам необходимо в нашей базе  MySQL  добавить два поля, где будут хранится наши настройки.
Для это необходимо выполнить следующий запрос  MySQL  к базе где установлена JoomGallery.

Код
ALTER TABLE  `jos_joomgallery_config`  ADD `jg_checkipvotes` INT(1) NOT NULL AFTER `jg_onlyreguservotes`,  ADD `jg_checkcookievotes` INT(1) NOT NULL AFTER `jg_checkipvotes`
Как делается запрос

После этого, можем по желанию добавить в нашу локализацию JoomGallery названия полей в админке. Это не обязательно, но для полноты картины можно.
Открываем файл administrator/ language/uk-UA/ uk-UA.com_joomgallery.ini
Название файла локализации и папки, зависит от установленной локализации у вас.
В нем где то добавляем строки:

Код
JGA_ALLOW_RATING_COOKIE_CHECK=Блокування по COOKIE
JGA_ALLOW_RATING_COOKIE_CHECK_LONG=Задіяти блокування багаторазового голосування за технологією COOKIE
JGA_ALLOW_RATING_IPADDR_CHECK=Блокування по IP
JGA_ALLOW_RATING_IPADDR_CHECK_LONG=Задіяти блокування багаторазового голосування за технологією IP

Теперь нам необходимо научить наш класс работы с базой, обрабатывать наши новодобавленные поля .
Открываем файл /administrator/components/com_joomgallery/includes/ admin.configuration.php и после строки class Joom_AdminConfiguration {
добавляем

Код
var $jg_checkipvotes;
var $jg_checkcookievotes;

После строки $this->jg_impath                       = Joom_mosGetParam('jg_impath', '','post');
Добавляем

Код
if (isset($_POST['jg_checkipvotes']))
$this->jg_checkipvotes             = JRequest::getInt('jg_checkipvotes', 1,'post');
if (isset($_POST['jg_checkcookievotes']))
$this->jg_checkcookievotes             = JRequest::getInt('jg_checkcookievotes', 1,'post');

На этом, хак админки закончен. В настройках JoomGallery – Права пользователей – Оценки : появилось два новых параметра.
Теперь, нам нужно добавить условие, которое устанавливать cookies или проверять IP.  Но посоветую вам использовать все таки проверку по куки. Так как на одном IP может быть целая локальная сеть.
В конце заменить файл components/com_joomgallery/includes/ joom.votepic.php на этот - файл
Теперь можете проверить. Как результат при активной блокировке по cookies, страница с фото будет перегружаться, но рейтинг в базе не обновится. Конечно, можно добавить еще вывод алерта, что вы уже проголосовали один раз за данное изображение, но это уже по желанию.

Хак для версии JoomlaGallery  Version 1.5.6.3 (блокировка по IP)
Добавление поля "Блокировка по IP" в дминку JG
Кто не хочет делать пошагово - заливаем в корень Joomla содержимое папки patch_JG (в аттаче)
и делаем запрос БД (см. ниже)
1. Файл  /administrator/components/com_joomgallery/helpers/config.php
После строки
Код
var $jg_showauthor;
Добавлялем
Код
 var $jg_checkipvotes;
2. Файл /administrator/components/com_joomgallery/tables/joomgalleryconfig.php
После строки
Код
var $jg_showauthor;
Добавлялем
Код
 var $jg_checkipvotes;
3. Файл /administrator/components/com_joomgallery/views/config/tmpl/default.php
После
Цитировать
JHTML::_('joomconfig.row', 'jg_showauthor', 'yesno', 'JGA_CONFIG_CV_GS_AUTHOR', $this->_config->jg_showauthor);
Добавляем
Цитировать
JHTML::_('joomconfig.row', 'jg_checkipvotes', 'yesno', 'JGA_CONFIG_CV_GS_CHECKIPVOTES', $this->_config->jg_checkipvotes);
4. Делаем следующий запрос БД MySQL
Код
ALTER TABLE  `jos_joomgallery_config`  ADD `jg_checkipvotes` INT(1) NOT NULL AFTER `jg_onlyreguservotes`;
Как делается запрос
5. Добавление локализации наших поля в админке
Файл /administrator/language/en-GB/en-GB.com_joomgallery.ini
Цитировать
JGA_CONFIG_CV_GS_AUTHOR=Show Author
Добавляем
Цитировать
J
GA_CONFIG_CV_GS_CHECKIPVOTES=Block vote  IP
JGA_CONFIG_CV_GS_CHECKIPVOTES_LONG=Block a second vote on  IP
Теперь в админке JoomGallery в Configuration Manager-Category View Block vote IP
И наконец меняем файл
/components/com_joomgallery/models/vote.php



[вложение удалено Администратором]
« Последнее редактирование: 20.05.2011, 17:45:04 от Beer »
*

Beer

  • Moderator
  • 1103
  • 43 / 1
  • БИРУ - БИР!
 Еще бы вывод проголосовавших и поставивших оценки за фото вывести ...))
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
Куда вывести? что то я не понял.
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
http://www.art-deli.info/file/
Нажимаете на файл joom.votepic.php и "Сохранить как"... 


*

deodren

  • Осваиваюсь на форуме
  • 29
  • 1 / 0
А для версии 1.5.0.5  это решение тоже актуально?
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
А для версии 1.5.0.5  это решение тоже актуально?
Не знаю... пока не пробовал)
*

deodren

  • Осваиваюсь на форуме
  • 29
  • 1 / 0
Проблема с файлом. В нем только строка "Direct Access to this location is not allowed."
*

deodren

  • Осваиваюсь на форуме
  • 29
  • 1 / 0
Не знаю... пока не пробовал)
А я попробовал. Все отлично работает! Спасибо огромное ART-DELI!
*

taravasya

  • Осваиваюсь на форуме
  • 26
  • 1 / 0
Друзья, нашёл намного более простое и лаконичное решение
http://www.forum.en.joomgallery.net/index.php?topic=2782.msg11211#msg11211
Проблема в том, что такой метод работал на момент 9-го папреля этого года(то-есть скорее всего с версией 1.5.4) На новой версии хак, нужно немножко видоизменить. Я это сделал, и описал на форуме JG(см. ссылку выше). Но изменённый мною вариант работает, некорректно. Вместо того что бы запретить голосовать за одну и туже фотографию несколько раз, он не даёт голосовать ни за какую фотографию.... То-есть, если я зайду с чистыми куками, то я могу проголосовать за любую фотографию, но после этого я не смогу проголосовать ни за эту, ни за одну другую фотографию....
Есстественно если кто-то может подсказать как сделать всё корректно на новой версии, буду очень благодарен.
« Последнее редактирование: 22.09.2010, 17:52:22 от taravasya »
*

vvitaliy

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Есть у кого-нить joom.votepic.php? Выложите пожалуйста, а то по ссылке в первом посте "Direct Access to this location is not allowed."
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
Есть у кого-нить joom.votepic.php? Выложите пожалуйста, а то по ссылке в первом посте "Direct Access to this location is not allowed."
Нужно правой копкой мыши "Сохранить как"
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
Не качается. Пробовал по рецепту с 3 браузеров, результат - в коде кроме "Direct Access to this location is not allowed." ничего нет.
А что мешает закатать файлик в zip и выложить здесь в посте или там у себя? Не понимаю, к чему задуман весь этот геморрой с закачкой файла? Если уж решил поделиться с людьми - делись нормально, что смеяться то над людьми?
Или хотя бы выложи код который поменял в joom.votepic.php, чтобы люди могли сами самостоятельно подправить для себя.
« Последнее редактирование: 23.09.2010, 05:35:29 от jem777 »
*

vvitaliy

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Нужно правой копкой мыши "Сохранить как"
Ну я думаю не окажусь самым оригинальным, если скажу, что ни как :) не получается. Выложи архивом как какой-нить файлообменник, или просто текст запости целиком данного файла.
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
Не качается. Пробовал по рецепту с 3 браузеров, результат - в коде кроме "Direct Access to this location is not allowed." ничего нет.
А что мешает закатать файлик в zip и выложить здесь в посте или там у себя? Не понимаю, к чему задуман весь этот геморрой с закачкой файла? Если уж решил поделиться с людьми - делись нормально, что смеяться то над людьми?
Или хотя бы выложи код который поменял в joom.votepic.php, чтобы люди могли сами самостоятельно подправить для себя.
1. Не знаю в каких вы это браузерах смотрели, у меня все скатывается нормально.
2. Здесь нельзя прикрепить файлы, нету места.
3.  По некоторым причинам у меня не было доступа к своему хосту, не мог выложить архив.

И я не над кем не смеюсь, просто не думал, что для людей желающих делать сайты, будет проблема, сохранить файл по ссылке.

Линк обновил в первом посте.
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
1. Opera, Firefox, IE6-8
2. Совсем про это забыл. Но иногда получается.
3. Файлообменников много.

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

vvitaliy

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
1. Не знаю в каких вы это браузерах смотрели, у меня все скатывается нормально.
2. Здесь нельзя прикрепить файлы, нету места.
3.  По некоторым причинам у меня не было доступа к своему хосту, не мог выложить архив.

И я не над кем не смеюсь, просто не думал, что для людей желающих делать сайты, будет проблема, сохранить файл по ссылке.

Линк обновил в первом посте.


Спасибо, теперь все отлично. Буду пробовать решение

п.с.: реально перепробывал и через прокси и без, и мозилой, ие, хромом, не качалось, поэтому и просил выложить зажатым
*

Toliamba

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Есть решение для версии 1.5.5.2?
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
Есть решение для версии 1.5.5.2?

Для 1.5.0.5 говорят работает.. Лично не пробовал
*

Toliamba

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
1.5.0.5 работает... но в следующих версиях совершенно изменена структура компонента
*

cry_wolf

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
а что то подобное если кто то найдёт на версию 1.5.6.2 киньте на маил ol12000@inbox.lv
*

clubbers

  • Захожу иногда
  • 195
  • 10 / 1
  • Ставим + , если помог)
ну а теперь помогите людям, в новых версиях структура компонента инная, папки инклюдс нету и воутпик.пхп тоже)  поделитесь хаком под новые версии
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
ну а теперь помогите людям, в новых версиях структура компонента инная, папки инклюдс нету и воутпик.пхп тоже)  поделитесь хаком под новые версии
я хак не делал под новые версии... Даже странно что это все таки осталось не предусмотренным.
Могу попробовать. Только если дадите ФТП доступ к своему сайт и к БД. С установленным компонентом. Имхо у меня JG сейчас негде не используется.
*

LOMANI

  • Новичок
  • 9
  • 0 / 0
решение найдено для 1.5.6.3 ?
« Последнее редактирование: 23.02.2011, 17:55:46 от LOMANI »
*

ART-DELI

  • Давно я тут
  • 801
  • 75 / 9
  • Не успеешь ты – сделают другие.
Работаю над этим. Сегодня уже подключил поля управления в админку JG. Завтра думаю все будет готово.
« Последнее редактирование: 23.02.2011, 21:53:58 от ART-DELI »
*

Beer

  • Moderator
  • 1103
  • 43 / 1
  • БИРУ - БИР!
 На тебя смотрит вся страна! (те, кто повторно голосует, и те, кто с этим борется - 50/50)
*

LOMANI

  • Новичок
  • 9
  • 0 / 0
Работаю над этим. Сегодня уже подключил поля управления в админку JG. Завтра думаю все будет готово.
;l ждёмс ждёмс =))
*

Beer

  • Moderator
  • 1103
  • 43 / 1
  • БИРУ - БИР!
 По опыту общения на разных фотохостингах делается стандартно так:
 1. Запрет голосований незарегистрированным (т.к. любят они либо двойки ставить, либо пятерки неограниченно)
 2. Зарегистрированный может голосовать один раз, т.к. его голос записан.
 3. С фронта все могут посмотреть список - кто и как голосовал.
*

LOMANI

  • Новичок
  • 9
  • 0 / 0
По опыту общения на разных фотохостингах делается стандартно так:
 1. Запрет голосований незарегистрированным (т.к. любят они либо двойки ставить, либо пятерки неограниченно)
 2. Зарегистрированный может голосовать один раз, т.к. его голос записан.
 3. С фронта все могут посмотреть список - кто и как голосовал.
не важен принцип блокировки и за что
Важно само решение
*

LOMANI

  • Новичок
  • 9
  • 0 / 0
а принцип блокировки, достаточно по куки и IP .... решит все проблему =)) исключение проблемы подсети, скажем так - "ну не повезло" =)
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
... исключение проблемы подсети, скажем так - "ну не повезло" =)
Более комплексное решение просто нужно - например помимо IP анализировать ещё userAgent - совпадения конечно возможны, но всё равно уже не вся подсеть будет забанена

Посмотрел, кстати у Datso что пишется в поле vip:

Код
77.74.13.17ip-13-17.byte-city.ruOpera/9.80 (Windows NT 6.0; U; ru) Presto/2.2.15 Version/10.10
« Последнее редактирование: 24.02.2011, 14:18:20 от SDKiller »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с дублем страниц в JoomGallery 3.4

Автор qvagin

Ответов: 3
Просмотров: 3406
Последний ответ 23.01.2023, 13:30:08
от e2
Стили раскладки фото в JoomGallery (masonry и mosaic)

Автор marbert

Ответов: 4
Просмотров: 2498
Последний ответ 22.11.2022, 06:28:20
от marbert
JoomGallery 3.6.0 если отсутствует поле Название при редактировании фотографии

Автор Beer

Ответов: 0
Просмотров: 2530
Последний ответ 09.09.2022, 20:07:49
от Beer
После обновления до JoomGallery 3.6 некорректно работает водяной знак

Автор Maffo

Ответов: 3
Просмотров: 2389
Последний ответ 23.08.2022, 06:21:58
от marksetter
j3.8.13 + JoomGallery 3.3.4 = RuntimeException: Недопустимое поле: cid

Автор Sergeych

Ответов: 7
Просмотров: 4750
Последний ответ 22.03.2021, 17:24:59
от Gammy2005