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

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Здравствуйте, пожалуйста помогите  !
Я делаю плагин который добавляет в каждую страницу сайта HTML код такого содержания
Код
<link type='text/css' href='typography.css' rel='stylesheet'>
В идеале надо, чтобы добавлялось сразу же после <head>
Т.е. после открывающего <head>, а не после закрывающего </hed>

Подскажите php код для этого дела.
Всё остальное готово, манифест и т.д.
Просто не понимаю как сделать сам php скрипт для этого дела.
« Последнее редактирование: 03.11.2013, 00:14:30 от kostolom_brn »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Федор, а если надо прям сразу после <head>, а не где-то там в середине?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Разбирать буфер вывода регулярками.
По событию public function onAfterRender()
Или подключать динамически с помощью js (не совсем хорошо)
В Joomla нет возможности управлять порядком подключения CSS. Разве, что вы будете сортировать массив по событию onBeforeCompileHead
В группах упоминают, что в 4 версии планируют сделать динамическую загрузку js. Но это споры пока.
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
угу, вот я о том же...иногда нужно подключить перед всеми подключениями
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
угу, вот я о том же...иногда нужно подключить перед всеми подключениями
Код: php-brief
$doc->addCustomTag("<link type='text/css' href='typography.css' rel='stylesheet'>" );
P. S. Так выведет самым последним
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Либо так.. если я правильно понял что надо..
Код: php
$styleSheets = JFactory::getDocument()->_styleSheets;
$newStyles = array();
$url = 'путь к стилю который надо вывести первым';
$newStyles[$url] = array( 'mime'=>'text/css', 'media'=>'', 'attribs'=>'' );
JFactory::getDocument()->_styleSheets = $newStyles + $styleSheets;
« Последнее редактирование: 03.11.2013, 01:12:28 от Istaan »
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Помог последний совет. Встраивается самым первым CSS на странице.
Вот содержание файла плагина:
Код
function Mytypography()
{
$styleSheets = JFactory::getDocument()->_styleSheets;
$newStyles = array();
$url = '/plugins/system/mytypography/typography.css';
$newStyles[$url] = array( 'mime'=>'text/css' );
JFactory::getDocument()->_styleSheets = $newStyles + $styleSheets;
}
Mytypography();

p.s.
ВСЕМ СПАСИБО!  *DRINK*
поставить + в репу не нашёл как  >:(
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Под-вопрос так сказать:
А как сделать в mytypography.xml (это к этому плагину) указания о том где брать обновления?
Задача: указать в плагине где проверять обновления.
Нигде не нашёл информацию об этом...
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
И ещё вопросик по локализации...
Сделал плагин, все языковые переменные правильно прописал.
Все файлы правильно прописал.
Но вот после установки:

Вот что получается, в менеджере ВСЕХ плагинов — нет перевода:

А в настройках самого плагина есть перевод:


Вот приложил готовый плагин, посмотрите пожалуйста, может я где ошибся?!  !
http://yadi.sk/d/AClNPTwZC3NQA - 4КБ
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
поставить + в репу не нашёл как  >:(
Надо 10 сообщений набрать и можно будет менять карму )

И ещё вопросик по локализации...
Сделал плагин, все языковые переменные правильно прописал.
Все файлы правильно прописал.
1. Посмотрите или языковые файлы после уставновки перенеслись в CMS
2. в файлах *.sys.ini
написано:
Цитировать
PLG_SYS_mytypography="Типография на сайте"
PLG_SYS_mytypography_XML_DESC="Плагин для интеграции типографии на сайте"
тоесть часть с  маленькой буквы! возможно потому (файлы *.sys.ini) используются по все системе, а просто .ini в контексте текущего плагина!

А как сделать в mytypography.xml (это к этому плагину) указания о том где брать обновления?
Задача: указать в плагине где проверять обновления.
Нигде не нашёл информацию об этом...

скрипт установки / обновления / удаления и сервер обновлений
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Пасиба, буду разбираться и плюсы поставлю, теперь могу :-)

p.s.
русификация заработала корректно (совет помог). ::)
« Последнее редактирование: 03.11.2013, 15:17:27 от kostolom_brn »
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Не смог разобраться с тем как получить параметры плагина и обработать их.
Задача такая.
В настройках плагина будет выбор:
Включение шрифтов(параметры выпадающим списком):
  • выкл
  • включить старые
  • включить новые

