bluetronix CMSでPHPコードと$LayoutHTMLを使用する
開発者アクセスを使用すると、CMSページのPHPコードを自分で編集できます。このチュートリアルでは、PHPの命令を実行し、$LayoutHTMLを介してHTMLコンテンツを変更し、独自の関数と組み込みのCMS関数を使用する方法を学びます。
bluetronix CMS内の独自PHPコード
開発者アクセスを使用すると、CMSページ内で独自のPHPコードを使用できます。この際、ページのHTMLコードと自分のPHPコードが連携します。中心となるのは変数$LayoutHTMLで、サイトレンダリングプロセス中に現在生成されているページのHTMLコードを含みます。PHPを使用して、その中でコンテンツを検索、変更、置換できます。
独自のPHPコードを使用するには、bluetronix CMSへの開発者アクセスが必要です。まだ開発者アクセスを持っていない場合は、別途申請できます。
ページのPHPコードを開く
希望するページでPHPコードを開いて、ページのPHPコードを編集します。
追加のPHPタグを使用しない
PHPコードはCMSによってすでにPHPコードとして実行されています。したがって、PHPコードエディタでは追加のPHPタグを使用することはできません。この書き方は必要ありません:
<?php print "Hello World"; ?>
代わりに、PHP命令を直接書きます:
print "Hello World";
exitでPHPの実行を終了する
テストのために次の命令を入力して保存し、その後ページをリロードできます:
print "Hello World";
exit();

この例ではHello Worldのみが表示されます。exit();を使用すると、ここでPHPの実行が終了します。
exit();によって、CMSサイトのレンダリングプロセスも終了します。ヘッダー、実際のページコンテンツ、フッター、そして後続の処理ステップは実行されなくなります。
通常のページ内でのPHP出力
もしexit();を削除し、次の命令のみを使用すると、レンダリングプロセスは通常通り続きます:
print "Hello World";

