我的PHP知识很少。我知道我做错了什么,但是什么?
我正在将Joomla Master Bootstrap模板中的sass编译器添加到我自己的Joomla模板中。它有效,但不是应该的。我无法在后端打开或关闭它。 Masterbootstrap中的代码是:
include 'includes/params.php';
if ($params->get('compile_sass', '0') === '1') {
require_once "includes/sass.php";
}
在我的模板中,我没有params.php,但是/functions/tpl-init.php。我在那里添加了变量$ compile_sass。我的代码如下所示:
require_once __DIR__ . '/functions/tpl-init.php';
if ($params->get('compile_sass', '0') === '1') {
require_once "includes/html/sass.php";
}
不起作用。我收到错误:在null
上调用成员函数get()所以我改成了:
require_once __DIR__ . '/functions/tpl-init.php';
require_once "includes/html/sass.php";
这有效,但现在编译器永远在线。
我该怎么做才能纠正这个问题?
答案 0 :(得分:0)
要从模板外部获取模板参数,您需要执行此操作
模板外部的模板参数
$app = JFactory::getApplication('site');
$temp = $app->getTemplate(true);
$param = $temp->params->get('compile_sass', '0');
请记住Masterbootstrap模板应该是活动的。
要获取任何模板参数,您需要执行此操作
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query ->select('params')
->from('#__template_styles')
->where('`template` = ' . $db->q('masterbootstrap')) // Check Spelling of template
->where('client_id = 0'); // client_id = 0 for Site and client_id = 1 for Admin
$db->setQuery($query);
$params = json_decode($db->loadResult());
echo $params->compile_sass;
最好是使用templateDetails.xml文件在自己的模板中创建一个类似的参数,而不是依赖于外部模板。
答案 1 :(得分:0)
我得到了朋友的帮助。他在一分钟内解决了这个问题。这很简单......通常是在找到解决方案之后:
require_once __DIR__ . '/functions/tpl-init.php';
if ($compile_sass === '1')
{
require_once "includes/html/sass.php";
}