В зависимости от выбранного будет включаться интеграция того или иного CSS

Прочитал всякие руководства и так и не смог разобраться, до 3х ночи просидел и не понял как это реализовать. :'(
Я прикрепил плагин (http://yadi.sk/d/eu9EhdTaC5eKK - 4кб), посмотрите пожалуйста, и если сможете, дайте новый рабочий код для mytypography.php
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Оу не удивительно что у вас не пашет! в плагине должен быть класс, а не просто функция
class plgГруппаПлагинаИмяПлагина extends JPlugin{

}

и уже внутри этого класса использовать $this->params->get( 'typography_basic', 1 )

вы можете у меня почитать у меня в блоге о создании плагина
а с помощью моего сервиса для создания каркасов плагина можете создать нужный вам плагин в нужной группе, уже будет присутствовать класс нужный, с нужными вам действиями, и можете сразу создать необходимые для плагина параметры!
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Ночью я пытался сделать в конструкторе плагинов, но мне выдавал нулевой архив. сейчас сделался. но всёравно не получается взять переменные из настроек плагина.
В настройках есть переменная typography_fontawesome у неё 3 значения (off, old, new)
Хочу получить значение переменной и в зависимости от ней выполнить действия (функцию).
В идеале сделать так: $переменная=получаем из настроек;
if ($переменная == "old"){работает функция для old;}
Вот содержание файла mytypography.php полученного при помощи конструктора:
Код
<?php
defined( '_JEXEC' ) or die;

class plgSystemMytypography extends JPlugin
{
/**
* Class Constructor
* @param object $subject
* @param array $config
*/
public function __construct( & $subject, $config )
{
parent::__construct( $subject, $config );
$this->loadLanguage();
}

$wwwww=$this->params->get('typography_fontawesome');

}
В конце это я пытался состряпать переменную в которую загрузить значение из настроек, но ничего не получается. ошибка, белый экран.

Пожалуйста, помогите, ума не хватает самому  >:(
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Потому что вам нужно писать в теле метода!
я вижу у вас совсем с ООП слабенько )))
Добавьте в ваш класс метод:
Код: php
<?php
defined( '_JEXEC' ) or die;

class plgSystemMytypography extends JPlugin
{
/**
* Class Constructor
* @param object $subject
* @param array $config
*/
public function __construct( & $subject, $config )
{
parent::__construct( $subject, $config );
$this->loadLanguage();
}
function onAfterInitialise(){
$wwwww=$this->params->get('typography_fontawesome');
var_dump($wwwww);
}
}

метод onAfterInitialise выполнится сам после инициализации приложения, дополнительно его никак вызывать не надо!
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Всё... родила царица в ночь, не то сына не то дочь  :D
Малость подшаманю хелпер и скоро добавлю на JED и сюда ссыль пульну.

p.s.
в репу добавил  *DRINK*
*

kostolom_brn

  • Осваиваюсь на форуме
  • 19
  • 4 / 0
Ещё вопросик:
Плагин сделал, работает, но хочу сделать помощь по типографии (примеры использования).
Надо сделать чтобы когда заходишь в настройки плагина, слева, там где краткое описание, вставить HTML код (описание с примерами).
Как правильно это сделать? Просто в языковой файл добавить или ещё есть нормальный способ? А то в языковой файл HTML как-то стрёмно добавлять, кавычки и всё такое...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенесено: Плагин создания полной резервной копии сайта+отправки на ЯндексДиск

Автор b2z

Ответов: 0
Просмотров: 1656
Последний ответ 03.03.2014, 15:09:58
от b2z
Как подгружать js в head из события onContentAfterDisplay ?

Автор mainet

Ответов: 2
Просмотров: 1435
Последний ответ 22.01.2014, 11:39:26
от mainet
[Решено] Как в плагине отправить скрипт в head ?

Автор mainet

Ответов: 1
Просмотров: 1513
Последний ответ 03.12.2012, 12:19:44
от hooten
Как отправить код в head ?

Автор mainet

Ответов: 11
Просмотров: 4886
Последний ответ 19.07.2012, 22:04:14
от mainet
field type=filelist directory

Автор Black Moon

Ответов: 1
Просмотров: 1342
Последний ответ 08.10.2011, 23:10:02
от Lex