如何在每个页面加载时不写file_put_contents

时间:2013-09-09 09:48:35

标签: php joomla templating output-buffering

我是PHP的新手(2周),我为Joomla创建了一个简单的脚本,它将保存我的管理区域选项中的参数,并将这些值放入CSS格式并保存文件。这是一个完整的CSS脚本,但这里有一个例子......

<?php
ob_start();
?>

<?php
////////////// Custom colours set from the admin panel
if ($this->params->get('templateColor'))
{
?>
/* <?php echo($template); ?>: Custom Auto-Generated CSS Colors As Set in Admin Template     Parameters */

body.site {
border-top: 3px solid <?php echo $this->params->get('templateColor');?>;
background-color: <?php echo $this->params->get('templateBackgroundColor');?>
}
<?php
}
?>
 <?php

$googlefontcss = ob_get_contents();
ob_end_clean();
file_put_contents('templates/'.$template.'/css/googlefonts.css', $googlefontcss);
?>

继承我的问题,所有这些东西都存储在一个帮助文件中,该文件是从我的索引文件中调用的,但这样做的结果是每次加载页面时都会创建CSS文件,而不是我调整和保存时我在后端的参数。当然,如果我获得了大量的流量,即使css文件非常短(比这里显示的更长),这也会给服务器带来压力。

作为一个新手,我不知道如何避免这个问题,而只是在更改和保存选项时才写入文件。有人建议更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我真的很困惑你为什么要这样做。首先,Joomla有一种方法可以保存模板的参数并使用它们,而您正在使用它们。它还有一种在模板中包含css文件的标准方法。如果您不想将addStyle()直接添加到模板文件,则可以使用插件轻松完成此操作。另外对于谷歌字体api,只需看看protostar是如何做到的。

我真的认为你需要看看模板在Joomla中是如何工作的 - 除非你使用其中一个包含的模板,否则它不会修改你的模板索引 - 在这种情况下复制它,你可以在2.5和3中单击一下。

如果你真的必须这样做,请制作一个插件。插件的JED中有很多例子可以在模板中包含文件。 http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/head-code