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

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Привет ^-^

Вывожу часть текста материала в модуле, например {loadmoduleid 111}. На сайте эта часть текста из модуля отображается хорошо, в исходном коде тоже. А вот для микроразметки Open Graph вместо содержимого модуля берется сама конструкция {loadmoduleid 111}. *ОХ-Х-Х* Подскажите, как сделать чтобы бралось содержимое этого модуля, а не само {loadmoduleid 111} ? *ОХ-Х-Х*
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Подскажите, как сделать чтобы бралось содержимое этого модуля, а не само {loadmoduleid 111} ?
Если вставляете это в коде, то делайте так:
Код
echo JHtml::_('content.prepare', '{loadmoduleid 111}');
А если в другом модуле, то надо проверить в его настройках опцию "обрабатывать плагинами" - она должна быть включена.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
sivers, я вставляю {loadmoduleid 111} в статью Joomla. Где искать "обработку плагинами"? ^-^
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
sivers, я вставляю {loadmoduleid 111} в статью Joomla. Где искать "обработку плагинами"? ^-^
в модуле
дополнительно
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
правда если модуль HTML
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
sivers, я вставляю {loadmoduleid 111} в статью Joomla. Где искать "обработку плагинами"?
Вы таким способом в материал вставляете текст другого материала? Вот это изврат )))
Не знаю даже почему у вас не срабатывает - смотреть надо.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
в модуле дополнительно

правда если модуль HTML

Нет, модуль не HTML, а сторонний (Responsive Post-It Note) и там нет таких настроек с обработкой плагинами :( . Может есть другой способ? 8)
« Последнее редактирование: 22.06.2021, 01:32:19 от Maffo »
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Вы таким способом в материал вставляете текст другого материала? Вот это изврат )))
Не знаю даже почему у вас не срабатывает - смотреть надо.

Нет, я пытаюсь добавить заметку из модуля Responsive Post-It Note в материал ::)
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Нет, я пытаюсь добавить заметку из модуля Responsive Post-It Note в материал ::)
Понятно. Попробуйте там указать ИД другого модуля - сработает или нет. Проверьте разрешен ли вывод модуля на той странице (привязка к пункту меню), хотя это и не должно бы влиять при выводе через ИД. Если и это не получится, то попробуйте выводить через {loadposition имяпозициимодуля}
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
из модуля Responsive Post-It Note в материал
Добавьте в точку входа модуля
Код
defined('_JEXEC') or die; // Метка для вставки
JPluginHelper::importPlugin('content');
$module->content = JHtml::_('content.prepare', $module->content, '', 'mod_имя_модуля.content');
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Понятно. Попробуйте там указать ИД другого модуля - сработает или нет

Попробовал вывести модуль HTML-код. Тоже самое - сам модуль отображается нормально, а для og:description берется {loadmoduleid 111}. Обработку плагинами включал и отключал, это не имеет значения.

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

Привязка к пункту меню обязательная, если отключить, то модуль не отображается совсем.

Если и это не получится, то попробуйте выводить через {loadposition имяпозициимодуля}

Это конечно уберет {loadmoduleid 111} из микроразметки (совсем), но мне наоборот хотелось бы, чтобы в микроразметке был текст из модуля. Поэтому и вставляю модуль в начало материала ^-^ .
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Добавьте в точку входа модуля

А можете поподробнее объяснить, куда добавлять?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Наверно не сработает вставка. если кастом модуль не вывел контент, при выполнении компонента com_content . Откройте папку модуля, файл имя_модуля.пхп и вставьте туда код.
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Откройте папку модуля, файл имя_модуля.пхп и вставьте туда код.

Вставил код:

Код
defined('_JEXEC') or die; // Метка для вставки
JPluginHelper::importPlugin('content');
$module->content = JHtml::_('content.prepare', $module->content, '', 'mod_postit');

в начало файла mysite.com/modules/mod_postit/mod_postit.php.

Но безрезультатно.

Или неправильно вставил?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Или неправильно вставил?
Да, ошибка в коде . Нужно
Код
defined('_JEXEC') or die; // Метка для вставки
JPluginHelper::importPlugin('content');
$module->content = JHtml::_('content.prepare', $module->content, '', 'mod_postit.content');
Думаю лучше смотреть в сторону расширения микроразметки
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Да, ошибка в коде . Нужно

Так тоже не срабатывает.

Думаю лучше смотреть в сторону расширения микроразметки

В каком смысле расширения?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Ну что то генерирует микроразметку- в шаблоне, плагине
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Ну что то генерирует микроразметку- в шаблоне, плагине

Да, буду смотреть, скорее всего там косяк :'(
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Что генерирует микроразметку? Если плагин группы content, то попробуйте в админке в списке плагинов перетащить его ниже плагина Content - Load Modules.
Веб-разработка: заказ. Только новая разработка.
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
Что генерирует микроразметку?

Я никакие плагины для этого не устанавливал, наверно по умолчанию Joomla! генерирует  ::)

Если плагин группы content, то попробуйте в админке в списке плагинов перетащить его ниже плагина Content - Load Modules.

А вот тут совсем не понял. Если можно поподробнее?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Я никакие плагины для этого не устанавливал, наверно по умолчанию Joomla! генерирует
Джумла откуда ?
Если включить стандартный шаблон- микроразметка есть ? Значит плагин, если нет- тогда в шаблоне .
« Последнее редактирование: 23.06.2021, 08:42:48 от draff »
*

Maffo

  • Захожу иногда
  • 175
  • 1 / 0
draff, да совсем забыл, микроразметка в шаблоне Flex :laugh:

Нашел код:

Код
$document->addCustomTag('<meta property="og:description" content="'. JHtml::_('string.truncate', $this->item->introtext, 1000, false, false ) .'" />');

Видимо тут скрыто решение. Я не силен в PHP, если кто разбирается подскажите *POPCORN*
« Последнее редактирование: 23.06.2021, 14:45:21 от Maffo »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться