Joomla在null上调用成员函数get()

时间:2017-01-23 10:31:57

标签: php joomla sass

我的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";

这有效,但现在编译器永远在线。

我该怎么做才能纠正这个问题?

2 个答案:

答案 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";
    }