Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
с какой даты нужно проверять? с текущей? - 5 дней или как?
Цитировать
if-modified-since: #дата страницы в индексе#
С этой, передаваемой ботом\браузером.

ЗЫ. Скинуть наработки плагина?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
ЗЫ. Скинуть наработки плагина?
не не надо, лучше скажи почему в 1.7 не работает :)

То есть брать дату из $_SERVER['HTTP_IF_MODIFIED_SINCE'] и если меньше или отсутствует - отдавать дату последней модификации из базы? Только вот в 1.5 эту проверку вообще можно не делать, ибо возвращается всегда текущая дата (см. меня выше)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
не не надо, лучше скажи почему в 1.7 не работает :)

То есть брать дату из $_SERVER['HTTP_IF_MODIFIED_SINCE'] и если меньше или отсутствует - отдавать дату последней модификации из базы? Только вот в 1.5 эту проверку вообще можно не делать, ибо возвращается всегда текущая дата (см. меня выше)
1.7 не ковырял, под 1.5 тестово стоит на joomla15.ru - код отдает как надо (проверять бесполезно, там ограничение на мой айпи чтоб сео не навредить)
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А что по поводу libraries\joomla\environment\response.php скажешь? Ты его в плагине смог переопределить без хака?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Код
class plgSystemLastmodified extends JPlugin
{
public function __construct(&$subject, $config)
{
parent::__construct($subject, $config);
}

public function  onAfterRoute()
{
$ip =  $_SERVER['REMOTE_ADDR'];
if ($ip=='0.0.0.0') // тут проверка временная
{

$heads=apache_request_headers();
if (!is_null($heads['If-Modified-Since'])) {
$ask_date=$heads['If-Modified-Since'];
if (strtotime($ask_date) >= time() ) {



$gets=JRequest::get('get');
$ids=explode(':',$gets['id']);
$id=$ids[0];
if (($gets['option']=='com_content') and ($gets['view']=='article')) {
//getting date
$query="SELECT modified
FROM #__content
WHERE id ='".$id."'";

$db=JFactory::getDBO();
$db->setQuery($query);
$result = $db->loadResult();

       
die(print_r($result)); // тут надо дописывать ))
}}}}


return true;
}
}
Вот - может поможет, под 1,5 работает
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
А что по поводу libraries\joomla\environment\response.php скажешь? Ты его в плагине смог переопределить без хака?
Ну раз я не сталкивался с этим - то похоже да.
Разница в обрабатываемых собитиях, похоже onAfterRoute отрабатывается после кода в библиотеке, я сначала тоже не то событие выбрал и долго не мог понять что за фигня - почему не работает
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну вообще то плагин и должен выолнять эту функцию - проверять изменился ли контент с определенной даты, и если нет отдавать 304, а если да - то 200
Интересно, как плагин будет определять, изменился ли какойнибудь модуль на странице. например модуль последних статей, или модуль случайного изображения и тд. И даже если отслеживать это, происходит всеравно то о чем я говорил - отдается 200 ОК, вместо 304, хотя статья старая, просто модуль обновился.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
понял, ты проверяешь if-modified-since (я ее вообще ни в одном заголовке не увидел), а я копал в сторону Last-Modified, которая вечно текущая.
Ладно, позже еще посмотрим
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Интересно, как плагин будет определять, изменился ли какойнибудь модуль на странице. например модуль последних статей, или модуль случайного изображения и тд. И даже если отслеживать это, происходит всеравно то о чем я говорил - отдается 200 ОК, вместо 304, хотя статья старая, просто модуль обновился.
Как я понимаю речь только о материалах, без учета обновлений модулей и прочих плагинов, только контент, только хардкор
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Интересно, как плагин будет определять, изменился ли какойнибудь модуль на странице. например модуль последних статей, или модуль случайного изображения и тд. И даже если отслеживать это, происходит всеравно то о чем я говорил - отдается 200 ОК, вместо 304, хотя статья старая, просто модуль обновился.
Модуль никак не сможет.. поэтому я и забросил это дело, ибо по хорошему - надо внедрять настройки принудительной отдачи кода 200 после определенного времени (кто-то выставит 3 дня, кто-то месяц), а еще лучше - полноценный компонент с триггерами на обновление модулей.. хотя опять же есть динамические модули...
В общем все не так просто, кроме того нужны куча функций для популярных сторонних компонентов.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Я говорю о том, что тут без проверки юзерагента не обойтись
Ибо, браузеру надо всегда слать 200 ок, а пс - 304 если статья старая, или 200 ок если новая
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Я говорю о том, что тут без проверки юзерагента не обойтись
Ибо, браузеру надо всегда слать 200 ок, а пс - 304 если статья старая, или 200 ок если новая
Неверно, ибо если обновился контент в модуле, поисковику тоже следует отдать код 200, пусть обновляет индекс.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Еще вспомнил гемор - onAfterInitialise не подойдет, так как в этот момент JRequest не сможет еще отдать корректный ответ.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Неверно, ибо если обновился контент в модуле, поисковику тоже следует отдать код 200, пусть обновляет индекс.
а это отследить вообще невозможно (если только не переписывать каждый модуль и не хакать базу, добавляя туда поле даты модификации) + как сам сказал про динамические модули
Отсюда - есть ли вообще смысл в таком действии? Я как то большого не вижу :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
а это отследить вообще невозможно (если только не переписывать каждый модуль и не хакать базу, добавляя туда поле даты модификации) + как сам сказал про динамические модули
Отсюда - есть ли вообще смысл в таком действии? Я как то большого не вижу :)
Смысл есть, но решение будет не универсальное, а подходящее для определенной части сайтов, не более, не менее.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
а это отследить вообще невозможно (если только не переписывать каждый модуль и не хакать базу, добавляя туда поле даты модификации) + как сам сказал про динамические модули
Отсюда - есть ли вообще смысл в таком действии? Я как то большого не вижу :)
Есть кстати еще вариант (если писать компонент или плагин к sef-компоненту) - генерить страницу, записывать ее md5 и сверять.. Как такая мысль в порядке бреда?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Гы, так это как минимум каждый модуль должен както контролировать дату своего последнего изменения. сложно, сложно,
Модуль никак не сможет.. поэтому я и забросил это дело, ибо по хорошему - надо внедрять настройки принудительной отдачи кода 200 после определенного времени (кто-то выставит 3 дня, кто-то месяц), а еще лучше - полноценный компонент с триггерами на обновление модулей.. хотя опять же есть динамические модули...
В общем все не так просто, кроме того нужны куча функций для популярных сторонних компонентов.

