在 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标签
CMS已经将PHP代码作为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
在bluetronix 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__,并将占位符替换为我的文本。
将HTML和占位符结合起来
你可以在正常的HTML结构中使用占位符。例如在HTML区域输入以下代码:
<h1>__MyText__</h1>
在PHP区域中补充替换:
$LayoutHTML = str_replace("__MyText__","Meine Überschrift",$LayoutHTML);
在渲染过程中,结果将是:
<h1>Meine Überschrift</h1>
在一个页面部分中使用多个占位符
相同的原理可以在更复杂的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逻辑
从技术上讲,你可以直接在$LayoutHTML中用PHP插入完整的HTML结构:
$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代码区域,你还可以使用bluetonix CMS提供的PHP函数。一个例子是通过bluetonix SMTP系统发送电子邮件的BlueSMTPMail():
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";
然后你可以使用发送电子邮件的中央功能。为了完全调用,还需正确设置其他所需的参数。这样,你不需要再次自行编写基本的CMS功能,如SMTP发送。
总结
自定义PHP代码由bluetronix CMS直接执行;在PHP代码编辑器中不需要额外的PHP标签。$LayoutHTML包含当前生成页面的HTML代码,并允许你用动态内容替换自定义占位符。
尽量在HTML区域中构建你的HTML结构,并通过PHP替换占位符。这样最终用户可以在正常的CMS编辑器中继续编辑布局,同时程序逻辑保持分离。
常见问题
客户常问我们的问题
我需要开发者访问权限来使用自己的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代码中通过str_replace()在$LayoutHTML中替换此占位符。
我可以将PHP占位符与自动翻译结合使用吗?
可以。你可以同时使用PHP占位符和翻译标记,例如Our Services。翻译将在渲染过程中进行。
我为什么要将HTML和PHP分开?
这样最终用户可以在正常编辑器中编辑HTML布局,而程序逻辑则保持在PHP区域中。
我如何避免重复定义PHP函数?
使用唯一的函数名称。你还可以在定义之前使用function_exists()检查函数是否已存在。
我可以使用现有的bluetronix PHP函数吗?
可以。在PHP代码区域中也有CMS函数可用,例如用于发送邮件的BlueSMTPMail()。所需的参数需要相应设置。