PHPは最初にHello Worldを出力します。その後、実際のCMSページが、ヘッダー、ページコンテンツ、フッターを含めて生成され続けます。ただし、HTMLページ内で直接変更を加える場合は、できるだけ$LayoutHTMLを使用するべきです。
HTMLとPHPを分けて編集する
bluetonix CMSでは、ページのHTMLコードとPHPコードを別々に管理できます。これにより、エディタ内のHTML構造は編集可能であり、プログラムロジックはPHPセクションに保持されます。
HTMLで独自のプレースホルダーを定義する
HTMLコード内にプレースホルダーを定義し、後でPHPコードがそのプレースホルダーを置き換えることができます。簡単な例は次の通りです:
__MyText__
独自のプレースホルダーには英語の名前を使用し、ドイツ語のウェブサイトでも同様にします。このようにして、命名が国際的に理解しやすく、一貫性が保たれます。
他の可能な名称は次の通りです:
__CustomerName__
__ProductPrice__
__CurrentDate__
$LayoutHTMLでプレースホルダーを置き換える
str_replace()を使用して、現在のHTMLコード内でプレースホルダーを検索し、希望の内容に置き換えることができます:
$LayoutHTML = str_replace("__MyText__","Mein Text",$LayoutHTML);
CMSは$LayoutHTML内で__MyText__を検索し、プレースホルダーをMein Textに置き換えます。
HTMLとプレースホルダーを組み合わせる
プレースホルダーは、通常のHTML構造内で使用できます。例えば、HTMLセクションに次のコードを記入します:
<h1>__MyText__</h1>
PHPセクションでは置き換えを追加します:
$LayoutHTML = str_replace("__MyText__","Meine Überschrift",$LayoutHTML);
レンダリングプロセス中に、次のように生成されます:
<h1>Meine Überschrift</h1>
1つのページセクションに複数のプレースホルダー
同じ原理は、より広範なHTMLセクションでも適用されます。例えば、見出しと説明を別々のプレースホルダーとして定義できます:
<section>
<div class="container">
<h2>__MyHeadline__</h2>
<p>__MyDescription__</p>
</div>
</section>
PHPコード内で、両方の内容を独立して設定します:
$LayoutHTML = str_replace("__MyHeadline__","Unsere Leistungen",$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__","Hier finden Sie eine Übersicht unserer Leistungen.",$LayoutHTML);
完成したHTMLコードには、両方のプレースホルダーの代わりに挿入されたテキストが含まれています:
<section>
<div class="container">
<h2>Unsere Leistungen</h2>
<p>Hier finden Sie eine Übersicht unserer Leistungen.</p>
</div>
</section>
HTML構造とPHPロジックをできるだけ分ける
技術的には、PHPを使用して完全なHTML構造を直接$LayoutHTMLに挿入できます:
$LayoutHTML = str_replace("__MyContent__","<h2>Meine Überschrift</h2><p>Mein Text</p>",$LayoutHTML);
ただし、大きな内容の場合は、HTMLをHTMLセクション内で編集可能な構造として維持し、プレースホルダーを使用する方が良いでしょう。HTMLコードの例:
<section>
<h2>__MyHeadline__</h2>
<p>__MyText__</p>
</section>
対応するPHPコードは、必要な値のみを置き換えます:
$LayoutHTML = str_replace("__MyHeadline__","Meine Überschrift",$LayoutHTML);
$LayoutHTML = str_replace("__MyText__","Mein Text",$LayoutHTML);
最終的な顧客は、通常のCMSエディタを介して間隔を変更したり、見出しを編集したり、HTMLセクションを移動したり、デザインを調整したり、ページセクションを編集したりできます。それによりPHPプログラムロジックを変更する必要はありません。
独自のPHP関数を定義する
PHPコード内で独自の関数を作成できます。例えば:
function MyExampleFunction() {
return "Hello World";
}
関数は、ページ呼び出し中に複数回定義されないように注意してください。これは同じ関数名が同時にメインページ、ヘッダー、埋め込まれたモジュール、ページセクション、またはフッターに存在する場合に発生することがあります。
独自のPHP関数にはできるだけ明確な名前を選択してください。関数の重複定義はPHPでエラーを引き起こします。
プロジェクト固有の関数名は次のようになります:
function MyProjectCreateCustomerText() {
return "Customer";
}
関数定義の前に既存の関数を確認する
代わりにfunction_exists()を使用して、関連する関数がすでに定義されているかどうかを確認できます:
if(!function_exists("MyProjectCreateCustomerText")) {
function MyProjectCreateCustomerText() {
return "Customer";
}
}
bluetronix PHP関数を使用する
PHPコードセクションでは、bluetronix CMSによって提供されているPHP関数も使用できます。例として、BlueSMTPMail()を使用したbluetronix SMTPシステムによるEメール送信があります:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$ImageInMail,$MailPlaceholderReplacement,$FormEntry);
必要なパラメータをPHPコード内に設定できます。例えば:
$From = "info@example.com";
$To = "customer@example.com";
$Subject = "Test E-Mail";
$TextContent = "Hello World";
その後、Eメール送信のための中心的な関数を使用できます。完全な呼び出しには、他の必要なパラメータも適切に設定する必要があります。このようにして、基本的なCMS機能であるSMTP送信を再度プログラムする必要はありません。
要約
独自のPHPコードはbluetronix CMSによって直接実行されます。追加のPHPタグはPHPコードエディタには不要です。$LayoutHTMLには、現在生成されているページのHTMLコードが含まれており、独自のプレースホルダーを動的コンテンツに置き換えることができます。
HTML構造は可能な限りHTMLエリアで作成し、PHPでプレースホルダーを置き換えてください。これにより、最終顧客は通常のCMSエディターでレイアウトを引き続き編集でき、プログラムロジックは分離されたままになります。
FAQ
お客様からよくある質問
独自のPHPコードに開発者アクセスが必要ですか?
はい。CMSページ内で独自のPHPコードを使用するには、bluetronix CMSへの開発者アクセスが必要です。
サンプルのPHPコードはどこにありますか?
モジュール → PHPサンプルの下にあるサンプルページを開き、PHPコードを選択してください。
PHPコードエディターに<?phpと?>を入力する必要がありますか?
いいえ。エディターは、登録された命令をすでにPHPコードとして実行します。あなたは直接命令を書きます。たとえば、print "Hello World";。
exit;を使用するとどうなりますか?
exit;はこの時点でPHPの実行を終了します。これにより、CMSサイトのレンダリングプロセスも停止し、ヘッダー、ページコンテンツ、フッターはその後生成されなくなります。
$LayoutHTMLは何に使われますか?
$LayoutHTMLは、レンダリングプロセス中に現在生成されているページのHTMLコードを含む。PHPを用いて、ここでコンテンツを検索し、たとえばstr_replace()で独自のプレースホルダーを置き換えることができます。
動的なコンテンツをHTMLに追加するにはどうすればいいですか?
HTMLコード内で例えば__MyText__を設定し、このプレースホルダーをPHPコード内で$LayoutHTMLの中でstr_replace()を使って置き換えます。
PHPプレースホルダーを自動翻訳と組み合わせることはできますか?
はい。PHPプレースホルダーとOur Servicesのような翻訳マークを一緒に使用できます。翻訳は後でレンダリングプロセス中に行われます。
なぜHTMLとPHPを分けておくべきですか?
そうすることで、最終顧客は通常のエディターでHTMLレイアウトをあとで編集でき、プログラムロジックはPHPエリアに別れて留まります。
二重定義されたPHP関数をどう避ければいいですか?
一意の関数名を使用してください。さらに、function_exists()を使用して、関数がすでに存在するかを確認することができます。
既存のbluetronix PHP関数を使用できますか?
はい。PHPコードエリアではCMS関数も利用可能で、たとえばBlueSMTPMail()を使用してメールを送信できます。必要なパラメーターを適切に設定する必要があります。