Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

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
Просмотров: 3713
Последний ответ 05.06.2025, 04:48:29
от andrey222
По поводу сессий Joomla 3

Автор azm1n

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

Автор azm1n

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

Автор romagromov

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

Автор Dram

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