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

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Замена выражения в title
« : 24.02.2020, 13:29:49 »
Добрый день
подскажите как массово заменить одно выражение в title(заголовок отображаемый в браузере)
таблица _menu
params
там все закодировано
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Замена выражения в title
« Ответ #1 : 24.02.2020, 13:42:41 »
Код
UPDATE __menu
SET params =
        JSON_SET(params ,
            '$.title', 'My new title'
        )
WHERE 1
Что-то типо такого
« Последнее редактирование: 24.02.2020, 16:56:00 от ProtectYourSite »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Замена выражения в title
« Ответ #2 : 24.02.2020, 13:44:14 »
Код
UPDATE __menu
SET params =
        JSON_SET(params ,
            '$.\"title\"', 'My new title'
        )
WHERE 1
Что-то типо такого
это понятно, но это проще и руками переписать
по сути
title - блаблабла ФРаза замены блалалалалла
вот мне надо кусок на кусок поменять
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Re: Замена выражения в title
« Ответ #3 : 24.02.2020, 13:47:23 »
Правильнее будет так:
1. Считать все записи таблицы запросом (используя ->loadObjectList()):
Код
SELECT `id`, `params` FROM `#__menu`
2. Пройтись в цикле по массиву объектов - расшифровать params, внести изменения, зашифровать и сохранить. Вроде этого:
Код
foreach($items as $item){
   $params = json_decode($item->params, true);
   $params['title'] = str_replace('...', '...', $params['title']);
   $item->params = json_encode($params);
   $db->updateObject("#__menu", $item, 'id');
}
И все. Парамсы там жсоном кодированы.

P.S. не "правильнее", а "проще", пожалуй.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Замена выражения в title
« Ответ #4 : 24.02.2020, 14:11:30 »
если все делать в PMY
то ошибку валит
ERROR: Неизвестная пунктуация @ 95 STR: ->
*

sivers

  • Живу я здесь
  • 2587
  • 359 / 0
Re: Замена выражения в title
« Ответ #5 : 24.02.2020, 14:35:44 »
то ошибку валит
это через JSON_SET ?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Замена выражения в title
« Ответ #6 : 24.02.2020, 16:52:14 »
https://stackoverflow.com/questions/17365222/update-and-replace-part-of-a-string заменить 'My new title' на свое условие
params->>'$.title' будет содержать ваше текущее значение бд, и кавычки подредактировать, заэкранировались в запросе
И для начала лучше составить запрос на SELECT, чтобы убедиться в правильности, а потом уже обновлять
« Последнее редактирование: 24.02.2020, 16:57:09 от ProtectYourSite »
*

fbr

  • Завсегдатай
  • 1663
  • 206 / 7
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Замена выражения в title
« Ответ #8 : 25.02.2020, 09:37:39 »
https://www.regularlabs.com/extensions/dbreplacer
json не декодирует
остальное просто реплейсом в PMA делается
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Замена выражения в title
« Ответ #9 : 25.02.2020, 09:38:20 »
https://stackoverflow.com/questions/17365222/update-and-replace-part-of-a-string заменить 'My new title' на свое условие
params->>'$.title' будет содержать ваше текущее значение бд, и кавычки подредактировать, заэкранировались в запросе
И для начала лучше составить запрос на SELECT, чтобы убедиться в правильности, а потом уже обновлять
все равно ума не дам что и как сделать
пока не много проще руками пройтись
30 пунктов меню всего
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

title и keywords с настройками configuration.php

Автор АлексейБеляев

Ответов: 9
Просмотров: 1264
Последний ответ 18.06.2024, 21:11:38
от Vastriet
Замена данных сайта на данные поддомена

Автор rezchik

Ответов: 5
Просмотров: 962
Последний ответ 05.02.2024, 11:45:36
от web1
Редактирование title через страницу

Автор toxic_rain

Ответов: 1
Просмотров: 611
Последний ответ 28.02.2023, 11:54:28
от sivers
Вставить языковую переменную в title""

Автор onniby

Ответов: 11
Просмотров: 1419
Последний ответ 18.04.2022, 16:14:46
от onniby
Код PHP в заголовках страницы в браузере (title)

Автор virfolk

Ответов: 20
Просмотров: 1904
Последний ответ 17.02.2022, 11:45:47
от virfolk