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

voland

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

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

beliyadm

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

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

voland

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

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

beliyadm

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

voland

  • Легенда
  • 11030
  • 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

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

danik.html

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

beliyadm

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

beliyadm

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

voland

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

danik.html

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

voland

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

voland

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

beliyadm

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

voland

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

voland

  • Легенда
  • 11030
  • 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
  • 1664 / 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

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

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

Автор sergeytolkachyov

Ответов: 25
Просмотров: 2851
Последний ответ 24.11.2023, 10:24:11
от sergeytolkachyov
lm_any - плагин Last-Modified для любого контента

Автор yunoshev

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

Автор Benderalfa

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

Автор ELLE

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

Автор vovafit

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