Jump to content

PrestaShop + SSI (Server-Side Includes)


Recommended Posts

Здравствуйте, Друзья!
 
Возможно кто-то имеет мысли на сей счет. Родилась у меня идея, ради эксперимента скорее, встроить подгружаемый код JS и CSS непосредственно в страницу, во время её генерации на сервере, что-бы не терять время на подгрузку файлов знакомыми конструкциями:

<link rel="stylesheet" href="/themes/…/f60_all.css" type="text/css" media="all" />
<script type="text/javascript" src="/themes/…8d2f.js"></script>

Сделать это средствами Smarty проблематично, ибо он подгружает только.tpl по ссылке (или я не прав?).
Значит остается только Апачевский SSI (mod_include).
Подредактировав /classes/Media.php можно добиться генерации ссылок на файлы CSS и JS с путем относительно корня сайта, без домена, что и нужно для SSI virtual.
Но хоть убей не работает на страницах код

<!-- include virtual="/themes/…/f60_all.css"--> 

Причем модуль Апача mod_include точно активирован и работает. Если в корне сайта создать папку с файлом html и попробовать использовать SSI то работает прекрасно. Но не работает, если использовать в шаблонах PrestaShop.
Есть у кого то мысли на сей счет?
Возможно другое решение?
Как на стадии формирования страницы вставить JS и CSS код по готовым ссылкам в тело HTML, что-бы сразу отдавать готовую страницу пользователю?

Link to comment
Share on other sites

Одно уточнение. Под "не работает" я подразумеваю то, что не срабатывает Апач. То есть в исходном коде страницы видно просто строчку 

include virtual="/themes/…/f60_all.css"

Уже всю голову сломал. Может заголовки какие-то Преста посылает? Вроде не должно из-за этого.

Файл .htaccess тоже не при чем. И код из него удалял, и по-всякому крутил. И из header.tpl/footer.tpl код весь удалял только кроме инклуда - безтолку.

Link to comment
Share on other sites

SSI включать в php скрипт - какой в этом смысл?

Почему в php скрипт? Включаю именно вместо

<link rel="stylesheet" href="/themes/…/f60_all.css" type="text/css" media="all" />
<script type="text/javascript" src="/themes/…8d2f.js"></script>

В файле header.tpl в html. Include производится апачем перед выдачей страницы.

{if isset($js_defer) && !$js_defer && isset($js_files) && isset($js_def)}
	{$js_def}
	{foreach from=$js_files item=js_uri}
		<script type="text/javascript">
			<!--include virtual="{$js_uri}"-->
		</script>
	{/foreach}
{/if}
Link to comment
Share on other sites

это просто текст, он же не отдаётся сервером клиенту отдельно, он собирается php скриптом магазина, а потом отдаётся клиенту

Link to comment
Share on other sites

это просто текст, он же не отдаётся сервером клиенту отдельно, он собирается php скриптом магазина, а потом отдаётся клиенту

Судя вашей логике кроме php вообще ничего не существует. Почитайте про SSI. Отношения к php модуль Апач include имеет очень отдаленное, если не сказать никакого. Именно Апач перед тем как отдать готовую страницу вставляет содержимое инклуда вместо конструкции <!--include virtual="/path/to/file"-->

Link to comment
Share on other sites

это не моя логика, так мир устроен

Вы, уважаемый, потроллить решили? Нечего сказать - проходите мимо, "Помогальщик с Престашоп".

 

По теме - решение могло бы быть неплохим, если бы не несколько "но", о которых я сразу не подумал.

Я все же реализовал эту логику загрузки js/css кода из подгружаемых файлов в тело страницы (средствами php, SSI так и не заработал). Все работает хорошо, но получается, что клиент грузит каждый раз код с сервера, а не из кэша со своего компа. Отсюда все негативные вытекающие -> увеличение трафика, увеличение времени загрузки страницы и т.п. Велосипед изобрести не получилось)

Тема исчерпана. Можно удалить.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...