Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+). При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php     // Это файл в /layouts/components/com_component/your_layout.php?><input type="hidden" name="task" value=""><input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"><input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"><?php echo HTMLHelper::_('form.token'); ?>
Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

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

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Прошу прощения за повтор, но так больше шансов что увидят и помогут

Joomla 3.4.5
Как убрать ID в ссылках на категории и материалы?
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Если включить галочку "Удалить ID материала в ссылке?" и выбрать "Да" то при открытии новости выскакивает такая ошибка
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Скажите мне где вы нашли "Удалить ID материала в ссылке?" В стандартном компоненте такого нет! Какой у вас комопнент?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Тьфу ты. Ну на заборе много чего написано, но нам это малоинтересно.
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Как тогда сделать правильно? как их все-таки убрать?
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.


не работает
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
а если просто так: $advanced = 1;
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Ошибка про которую писал выше появляется
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.

Этот метод работал на 1.7, уже на какой-то 2.5 его поломали, а уж в 3 - тем более.

ЗЫ. Сегодня выходит бетка 3.5, там вроде новый роутер обещали.
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
У вас похоже измененный файл роутера, тот что я указывал.
Возьмите дистрибутив Joomla и оттуда залейте себе на сервак рабочий файл роутера.
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Этот метод работал на 1.7, уже на какой-то 2.5 его поломали, а уж в 3 - тем более.

ЗЫ. Сегодня выходит бетка 3.5, там вроде новый роутер обещали.

а где найти бетку 3.5?
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Воланд, да что ты, а я дурак юзаю этот метод и он блин, работает!
Предатор, у вас чутка испорченный роутер. Я повторил вашу ошибку:
если в методе public function parse(&$segments) класса class ContentRouter extends JComponentRouterBase
return $vars; будет возвращать НЕ МАССИВ, то:
Warning: array_merge(): Argument #2 is not an array in /var/www/..../libraries/cms/router/router.php on line 350
Fatal error: Unsupported operand types in /var/www/...../libraries/cms/router/router.php on line 234

так что или ищите ошибку в этом методе или возьмите рабочий файл роутера с дистриба.
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
взял рабочий роутер и в него внес изменения. реакции 0.
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Кеш отключите и почистите.
У вас больше никакие плагины-компоненты не юзаются для сеф-ссылок?
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Aimy Sitemap это есть
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
это не то...
я чет даже не знаю куда рыть...
а это точно косячит com_content?
 и еще, попробуйте поиграться параметрами сео в общих настройках Joomla.
*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
А можете мне помочь, посмотреть в чем может быть проблема.
*

GT-SEO

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
  • мой шибзик
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.


Спасибо всё работает ))) на J3.4.5

 *DRINK* *DRINK* *DRINK* *DRINK*
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.


Сработало на 3.5.1 Спасибо!
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
зачем это менять в файле не совсем понятно, это параметр и он записывается в базу
достаточно добавить его в XML записать 1 раз в базу и все, потом ничего слетать не будет при обновлении
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
зачем это менять в файле не совсем понятно, это параметр и он записывается в базу
достаточно добавить его в XML записать 1 раз в базу и все, потом ничего слетать не будет при обновлении

Ага! Ибо тут мы имеем обновление, потом какое-либо изменение в параметрах компонента (потребовалось) и опппа - ссылочки стали старыми с ИД материала.
Варианта всего два:
1. добавить в XML конфига и на хмл-файл выставить права только чтение
2. изменить файл router.php и на него выставить только чтение.
Что-то супер-пупер глобальное разработчики родить не могут...
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Ибо тут мы имеем обновление, потом какое-либо изменение в параметрах компонента (потребовалось) и опппа - ссылочки стали старыми с ИД материала.
как правило это все настраивается изначально, а вот обновление с той частотой как это происходит не сравнится
так что тут кому как)
сдается сайт и там  заказчик в какие-то настройки врядли полезит, а вот на жмякнуть на кнопку обновить (которая везде красуется) он скорее всего нажмет)

а так по сути не зря же они эту настройку никому не открывают, видимо есть на это причины.
как минимум я вижу одну из них, на каждую ссылку у вас будет формироваться лишний запрос к БД, т.е. если на главной грубо говоря 50 ссылок на материалы, у вас будет 50 лишних запросов
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Плохо ты матчасть знаешь )
При создании ссылки обращение к таблице контента идет в том случае, если в запросе ID просто число,  а не пара ID:ALIAS.
Да и надеяться, что заказчик не полезет тоже не стоит. И еще, если уж начинать бояться лишних запросов к БД, то сайт лучше вообще не стравить )
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Плохо ты матчасть знаешь )
да я ее вообще не знаю)
При создании ссылки обращение к таблице контента идет в том случае, если в запросе ID просто число,  а не пара ID:ALIAS.
вот кусок кода из роутера контента, для построения ссылки
Код
// Make sure we have the id and the alias
if (strpos($query['id'], ':') === false)
{
$db = JFactory::getDbo();
$dbQuery = $db->getQuery(true)
->select('alias')
->from('#__content')
->where('id=' . (int) $query['id']);
$db->setQuery($dbQuery);
$alias = $db->loadResult();
$query['id'] = $query['id'] . ':' . $alias;
}

И еще, если уж начинать бояться лишних запросов к БД, то сайт лучше вообще не стравить )
боятся лишних запросов стоит всегда, так как это на прямую влияет на производительность
конечно можно взять мощный сервер платить за него в несколько раз больше и не париться, или хостится на шареде, это про обычный сайт)

*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Именно кусок, который без основных условий...
Кароче, нефиг народ пугать производительностью... Флудить начинаешь!
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Именно кусок, который без основных условий...
Кароче, нефиг народ пугать производительностью... Флудить начинаешь!
каких условий?)
вот условие
Цитировать
               // Make sure we have the id and the alias
               if (strpos($query['id'], ':') === false)
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Смокер, иди дальше кури бамбук!
Данное условие сработает только если в ссылке будет id=ID материала, а обычно id=ID:ALIAS. поэтому данный запрос не будет генериться 50 раз, если на странице выводится 50 материалов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 3 не пускает в админку (просто перезагружается страница) (гуглил, нашёл решение, не помогло)

Автор lifelover2b

Ответов: 11
Просмотров: 3895
Последний ответ 05.06.2025, 04:48:29
от andrey222
По поводу сессий Joomla 3

Автор azm1n

Ответов: 0
Просмотров: 646
Последний ответ 25.05.2025, 09:26:17
от azm1n
Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 811
Последний ответ 09.05.2025, 12:39:18
от azm1n
Вывести поля профиля Joomla

Автор romagromov

Ответов: 11
Просмотров: 1877
Последний ответ 28.04.2025, 10:25:44
от sivers
Максимальная версия PHP для Joomla 3

Автор Dram

Ответов: 8
Просмотров: 2270
Последний ответ 27.03.2025, 10:40:29
от wishlight