Jump to content

Recommended Posts

Прошу помочь с настройкой отображения http-заголовка. Вроде это: <?php header("Last-Modified: ".gmdate("D, d M Y H:i:s ")."GMT");?> нужно вставить куда-то?

Share this post


Link to post
Share on other sites

ДА! мне то же интересно или как правильно прописать в .htaccess

Share this post


Link to post
Share on other sites

Прошу помочь с настройкой отображения http-заголовка. Вроде это: <?php header("Last-Modified: ".gmdate("D, d M Y H:i:s ")."GMT");?> нужно вставить куда-то?

вставляется в файл index.php который в корне сайта лежит

после

$_SERVER['HTTP_IF_MODIFIED_SINCE'];

$_SERVER['HTTP_IF_NONE_MATCH'];

добавить

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

вроде так, у меня по крайне мере работает.

стянул с зарубежного форума

Share this post


Link to post
Share on other sites

после

$_SERVER['HTTP_IF_MODIFIED_SINCE'];

$_SERVER['HTTP_IF_NONE_MATCH'];

У меня этих строк нет.

Share this post


Link to post
Share on other sites

после

$_SERVER['HTTP_IF_MODIFIED_SINCE'];

$_SERVER['HTTP_IF_NONE_MATCH'];

У меня этих строк нет.

попробуйте добавить после define('VERSION', '1.5.1.3'); - ну или какая там у вас версия.

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

Share this post


Link to post
Share on other sites

попробуйте добавить после define('VERSION', '1.5.1.3'); - ну или какая там у вас версия.

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

добавил, но last modified отдает с текущей датой, а не с датой последнего изменения. Тема не поднималась, неужели у всех все нормально с этим?

Share this post


Link to post
Share on other sites

я сам не особо разбираюсь.

может это поможет

Share this post


Link to post
Share on other sites

я сам не особо разбираюсь.

может это поможет

это сервис проверки ответов сервера, здесь можно проверить сайт, но сам сайт выдает не правильный параметр, должна быть дата последнего изменения, а выдает текущую дату и время. Этот параметр нужен поисковикам, он ускоряет индексацию сайта, но его нужно правильно настроить.

Share this post


Link to post
Share on other sites

это сервис проверки ответов сервера, здесь можно проверить сайт, но сам сайт выдает не правильный параметр, должна быть дата последнего изменения, а выдает текущую дату и время. Этот параметр нужен поисковикам, он ускоряет индексацию сайта, но его нужно правильно настроить.

Там написано решение но оно мне не помогло как и многие другие которые я находил в инете.

Дата все равно выдается не корректно. Сам жду что бы кто нибудь помог =)

Share this post


Link to post
Share on other sites

Для версии 1.5.1.3 решается все очень тривиально

В базе данный есть такое поле как [date_modified] его и будем выводить в качестве Last-Modified, более логичного варианта не вижу

Итак для единицы товара

В файле /catalog/controller/product/product.php

после строки

$this->data['date_available'] = $product_info['date_available'];
добавляем

$this->data['date_modified'] = $product_info['date_modified'];
после строки

'date_available' => $result['date_available'],
добавляем

'date_modified' => $result['date_modified'],

В файл /catalog/view/theme/default/template/product/product.tpl в самое начало, добавляем

<?php
$LastModified_unix = strtotime($date_modified); // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s GMT", $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); ?>

Для категорий делаем так же. Если кому то интересно, напишу позже как это сделать...

Как это работает можно посмотреть на моем сайте www.SmallMister.ru

  • +1 2

Share this post


Link to post
Share on other sites

Для версии 1.5.3 решается все очень тривиально

В базе данный есть такое поле как [date_modified] его и будем выводить в качестве Last-Modified, более логичного варианта не вижу

Итак для единицы товара

В файле /catalog/controller/product/product.php

после строки

$this->data['date_available'] = $product_info['date_available'];
добавляем

$this->data['date_modified'] = $product_info['date_modified'];
после строки

'date_available' => $result['date_available'],
добавляем

'date_modified' => $result['date_modified'],

В файл /catalog/view/theme/default/template/product/product.tpl в самое начало, добавляем

<?php
$LastModified_unix = strtotime($date_modified); // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s GMT", $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); ?>

Для категорий делаем так же. Если кому то интересно, напишу позже как это сделать...

Как это работает можно посмотреть на моем сайте www.SmallMister.ru

Напишите как сделать для категорий!
  • +1 1

Share this post


Link to post
Share on other sites

По просьбе трудящихся, дополняю пояснениями по выводу Last-Modified в категориях

Итак...

В файле /catalog/controller/product/category.php

после строки

$this->data['seo_h1'] = $category_info['seo_h1'];
добавляем

$this->data['date_modified'] = $category_info['date_modified'];
В файл /catalog/view/theme/default/template/product/category.tpl в самое начало, добавляем (ИДЕНТИЧНО варианту для единиц товара)

<?php
$LastModified_unix = strtotime($date_modified); // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s GMT", $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); ?>

У тех, у кого, PHP начнет материться такими сообщениями как "Warning: Cannot modify header information..." сохраните, указанный в Warning'е, файл в формате "UTF-8 Without BOM". У меня материля на filter.php(больше всего времени ушло на выяснение причин). Мало того, ещё и сам файл не сохранялся в нужный формат (не была доступна ф-ия преобразования), пришлось пересоздать файл.

Кому помог того велкам к кнопочке "+1"

  • +1 4

Share this post


Link to post
Share on other sites

По просьбе трудящихся, дополняю пояснениями по выводу Last-Modified в категориях

Итак...

В файле /catalog/controller/product/category.php

после строки

$this->data['seo_h1'] = $category_info['seo_h1'];
добавляем

$this->data['date_modified'] = $category_info['date_modified'];
В файл /catalog/view/theme/default/template/product/category.tpl в самое начало, добавляем (ИДЕНТИЧНО варианту для единиц товара)

<?php
$LastModified_unix = strtotime($date_modified); // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s GMT", $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); ?>

У тех, у кого, PHP начнет материться такими сообщениями как "Warning: Cannot modify header information..." сохраните, указанный в Warning'е, файл в формате "UTF-8 Without BOM". У меня материля на filter.php(больше всего времени ушло на выяснение причин). Мало того, ещё и сам файл не сохранялся в нужный формат (не была доступна ф-ия преобразования), пришлось пересоздать файл.

Кому помог того велкам к кнопочке "+1"

На своем сайте еще не пробовал но http://last-modified.com показывает что Ваш сайт проверку не прошел.
  • +1 1

Share this post


Link to post
Share on other sites

Скорее всего вы проверяли только главную страницу, а это не предусматривается. Проверьте то для чего это сделано, а именно категорию или продукт, все работает.

К примеру ссылку на слипы для новорожденных: http://smallmister.r...yh-i-mladencev/

Share this post


Link to post
Share on other sites

А есть решение для версии v1.5.1.3. ?

Share this post


Link to post
Share on other sites

Скорее всего вы проверяли только главную страницу, а это не предусматривается. Проверьте то для чего это сделано, а именно категорию или продукт, все работает.

К примеру ссылку на слипы для новорожденных: http://smallmister.r...yh-i-mladencev/

И вправду работает на Вашем сайте =))

Share this post


Link to post
Share on other sites

А есть решение для версии v1.5.1.3. ?

это и есть решение для 1.5.1.3, просто я ошибся в номере версии. я поправил свой первый пост по этому вопросу.

Share this post


Link to post
Share on other sites

это и есть решение для 1.5.1.3, просто я ошибся в номере версии. я поправил свой первый пост по этому вопросу.

Вы не повепорите но я не могу найти строку this->data['date_available']= $product_info['date_available'];

Share this post


Link to post
Share on other sites

это и есть решение для 1.5.1.3, просто я ошибся в номере версии. я поправил свой первый пост по этому вопросу.

номер строки подскажите пожалуйста и для категории то же. я даже скачал оригинал версии но и там не нашел тех строк о которых Вы пишите ((

Share this post


Link to post
Share on other sites

у меня оригинальная версия opencart, не oc_store

Share this post


Link to post
Share on other sites

Какая версия у Вас указана в index.php ? Вы скачивали версию с myopencart ?

Share this post


Link to post
Share on other sites

Какая версия у Вас указана в index.php ? Вы скачивали версию с myopencart ?

у меня официальная версия с сайта opencart.com. скачал ради интереса oc_store но и там не нашел подобной строчки. скачал последнею версию opencart но и там ее нет. Даже через поиск если искать date_available то ни чего не находится.

может скинете ваш файл ? ну оч любопытно, потому что я все перерыл. спасибо

Share this post


Link to post
Share on other sites

define('VERSION', '1.5.1.3');

Share this post


Link to post
Share on other sites

Последняя версия opencart 1.5.3.1, у меня и у вас версия 1.5.1.3 . Поэтому в последних версиях не стоит искать указанные мной строки.

Исходного моего opencart у меня сейчас нет, поэтому проверить насколько были изменены файлы, у меня нет. Файл прикрепил...

product.php

  • +1 3

Share this post


Link to post
Share on other sites

Последняя версия opencart 1.5.3.1, у меня и у вас версия 1.5.1.3 . Поэтому в последних версиях не стоит искать указанные мной строки.

Исходного моего opencart у меня сейчас нет, поэтому проверить насколько были изменены файлы, у меня нет. Файл прикрепил...

за файл спасибо. у меня действительно нет таких строк. их нет и в оригинальном файле в оф. сборке 1.5.1.3

у меня все заработало спасибо. последний вопрос, вставить нужно полностью в самый верх ?

<?php

$LastModified_unix = strtotime($date_modified); // время последнего изменения страницы

$LastModified = gmdate("D, d M Y H:i:s GMT", $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); ?>

(а это уже начало файла)

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>

<div id="content"><?php echo $content_top; ?>

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.