所以我有这段代码:
$template_file = 'template.tpl.php';
ob_start(); // Start output buffering
include "./$template_file"; // Include the template file
$contents = ob_get_contents(); // Get the contents of the buffer
ob_end_clean(); // End buffering and discard
return $contents;
这就是template.tpl.php的样子:
<?=translate_string('A message to display to user')?>
然而,当我检查$ contents的内容时,不是显示'A message to display to user'
而是显示<?=translate_string('A message to display to user')?>
...即。它完整地显示PHP代码而不是执行PHP代码,只返回执行代码的输出......
有什么可能导致这种情况的想法吗?
我正在使用Drupal 6
看起来像short_open_tag设置是On ...还有其他任何可能吗?
如果我仍然可以使用<?=
表示法而不使其<?php
等,那将会很棒...因为它被广泛使用
看起来jszobody不再有进一步的贡献,如果有人知道除了short_open_tag设置之外可能会导致什么,请随时回答
thx to jszobody for short_open_tag贡献
答案 0 :(得分:2)
您在模板代码中使用PHP短标签。如果您的服务器上没有启用它们,则不会被PHP解析,而是将其视为纯文本。
见这里:http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
我将您的模板更改为:
<?php echo translate_string('A message to display to user'); ?>