Теперь понятно. Надеюсь теперь всем сеошникам ясно почему в Joomla нет желаемого функционала
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Есть кстати еще вариант (если писать компонент или плагин к sef-компоненту) - генерить страницу, записывать ее md5 и сверять.. Как такая мысль в порядке бреда?
На первый взгляд идея интересная )
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Надеюсь теперь всем сеошникам ясно почему в Joomla нет желаемого функционала
Ну для начала это такая весьма неоднозначная опция, начнем с этого

генерить страницу, записывать ее md5 и сверять.. Как такая мысль в порядке бреда?
Бред? бред.
И генерация md5 таких объемов и вообще суть мне не очень нравится
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну для начала это такая весьма неоднозначная опция, начнем с этого
Бред? бред.
И генерация md5 таких объемов и вообще суть мне не очень нравится
Каких объемов? Создать md5  отпечаток для 5-100 кб данных? Помоему мелочи. А че суть то не нравится? по md5 мы однозначно узнаем, изменилась ли страница, не отслеживая по отдельности все модули, плагины, компоненты и бог знает что еще.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Solvedor

  • Захожу иногда
  • 376
  • 33 / 0
  • Масенький Йожик
Вот тут Проверка 304 Not Modified можно проверить отдачу Last-Modified и If-Modified-Since. У меня, например, везде отдается такое:
Цитировать
Сайт http://www.site.ru отдал время последней модификации, но не отреагировал на If-Modified-Since
.
Дак вот. Там же описано, как отдавать даты с помощью PHP. Вставляется в head шаблона, насколько я понимаю:
Код
<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
   if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
   if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
   if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
      header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
      exit; } header('Last-Modified: '. $LastModified);
