Pull to refresh

SSI loop — Циклы в SSI

Reading time 2 min
Views 2.5K
Несмотря на то, что технология SSI (Server Side Includes) не популярна, особенно с приходом CMS. Тем не менее она достаточна удобна для создания небольших сайтов без сложной структуры. Даже тем, кто практически не обладает навыками программирования, она позволяет собрать сайт на основе шаблонов. Об этом уже написано (а чаще скопипащено) немало статей. Помимо включений, SSI обладает условными операторами, а до мало-мальски языка программирования ей не хватает математики, циклов и массивов. С одной из этих проблем, циклами, я и решил разобраться. Вот что у меня получилось.

Саму идею можно описать 1 словом — рекурсия. Дабы не пустозвонить, я просто приведу листинги с небольшим описанием, те кто знаком с SSI разберутся без труда, а остальным следует сначала изучить основы SSI.

Итак для организации цикла понадобится создать 2 файла: вызывающий и тело цикла:
test-lloop.shtml
<!--#set var='i' value='1'-->
<!--#set var='k' value='1'-->
<!--#set var='j' value='111'-->
<!--#include virtual='ssi-loop.shtml' -->

где переменные:
  • i — начальное значение
  • k — шаг
  • j — конечное значени

test-loop.shtml
 <!--#if expr="$i <= $j"-->
всё что вы хотите делать в цикле
<!--#set var="i" value="${i}${k}" -->
<!--#include virtual='ssi-loop.html' -->
<!--#endif -->

В тело вы помешаете любые необходимые вам действия.

Практически я ещё не использовал. Так как массивов нет, то можно что-нибудь замутить с переменными отличающимися на «шаг» и обработкой параметров адресной строки
<!--#include virtual="$QUERY_STRING"-->.

PS
Для тех кого интересует технология SSI я предлагаю посмотреть статью SSI + RewriteEngine.
Пока не готовы примеры практической реализации, поэтому для отдельного хабрапоста, не дотягивает.
Tags:
Hubs:
+3
Comments 17
Comments Comments 17

Articles