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

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
Что такое каноническая страница? Зачем нужно указывать rel="canonical"?
Спойлер
[свернуть]

Сегодня в первый раз открыл для себя Joomla 3.х (сказывается отсутствие времени). Подтолкнула меня к этому Taatshi.

Вобщем поставил себе тестовую версию тройки и понял, что незря отношусь с недоверием к разного рода плагинам.
В этой версии Joomla добавлена генерация ссылки canonical при помощи системного sef-плагина.
Похвальное начинание НО, результат плачевный. Во всех тестовых материалах, где я нашел ссылку canonical, была прописана ссылка на раздел материала, а не на сам материал.
В плане поисковой оптимизации это тихий ужас. Поисковики просто выкинут страницы материалов и оставят в индексе только страницы разделов. (Если конечно я в этом что-то понимаю)

Насколько я знаю, эта ошибка уже упомянута в багтрекере разработчиков, и однажды будет исправлена.
А пока суд да дело, я решил использовать проверенный на предыдущих версиях способ генерации canonical в шаблонах материалов, и поделиться с теми, кому это пригодится.
Тем более, что шаблоны мало зависят от обновлений с последующими сюрпризами.

Приступим.

Ссылка Canonical для главной страницы.
Внимание! Этот шаг не обязателен. Его можно использовать если на главной странице используется стандартный компонент материалов com_content.
Открываем файл templates/МОЙ ШАБЛОН/index.php
Спойлер
[свернуть]

Ссылка Canonical для страниц компонента материалов (com_content)
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/archive/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/article/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/categories/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/blog.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/default.php
Спойлер
[свернуть]

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/featured/default.php
Спойлер
[свернуть]

//------------------------------------------------------------------------------------------------------------------------------------------//

Для тех у кого нет файлов-шаблонов в templates/МОЙ ШАБЛОН/html/com_content/ и они не знают где их взять
Спойлер
[свернуть]

Не забываем!
1. Следить за обновлениями поста. Возможны правки!
2. Нашли ошибку? Пишите сюда, попробуем разобраться.
3. При обновлении заменяем весь код находящийся между строками
Код
// ------------ Start Canonical-Mod
и
Код
// ------------ End Canonical-Mod
« Последнее редактирование: 25.10.2012, 22:09:16 от AmdAveO »
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Артур, ты забыл написать, как избавляться от родного rel canonical

У новичков могут возникать вопросы по этому поводу.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
Лена, родной canonical сбрасывается автоматом.
Эти строки в коде
Код
// Удаляем ссылку каноникал добавленную системным sef-плагином
foreach (JFactory::getDocument()->_links as $key=>$link) {
if (($link['relation'] == 'canonical')) {
unset(JFactory::getDocument()->_links[$key]);
break;
}
}

Цитата: frisian
1. как бы ничего что даже разработчики не рекомендуют сейчас использовать Joomla 3 на боевых проэктах?
Да как бы и ничего. Только зачем тогда в народ выкладывать, да еще релизом называть?
Или ты тут в защитников решил поиграть? Только я не прокурор. ::)

Цитата: frisian
2. Почему не написать свой плагин? зачем столько лишних телодвижений?
За чем дело стало? Пиши свой плагин и не будет лишних телодвижений. ;)
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
AmdAveO Ссылка Canonical для главной страницы
JSite::getMenu()->getActive() == JSite::getMenu()->getDefault()
Правильно так:
JSite::getMenu()->getActive()->id == JSite::getMenu()->getDefault()->id
и опять же это частный случай. если ссылка будет формироваться с использованием  query строки то и контент может быть разный. И не обязательно материалом. Мы же данному контенту, может быть совсем разному и не связанному задаем canonical
Далее $docstart = JRequest::getInt('start',0);
А если не start. Компоненты разные бывают и могут использовать разную пагинацию. Вместо JRequest следует мне кажется использовать JInput
$doc->addHeadLink($link, 'canonical'); И плагин тогда стоит отключать родной.
Без каких либо обид. Но плагин здесь уместнее. А делать смысла нет. Разработчики надеюсь сами исправят
*

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
frisian, тут как бы два варианта развития событий
1. Тебе оно надо и ты берешь.
2. Тебе оно НЕ надо и ты НЕ берешь.
Как я вижу с выбором у тебя проблем не возникло. Так в чем еще проблемы, у тебя что-то отобрали?

Poznakomlus
Конструктивно.
Можно с id, можно и без. Хотя согласен, с id будет более правильно.
В JInput не вижу особой выгоды. А она есть?
Да, по поводу пагинатора на главной тоже думал, но поскольку речь идет о родном компоненте материалов Joomla, решил его оставить.
Сделаю пометку о других компонентах.

Еще раз о плагине.
1. Он уже есть. Его исправление это вопрос времени.
2. Плагины зависят от приоритета их исполнения. Сдается мне, что это и есть причина косяка в родном плагине. Хотя, могу и ошибаться.
3. Не известно как поведет себя такой плагин с другими компонентами. Не появится ли например в ZOO, две разных ссылки canonical?

Вобщем, у кого есть желание и время, делайте плагин, или дорабатывайте уже имеющийся. Я всегда за!
Только пустословием заниматься не стоит.
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Большое спасибо! А то у меня пять страниц из индекса выпало, и хоть Я их добавил в вебмастере снова, вовсе убрав rel="canonical" из плагина, восстанавливаются они уже неделю. Такое ощущение, что Яндекс вообще в последнее время работать не хочет.
frisian, ну так напишите плагин, чего хейтера включаете то? Или скажите как родной исправить. Человек в любом случае старался, так что по моему тут не оскорблять надо, а скорее (если это нужно) поправить.
*

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
Из всего написанного тобой, я пока вижу толк только в этом
Цитата: frisian
ну кроме того что скоро JRequest вообще будет удален наверно выгоды нет..
За что тебе огромное спасибо!
Каюсь, я не живу в багтрекере Joomla, и не слежу за их новостями. Как-то вот так сложилось.

