Новости Joomla

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

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

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Всем привет!
В хлебных крошках по-умолчанию выводится название пункта меню. Как в модуле получить Заголовок страницы (page_heading)? Как для последнего пункта вывести я понимаю, а как для промежуточных (которые между главной и последним пунктом)?
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Как для последнего пункта вывести я понимаю, а как для промежуточных (которые между главной и последним пунктом)?
Удалить 2 (или более) последних и потом добавить в том виде, как надо:

Код
    $app = JFactory::getApplication();
    $cmsPathway = $app->getPathway();
    $cmsPathwayItems = $cmsPathway->getPathway();
    $cmsPathwayLastItem = array_pop($cmsPathwayItems);
    $cmsPathwayPreLastItem = array_pop($cmsPathwayItems);
    $cmsPathway->setPathway($cmsPathwayItems);
    $cmsPathway->addItem('Другое имя предпоследнего пункта', $cmsPathwayPreLastItem->link);
    $cmsPathway->addItem($cmsPathwayLastItem->name, $cmsPathwayLastItem->link);
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Удалить 2 (или более) последних и потом добавить в том виде, как надо:

Код
    $app = JFactory::getApplication();
    $cmsPathway = $app->getPathway();
    $cmsPathwayItems = $cmsPathway->getPathway();
    $cmsPathwayLastItem = array_pop($cmsPathwayItems);
    $cmsPathwayPreLastItem = array_pop($cmsPathwayItems);
    $cmsPathway->setPathway($cmsPathwayItems);
    $cmsPathway->addItem('Другое имя предпоследнего пункта', $cmsPathwayPreLastItem->link);
    $cmsPathway->addItem($cmsPathwayLastItem->name, $cmsPathwayLastItem->link);
А если не известно сколько промежуточных? И имя нужно получить из поля Заголовок старницы пункта меню - это я тоже не пойму как сделать для промежуточных пунктов.
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
А если не известно сколько промежуточных?
Код
foreach($cmsPathwayItems as $cmsPathwayItem){ ... }

И имя нужно получить из поля Заголовок старницы пункта меню
Вот тут не знаю как вам будет менее затратно по ресурсам. Можно раскусывать ссылку ($cmsPathwayItem->link) брать оттуда ИД меню, считывать пункт и вытягивать название из его параметров... но как-то геморно (особенно, если ссылка уже отсефилась). Можно считать все пункты меню, построить массив такого типа: array(заголовок_пункта => заголовок_страницы) и потом с его помощью подставлять значение в крошки. Либо целиком очищать хлебные крошки и строить заново теми пунктами-шагами, которые вам нужны.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Спасибо за ответ, но это как-то очень сложно. Я думал есть способ проще, честно говоря. Неверно стоит отказаться от затеи.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести поля профиля Joomla

Автор romagromov

Ответов: 11
Просмотров: 1818
Последний ответ 28.04.2025, 10:25:44
от sivers
Вывести модуль в модуле

Автор jimka

Ответов: 2
Просмотров: 731
Последний ответ 18.04.2025, 15:39:36
от fbr
Перенести описание категории вниз страницы

Автор jimka

Ответов: 1
Просмотров: 942
Последний ответ 18.07.2024, 08:02:46
от Vastriet
Шаблон для данной страницы недоступен. сообщите об этом Администратору сайта

Автор 62411

Ответов: 2
Просмотров: 1183
Последний ответ 30.03.2024, 13:15:16
от web1
Как установить header Cache-Control только для одной страницы по URL?

Автор Slava77

Ответов: 0
Просмотров: 837
Последний ответ 23.03.2024, 00:16:36
от Slava77