Новости Joomla

Обновление пакета плагинов JL Like 5.0

Обновление пакета плагинов  JL Like 5.0

Обновление пакета плагинов JL Like 5.0.0Команда JoomLine рада представить долгожданное обновление плагина социальных кнопок JL Like — версию 5.0.0! В этом релизе мы сделали акцент на совместимости с последними версиями Joomla, улучшении производительности и расширении функционала.👩‍💻 Что нового в JL Like 5.0.0?- Полная совместимость с Joomla 5 — теперь плагин работает на всех актуальных версиях Joomla, включая Joomla 5.- Рефакторинг и оптимизация кода — проведена масштабная чистка и обновление внутренних классов для повышения стабильности и скорости работы.- Удаление устаревших зависимостей — полностью отказались от использования jQuery, что ускорило загрузку страниц и повысило безопасность.- Обновление CSS и удаление неиспользуемых стилей — интерфейс стал еще легче и современнее.- Удалена поддержка устаревших виджетов — например, функциональность твиттер-виджета вынесена из плагина.- Поддержка twitter:card — улучшена интеграция с социальными сетями для красивого отображения ссылок.- Гибкая настройка счетчиков лайков — теперь можно включать и отключать рандомизацию количества лайков.- Улучшено подключение скриптов — переход на WebAssetManager для более корректной работы с ресурсами.- Обновлены языковые переменныеРасширения всё ещё наследуют старую архитектуру плагинов Joomla 3, но были протестированы на Joomla 5.3.Новость на сайте JoomlineСтраница расширенияGitHub расширения@joomlafeed#расширения

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Что такое каноническая ссылка и об атрибуте rel="canonical".
Предлагаю решение для построения канонических ссылок(в комплекте com_content, com_contact, com_weblinks, плагин расширяем для других компонентов).
Плагин нужно тестировать, о багах и глюках, а также пожеланиях и прдлжениях прошу писать в этой теме.
Инструкция по подключению. Joomla 3.0
1. Скачиваете плагин.
2. Устанавливаете плагин.
3. Расширения менеджер плагинов - включаете плагин.
Плагин временно удален. В Joomla версии 3.1 на которой тестировал, неправильно работает роутер.
Можете убедится
ваш сайт/component/content/article.html?id=7 здесь 7 ид материала из админки
Код: php
$url = JURI::getInstance()->toString();
$uri = JURI::getInstance($url);
$query = JFactory::getApplication()->getRouter()->parse($uri);
var_dump($query );
выведет id='article' это ошибка должно быть в нашем случае  id='7'
Буду просматривать обновления поправят роутер перепишу плагин
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Канонические ссылки для com_content
« Ответ #1 : 07.11.2012, 13:47:03 »
Круть! Я прям в шаблон запилил. Полезная наработка.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #2 : 07.11.2012, 13:54:08 »
А почему для категорий используется напрямую JRoute, а не ContentHelperRoute::getCategoryRoute. Или это сделано ради уточнения конкретного layout?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #3 : 07.11.2012, 14:13:35 »
Формирование ссылок взял по аналогии стандартного меню. Есть предложение по формировании ссылок для блога вставим.
В конце написания возникла мысль а может $uri->toString(array('fragment')) хватит на все это дело для других компонентов?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #4 : 07.11.2012, 15:34:22 »
Спасибо! Поправил. Архив перезалил. Каждый по строчке кода и может кому то пригодится ^-^
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #6 : 07.11.2012, 19:20:12 »
Плагин нужен однозначно! Причем особых технических препятствий для этого я не вижу - даже если в лоб делать и вырезать/вставлять ссылки на onAfterRender ;)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #7 : 07.11.2012, 19:36:07 »
Плагин написать не сложно. Вот интересно было обсудить о расширяемости этого плагина, подключения новых компонентов для обработки и каких-то специфических требований к самим ссылкам. Может  у кого то пожелания будут
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #8 : 07.11.2012, 19:38:05 »
Так реализовать в плагине абстрактный класс-адаптер, вложить в него плагины для встроенных компонентов, а дальше пополнять тем, что пришлет народ (я надеюсь, что народ-то не останется в стороне). Но в любом случае плагин нужен, править руками код в наше время уже как-то даже неприлично

