VITRAGE: Примеры
· 1. "Распорки"
· 2. Изображения
· 3. "Колонтитулы"
· 4. Ссылки
· 5. Многоязычные сайты
· 6. Организация меню
· 7. Однотипные элементы
· 8. Формы и их обработка
· 9. Случайные операции
· 10. Циклы
· 11. "Ленты" данных
· 12. Внешние скрипты
· 13. Работа с файлами
· 14. "Бесконечный копирайт"
 
Практика
· Немного о стилях парсинга
· Примеры использования
· Работающие сайты
· Хостинги
· Вопросы и ответы
· Задать вопрос
· E-mail
 
Теория
· Компиляция и установка
· Идеология VITRAGE
· Оптимизация HTML
· Создание виртуальных хостов
· Создание структуры доменов
· Ваш собственный язык гипертекстовой разметки
 
О модуле
· Что такое VITRAGE
· История модуля
· Загрузить модуль
· Документация целиком
· Загрузить документацию в формате MS Word
· Слово автора
· English version
 
Технология VITRAGE
Один из витражей города Иркутска
Исходный код
· VHTML-код этой страницы (в новом окне)
· VHTML-код файла vitrage (в новом окне)
 
· Пример 10. Циклы

Часто действия по формированию разного рода меню, списков и т.п. целесообразно выполнять с использованием циклов, предварительно пронумеровав каким-либо образом соответствующие объекты. Допустим, нам необходимо выполнить следующую последовательность действий:

  • в "шапке" сайта отобразить пять изображений с именами image1.gif, image3.gif, image5.gif, image7.gif, image9.gif;
  • в нижней части сайта отобразить пять изображений с именами image2.gif, image4.gif, image6.gif, image8.gif, image10.gif;
  • каждому из изображений поставить в соответствие комментарий, задаваемый переменной altN, где N - номер изображения;
  • сформировать список из комментариев, расположенных в обратном порядке (т.е. с 10 по 1).

Прежде чем показать решение задачи, отметим, что переменные alt1, alt2 и т.д. удобно задавать при инициализации сайта, например, в тэге <init>, как это было предложено в примере 3.

Решаться же поставленная задача будет описанием следующих тэгов:

<image>
<%copy% alt="alt$id$">
<img src="image$id$.gif" alt="$alt$" border=0>
</image>

<imageTop>
<%primitive% s="$%times%$ 2 * 1 - %id in">
<image>
</imageTop>

<imageBottom>
<%primitive% s="$%times%$ 2 * %id in">
<image>
</imageBottom>

<altList>
<li><%var% v="alt$%btimes%$">
</altList>

и последовательным их вызовом:

<imageTop %times%=5>
<ul>
<altList %times%=10>
</ul>
<imageBottom %times%=5>

Обратим особое внимание на использование в описании тэга <altList> переменной %btimes% - именно она обеспечивает обратный порядок расположения комментариев в формируемом списке.

Последовательности операторов Primitive, очевидно, вычисляют нужный номер изображения (и описания) на основе переменной цикла %times%, а тэг <image> введен просто для удобства и сокращения записей. Тэг <image> использует значение глобальной переменной id, вычисляемое в тэгах <imageTop> и <imageBottom>, и именно в связи с глобальностью этой переменной ее можно не передавать тэгу <image> с использованием атрибута.

Отметим также примененный прием получения значений переменных, имя которых само содержит переменные: это сделано при помощи тэга <%copy%>.