1C-Bitrixでのテンプレートの代替実装

最初に、テンプレートが1C-Bitrixの標準形式でどのように実装されるかを思い出させてください。 すべてのテンプレートは、/ bitrix / templates /フォルダーに保存されます。 テンプレートフォルダーには、必要なheader.phpおよびfooter.phpファイルが含まれています。 実際、これらの2つのファイルは一緒になってページテンプレートを形成します。 最初にheader.phpが接続され、次にページのコンテンツ、次にfooter.phpが接続されます。 スキームは狂気に愚かです。 まず第一に、テンプレートは2つの部分に分割され、管理システムを介してのみテンプレート全体を編集できるという事実。 そして、これがクリニックです。 このようなスキームの2番目の不便な点は、実際には、header.php部分でページ変数を使用できないことです。テンプレートの最初の部分を呼び出すとき、システムはまだこれらの変数を「知らない」からです。 もちろん、提案されたオプションを使用してデータをバッファリングすることもできますが、そのような変数は出力にのみ使用できます。



典型的な状況。 ページタイトルを表示するかどうかを決定するパラメーターがページに設定されます。 タイトルはページコンテンツの前に表示されるため、標準のBitrixツールを使用してこれを行うことはできません。 この状況から抜け出す方法は、テンプレートシステムを使用することです。 私はこれを1年半前に開発し、すべてのプロジェクトでうまく使用しています。 そのため、システムは次のようになります。 ページのコンテンツ全体をバッファリングし、テンプレートを添付して、コンテンツを変数として貼り付けます。 実際の実装は次のとおりです。



Header.phpファイル:

<‍?php

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

ob_start();

?>








Footer.phpファイル:

<‍?php

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

$WORK_AREA = ob_get_clean(); //

include_once("template.php");

?>








Template.phpファイル:

<‍?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<‍html>

<‍body>

<‍?=$WORK_AREA?>

<‍/body>

<‍/html>








その結果、template.phpファイルに完全なWebサイトテンプレートがあります。 前に述べた2つの主な問題を解決します。 唯一のマイナス点は、管理パネルからテンプレートを編集できないことです。 これはプラスと考えることもできますが。



All Articles