эм для каких именно специфических компонентов, можно пример?
ой, можно подумать мало таких :)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #9 : 07.11.2012, 19:44:41 »
frisian неправильно понял или я не так выразился.  для начала развернуть для стандартных компонентов. я говорю о том, чтобы с легкостью можно было расширять, подключать обработку других компонентов. Пока писал smart написал про то, что я имею ввиду
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #10 : 07.11.2012, 20:02:05 »
(правда пока писал нашел один минус в этой идее.. если кто то что то в плагине ручками допишет то потеряет это при обнове плагина)
ничего подобного - можно сделать чтобы из папки adapters грузились адаптеры вида componentname.php, но перед этим  проверялось, а нет ли componentname.override.php, и если есть - использовать перегруженный. И овцы целы, и волки сыты и пастуху - вечная память.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #11 : 08.11.2012, 13:01:27 »
Написал первую версию плагина. Тестируйте. Принимаются пожелания и замечания
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #12 : 08.11.2012, 13:12:47 »
О, это уже интересно. Только форматирование кода все-таки приведи к используемому в Joomla? Сейчас читать просто невозможно... Да и лучше, когда точка выхода из метода одна, а не десяток return'ов по всему телу метода. И еще, а где объявлена переменная $option? И еще, если используется нестандартный порт (ну допустим 8088), работать будет?

p.s. Я бы все-таки эти адаптеры сделал бы классами, и инициализировал их извне данными. В конце концов в базовом можно получить все основные переменные (layout, view, document), а уже в наследниках вытягивать то, что требуется из текущей ссылки и строить каноническую ссылку.
« Последнее редактирование: 08.11.2012, 13:17:12 от smart »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #13 : 08.11.2012, 13:22:50 »
extract($app->getRouter()->parse($uri)); - Здесь берем option
Объявим перменную на всякий случай. Код приведем. Больше интересует удобство такого подхода (com_newcomponent.php). Чтобы добавить свой компонент нужно добавить файл с системным именем компонента.php в папку component  в котором определена переменная $can_url
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #14 : 08.11.2012, 13:27:54 »
extract($app->getRouter()->parse($uri)); - Здесь берем option
на мой взгляд не очень читабельно и удобно - т.е. визуально сказать нельзя, какие переменные в результате определены и какие у них значения. И еще, когда мы используем jrequest, у нас под рукой вся мощь фильтрации входных данных, а тут - после parse у нас просто ассоциативный массив, а что если в $option будет не название компонента, а допустим путь к файлу из каталога выше? или еще откуда-то? опасно...
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Re: Канонические ссылки для com_content
« Ответ #15 : 08.11.2012, 13:32:57 »
$option - согласен с Сергеем.

И читать трудно. Бей на приватные методы. Постарайся onBeforeCompileHead преврарить чисто в интерфейс, не грузи его кучой кода.

Насчет подхода - я, пока, не вижу других вариантов, так как файл тебе все равно будет нужен. Может быть действительно внутри файлов сделать классы, как Сергей предложил.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #16 : 08.11.2012, 13:39:46 »
Да пусть будет файл, кто против... но пусть этот файл будет классом... а не куском кода, который непонятно что и откуда берет
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #17 : 08.11.2012, 13:42:21 »
Но ведь мы и не знаем заранее как будет форматироваться query строка чужого компонента. Что там будет article или city к примеру. А таким образом мы получим все переменные. jrequest и новый Jinput здесь не помогут. Откуда я знаю наименования переменных чужих компонентов, чтобы их объявить. Понял вы хотите запрашивать только в option , а все остальное переложить на файл подключенный
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для com_content
« Ответ #18 : 08.11.2012, 15:06:37 »
Ну так вытащи в плагине только то, что нужно - option, проведи фильтрацию и подключай адаптер, а уже внутри адаптера, пусть каждый вытаскивает из массива те переменные, которые требуются. То что сейчас - и не безопасно и не предсказуемо. Ну вот представь, что в ссылке будет &doc=test или &app=comments, что произойдет после extract? Правильно - переменные $app и $doc получат значения 'test' и 'comments'. А что будет дальше, когда ты вызовешь $doc->language? Все упадет с ошибкой! А если в ссылке будет domain?