Есть еще толковые предложения?
« Последнее редактирование: 24.10.2012, 22:35:13 от ELLE »
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
frisian не горячись. Веришь я здесь усмотрел применение твоей строчки кода
if(JMenuSite::getInstance('site')->getActive()->home) здесь наверно ей самое место для первого случая
*

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
Poznakomlus
Уверен, что все пользователи используют "home" в качестве алиаса для главной страницы? Я встречал и другие.
Или тут "JMenuSite::getInstance('site')->getActive()->home" не спрашивается алиас?
Может всетаки тут подсмотреть?
« Последнее редактирование: 25.10.2012, 13:25:28 от AmdAveO »
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
Цитата: Poznakomlus
AmdAveO смотрите FAQ форума Joomla 2.5 - проверка на главную страницу
Уже смотрел. Правда не увидел пока причины того, почему это if ($menu->getActive()!= $menu->getDefault()) не работает.
Я сейчас говорю не о том, что лучше, а о том, в каких случаях оно не работает. Кручу это условие на локале и проблемы пока не встретил.

Цитата: Poznakomlus
AmdAveO смотрите FAQ форума Joomla 2.5 - проверка на главную страницу
кто сказал, что это алиас <?php echo '<pre>'.var_dump(JMenuSite::getInstance('site')->getActive()).'</pre>'; ?>
Никто не сказал. Я спросил.

Цитата: Poznakomlus
техническая информация которую вы привели не актуальная
Это просто утверждение или факт?

Цитата: Poznakomlus
ну и вы должны понимать, что вам не главная нужна а все страницы которые "цепляются" к активному меню главной
Стал бы я спрашивать про алиас не понимая этого?

Не имеет абсолютно никакого смысла. Хозяин сайта сам должен решать какой странице добавить тег (на подобии description)
Абсолютно не согласен с этим.
Я знаю с десяток авторов которых абсолютно не волнует техническая сторона работы.
Некоторых не заставишь и description прописать, а не то чтобы еще делать выбор ссылки canonical.
Тут просто нужно сделать возможным выбор подключения/отключения canonical в плагине.
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Наверно стоит объяснить почему порнография.
1. С каких таких побуждений мы привязываем ссылки к меню
2. Может стоит посмотреть в меню как ссылки формируются. Найди 3 отличия
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/categories/default.php
...
JFactory::getDocument()->addHeadLink('http://' . $_SERVER['SERVER_NAME'] . JRoute::_(ContentHelperRoute::getCategoryRoute($this->parent->id)). $docpagenr, 'canonical', 'rel', '');
...
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/blog.php
...
JFactory::getDocument()->addHeadLink('http://' . $_SERVER['SERVER_NAME'] . JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id)). $docpagenr, 'canonical', 'rel', '');
...
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/default.php
...
JFactory::getDocument()->addHeadLink('http://' . $_SERVER['SERVER_NAME'] . JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id)). $docpagenr, 'canonical', 'rel', '');
*

AmdAveO

  • Захожу иногда
  • 165
  • 43 / 2
Poznakomlus
Это объяснение или просто вопросы без вопросительных знаков?
Честно говоря, не понятна их цель.
Просить не буду! Сами дадите, когда совесть замучает. R336340187313
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
это говорит о том, что вы привели решение совсем не понимая, что и о чем пишите
разберитесь для начала как формируются ссылки в Joomla потом выдавайте их за решения
Ссылка на документ может формироваться по разному.
Документ привязан к меню(ваш вариант). Категория/документ(ContentHelperRoute::getArticleRoute($id, $catid, $this->language);)? документ ('index.php?option=com_content&view=article&id='.$id)
Так вот, два последних варианта наиболее больше соответствуют каноническим ссылкам/ Но это никак не вариант сменю. Про категории уже написал выше
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Poznakomlus, если у Вас есть лучший вариант - выложите его во всеобщее пользование. А так в Ваших постах я не вижу особого смысла. Мы все делаем как умеем - кто-то лучше, кто-то хуже... Но сидеть и критиковать уже готовую работу не имея в наличии альтернативного варианта - как-то не особо красиво получается.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Канонические ссылки для Joomla 3

Плагин специально повесил на событие onBeforeCompileHead, чтобы не отслеживать порядок размещения по отношению к системному. Он обрабатывает onAfterRoute() (системный). Присоединяйся, ведь плагин нужен будет всем. Конструктивная критика всегда приветствуется
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Помогите с БАГом в панели администратора Joomla 3

Автор akteon25

Ответов: 2
Просмотров: 1082
Последний ответ 26.02.2025, 16:41:56
от akteon25
Версии РНР и Joomla 3

Автор Ebelous

Ответов: 8
Просмотров: 2853
Последний ответ 27.01.2025, 20:38:45
от pavelrer
Trouble Upgrading from Joomla 3.8 to 3.9

Автор melissa00

Ответов: 0
Просмотров: 1689
Последний ответ 26.07.2024, 10:03:51
от melissa00
SP polls в Joomla 3.8.2

Автор wawont

Ответов: 2
Просмотров: 3358
Последний ответ 22.02.2024, 21:03:15
от Zegeberg
Исправление уязвимости в Joomla 3.10.12

Автор Sulpher

Ответов: 8
Просмотров: 3041
Последний ответ 12.01.2024, 22:15:52
от stepan39