我可以修改两个文件
header.tpl 和 product.tpl
我无法访问任何控制器或模型文件
出于搜索引擎优化的目的,我试图在产品页面上修改以下元数据。
<meta name="description" content="<?php echo $description; ?>" />
目前$description
没有任何输出。但是,在我的product.tpl
上,我有一个变量<?php echo $heading_title ?>
,它实际上是我希望在标题meta
数据中包含的文字。
这是否可以在不访问模型/控制器的情况下实现,或者我只是在浪费时间?
答案 0 :(得分:2)
不那么漂亮但功能性的解决方案
<?php echo $header = preg_replace('/<meta name="description" content="" \/>/', '<meta name="description" content="' . $heading_title . '" \/>', $header); ?>
答案 1 :(得分:0)
如评论中所述:一旦将某些内容发送到浏览器(或任何其他输出),就无法在服务器端进行更改。
如果您能够使用preg_replace()
等编辑标题的内容,那么最佳解决方案是在之前设置变量,包括标题。
所以,而不是像这样的东西:
include "header.tpl";
$data = get_from_db ();
echo do_some_processing ($data);
include "footer.tpl";
在开始向浏览器输出任何内容之前,您将移动所有处理,这完全消除了必须更改已发送内容的悖论。哪个应该给你一个类似的代码:
// Do all of the processing first.
$data = get_form_db ();
$output = do_some_processing ();
// Then, when all of the processing is done, output to browser.
include "header.tpl";
echo $output;
include "footer.tpl";
它还有一个额外的好处,就是让您的PHP代码更多更易于阅读,从而更容易维护。即使在这个小代码示例中,您也可以看到正确分离的差异。