САМОУЧИТЕЛЬ PHP 4



         

Главный модуль шаблонизатора - часть 5


    // блока файла в массив.

    Block();

  chdir($SaveDir);

  $CURBLOCK_URL=$SaveCBU;

  $bSingleLine=$PrevSingle;

}

// Главная функция шаблонизатора. Обрабатывает указанный файл $url

// и возвращает тело блока Output. В выходной поток ничего не печатается

// (за исключением предупреждений, если они возникли).

function RunUrl($url)

{ global $BLOCK;

  // Собираем все блоки.

  _CollectBlocks($url);

  // Находим и запускаем главный шаблон. Мы делаем это в последнюю

  // очередь, чтобы ему были доступны все блоки, из которых состоит

  // страница. Шаблон — обычный блочный файл. В нем обязательно должен

  // присутствовать блок Output.

  $tmpl=@$BLOCK[BlkTemplate];

  if(!$tmpl) {

    die("Cannot find the template for <b>$url</b> ".

      "(have you defined <tt>".BlkTemplate."</tt> block?)");

  }

  Load($tmpl);

  // Возвращаем блок Output.

  if(!isSet($BLOCK[BlkOutput])) {

    die("No output from template <b>$tmpl</b> ".

      "(have you defined <tt>".BlkOutput."</tt> block?)");

  }

  return $BLOCK[BlkOutput];

}

// Эта функция предназначена для внутреннего использования. Она собирает

// блоки из файла, соответствующего указанному $url, в том числе и блоки

// из всех .htaccess-файлов "надкаталогов".

function _CollectBlocks($url)

{ global $BLOCK;

  $url=abs_path($url,dirname($GLOBALS["SCRIPT_NAME"]));

  // Если путь — не /, то обратиться к "надкаталогу".

  if(strlen($url)>1) _CollectBlocks(dirname($url));

  // Загрузить блоки самого файла.

  Load($url);

}

// Запускает все фильтры для блока.

function _ProcessContent($name,&$cont,$url)

{ foreach($GLOBALS["BLOCKFILTERS"] as $F)

    $F($name,$cont,$url);

}

// "Склеивание" блоков.

// Если тело блока начинается с [name], то оно не просто

// записывается в массив блоков, а "пристыковывается" к значению,




Содержание  Назад  Вперед