?>

По идее, должно отдавать и Last-Modified и If-Modified-Since. Буду пробовать  ::)
*

Solvedor

  • Захожу иногда
  • 376
  • 33 / 0
  • Масенький Йожик
Ну а вот и результат вставки данного кода в шаблон:


Только вот я не понял, корректно 304 отдается или нет. А то такое ощущение, что он и изменялся, и не изменялся одновременно. Надо что-нить опубликовать...
*

Solvedor

  • Захожу иногда
  • 376
  • 33 / 0
  • Масенький Йожик
Только вот я не понял, корректно 304 отдается или нет. А то такое ощущение, что он и изменялся, и не изменялся одновременно. Надо что-нить опубликовать...
мда. last modified все-равно отдается текущим числом. так а в каком файле что хакнуть, дабы корректная дата отображалась?
*

MaRt

  • Захожу иногда
  • 356
  • 20 / 2
  • SEO master
Я постою. подожду. тема интересная. сам задавался этим вопросом
Тра та та
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну для меня вырисовывается след. логика работы плагина:
При установке плагина создается таблица в бд. Поля такие: url, timestamp, hash
На событие onAfterRender происходит следующее:

Подсчитывается хэшсумма страницы.
Дергается из бд строка соответсвующая запрошенному урлу.
Если строка есть, то сравниваются хэшсуммы. Если хэшсуммы разные или строки нет то делаем запись/обновление строки.

Далее, если нам передали заголовок if-Modified-Since, то сравниваем его timestamp страницы.
Если страница изменилась с момента Modified-Since, то выдаем 200 Ok, timestamp и контент страницы
Если страница не изменилась - выдаем 304 Not Modified
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Вот именно, этот вариант учитывает любое изменение страницы, и если оно зафиксировано - отдается 200 ОК. А как должно быть?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

MaRt

  • Захожу иногда
  • 356
  • 20 / 2
  • SEO master
найдено ли в итоге решение ласт модифайт для измененных или новых статей на сайте?
« Последнее редактирование: 29.03.2012, 11:49:01 от MaRt »
Тра та та
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Poznakomlus тоесть ты предлагаеш разделить логику работы системы в зависимости от юзерагента посетителя, верно?
тоесть для людей всегда отдавать страеицу со всеми изменениями (диеамические модули) со статусом 200 ок, не учитывая время создания собственно статьи, а для поисковых систем игнорировать изменения динамических модулей, и учитывать только дату создания материала, верно я понимаю? Но тогда поисковики не будут замечать какие либо  изменения на странице если они не касаются самого материала.или это пофиг?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Antosha

  • Захожу иногда
  • 420
  • 52 / 0
  • Плохо спорить плохо
Ребят.... Прошло уже 4 месяца со времен создания темы... всем сообществом обсуждаем, а конечного решения так и не нашлось?

Может быть для динамических модулей смотреть условие кеширования? если они не кешериуются, тогда их и игнорировать?
<a href="http://joomlablog.ru/">JoomlaBlog</a>
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
а может хотя бы ком_контент победим=) по принципу лучше синица в руках, чем..
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT SEO Meta templates плагин сео-шаблонов для Joomla

Автор sergeytolkachyov

Ответов: 26
Просмотров: 5717
Последний ответ 17.10.2025, 16:00:36
от sergeytolkachyov
lm_any - плагин Last-Modified для любого контента

Автор yunoshev

Ответов: 471
Просмотров: 61810
Последний ответ 15.03.2023, 12:23:54
от Cyberneer
Нет позиций в Google Joomla 3

Автор Benderalfa

Ответов: 1
Просмотров: 3282
Последний ответ 20.09.2022, 20:53:56
от darkghost
Расширенные описания страниц в Joomla (микроданные, микроформаты, RDFa, schema.org)

Автор ELLE

Ответов: 151
Просмотров: 114027
Последний ответ 20.11.2021, 18:15:42
от Byzi
Вопрос по отличию SEO MODx и Joomla

Автор vovafit

Ответов: 7
Просмотров: 2004
Последний ответ 20.11.2021, 18:15:09
от Byzi