Не, все эти extract - зло, причем абсолютное зло.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для com_content
« Ответ #19 : 08.11.2012, 22:31:52 »
Написал версию 2. Если есть сбросьте ссылку на документацию по оформлению кода в Joomla.
Цитировать
в плагине абстрактный класс-адаптер, вложить в него плагины для встроенных компонентов
Не знаю, имеет ли смысл. Подключенный файл, задает(возвращает) нам сформированную ссылку для своего компонента. Писать его в виде класса?
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для Joomla 3
« Ответ #21 : 16.11.2012, 19:46:11 »
Написал 3 версию. Подправил код и логику. Добавил  обработку com_contact, com_weblinks
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для Joomla 3
« Ответ #22 : 16.11.2012, 19:53:14 »
А зачем в com_weblinks.php и com_contact.php строчка:
Код: php
if(!class_exists('ContentHelperRoute')) require_once (JPATH_SITE . '/components/com_content/helpers/route.php');

И зачем файл com_newcomponent.php, если в нем нет ни логики ни какой? Только людей будет смущать.

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

Хм, значение $this->domain лучше установить в конструкторе, это гарантирует, что оно будет на момент вызова add_link.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Re: Канонические ссылки для Joomla 3
« Ответ #23 : 16.11.2012, 20:28:55 »
Не вдаваясь в подробности, задам вопрос - не будет ли это очередным тормозом в и так не быстром движке? Плагин использует дополнительные запросы?
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для Joomla 3
« Ответ #24 : 16.11.2012, 21:43:41 »
Поправил. И еще несколько ошибок.
Шмайсер не тормозит плагин. Чего он должен тормозить. Гляньте код. Конструктивная критика приветсвуется
*

Demour

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Канонические ссылки для Joomla 3
« Ответ #25 : 18.11.2012, 08:04:50 »
Отличный плагин, спасибо!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для Joomla 3
« Ответ #26 : 19.11.2012, 12:08:57 »
@Poznakomlus: кстати, вот если бы ты меня послушал и реализовал адаптеры для различных расширений в виде некоего класса, то можно было бы сделать полный изюм - закэшировать вызов метода адаптера, возвращающий ссылку, и свести нагрузку, создаваемую плагином, фактически к нулю. Ведь я думаю не секрет, что каждый вызов getArticleRoute это один запрос к БД, а если на странице таких ссылок 50, то это будет 50 лишних запросов (по крайней мере если сайт мультиязычный - точно).
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Канонические ссылки для Joomla 3
« Ответ #27 : 19.11.2012, 12:15:21 »
Да, вопрос  по коду:

Код: php
private function add_link($url)
{
$doc = JFactory::getDocument();

unset($doc->_links[array_search(array('relation' => 'canonical', 'relType' => 'rel', 'attribs' => array()), $doc->_links)]);

$url = $this->domain.JRoute::_($url);

if($this->current_url != $url)
{
$url = explode('?', $url);
$doc->addHeadLink($url[0], 'canonical');
}
}

А точно unset должен быть до проверки неравенства  $this->current_url и $url? Т.е. получается, что если ссылки равны, плагин вырезает canonical ссылку?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Канонические ссылки для Joomla 3
« Ответ #28 : 19.11.2012, 13:08:10 »
Цитировать
реализовал адаптеры для различных расширений в виде некоего класса, то можно было бы сделать полный изюм
это входит в планы, кроме этого со временем планируется управление подключением расширениями, их обновлениями и т. д.
Цитировать
А точно unset должен быть до проверки неравенства  $this->current_url и $url? Т.е. получается, что если ссылки равны, плагин вырезает canonical ссылку?
Если это ссылка оригинального материала, которая мы считаем главной страницей этого материала, то тега canonical на странице быть не должно
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Re: Канонические ссылки для Joomla 3
« Ответ #29 : 21.11.2012, 07:40:02 »
А почему бы не предложить исправление родного SEF плагина, который Неправильно добавляет этот тег?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор lifelover2b

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

Автор azm1n

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

Автор azm1n

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

Автор romagromov

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

Автор Dram

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