Cистема управления сайтом

Оператор file

С помощью оператора file можно организовать публикацию нескольких файлов из одного дизайн-шаблона. Одна из возможных областей применения оператора file — создание внешних дайджестов (например, лента новостей создает свой краткий индекс последних новостей для включения на главную страницу) или же отдельные страницы длинных документов (например, когда список товаров содержит в себе несколько страниц, скажем, по 20 позиций — создаются несколько файлов по 20 единиц информации, один из которых потом включается в зависимости от выбранной страницы).

Синтаксис:

<file name=expr [charset=expr]>
  djemscript
</file>

где,

Параметр

Описание

name

Имя создаваемого файла, указывается путь от корня сайта. Обязательный параметр;

charset

Кодировка выходного фрагмента.( «koi-8», «windows-1251», «utf-8» ). Если параметр отсутствует, используется кодировка текущего документа.

 

Непосредственно перед именем файла может быть указан один из модификаторов поведения:

Модификатор

Описание

Пример использования

+

Текст, указанный внутри тэгов <file> включается в текст исходного документа. По умолчанию текст вырезается

 

<file name="+/a.shtml">текст</file>

 

<

Включает в текст исходного документа содержимое файла на диске.

 

<file name="</a.shtml"></file>

>

Создает файл и осуществляет запись в него

 

<file name=">/a.shtml">текст</file>

>>

Добавляет запись в конец файла, если такой файл уже есть на диске.

 

<file name=">>/a.shtml">текст</file>

 

Оператор file обладает рядом особенностей:

Система автоматически обьединяет в один файл несколько последовательных записей в файл с одним и тем же именем в рамках одной публикации. При самом первом вызове файл создается, а каждый последующий вызов просто дописывает тело оператора к уже существующему файлу.

Пример:

<file name="/a.shtml">Hello</file>
<file name="/b.shtml">Tatsuya Ishida</file>
<file name="/a.shtml"> world</file>

В результате мы получим два файла — a.shtml, в котором будет «Hello world», и файл b.shtml, в котором будет «Tatsuya Ishida». Однако, если мы выполним этот скрипт ещё раз — файл a.shtml будет содержать текст «Hello world», а не «Hello world Hello world».

Создаваемые посредством оператора file файловые фрагменты контролируются Сборщиком Мусора — это значит, что при удалении документа будут также удалены созданные при его публикации файловые фрагменты (подробная работа описания работа Сборщика Мусора описана в разделе …), а также, если в процессе публикации документы будут созданы другие файловые фрагменты взамен текущих. Например, если в процессе предыдущей публикации ваш дизайн-шаблон создал файлы a.shtml и b.shtml, а при текущей — b.shtml и c.shtml, то файл a.shtml будет автоматически удален, как потерявший актуальность.

 

Оператор file по умолчанию вырезает содержимое тэгов <file> из исходного дизайн-шаблона, но это поведение может быть переопределено добавлением знака «+» перед именем файла — в этом случае тело оператора file остается в публикуемом документе. Например, если дизайн-шаблон ленты новостей делает сводку из нескольких последних новостей и при этом сама лента новостей также содержит данный фрагмент — можно создавать дайджест с указанием «+» перед именем файла, при этом он останется в исходном документе.

Пример:

Мы хотим <file name="+/keywords.shtml">купить DJEM</file> у правильного дилера.

В результате мы получим основной документ, содержащий «Мы хотим купить DJEM у правильного дилера.», и файл keywords.shtml, содержащий слова «купить DJEM».

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

Пример:

<foreach name=x path="main.goods.$">
  
<file name="/goods/index.shtml">
     
<file name="+/goods/newitems.shtml">
      Товар
<foreach[x]._name>, цена <foreach[x].price>
     
</file>
  
</file>
</foreach>

Разумеется, при этом все внутренние операторы file должны указывать «+» перед именем выходного файла, а самый верхний — указывать или не указывать в зависимости от того, хотите ли вы оставить фрагмент в теле основного документа или нет.

Поиск по документации

О компании  |  Партнёрам

© 2005 — 2024 DJEM Solutions, все права защищены. | Дизайн — Студия Fractalla