我正在尝试在我使用的模板中创建一个选项,按文件夹列表字段选择先前指定的文件夹中的图像,并选择要在图像列表中禁用或不禁用的图像。出于此目的,我正在制作一个自定义表单字段,在joomla提供的主imagelist.php的基础上,由folderlist字段设置目录参数。
我遇到的问题是我无法通过管理员面板中的模板设置菜单访问前端模板参数。
我尝试了这段代码,但它不起作用:
$app = JFactory::getApplication('site');
$templ = $app->getTemplate(true);
$param = $templ->params->get('myparam');
$this->directory = $param;
它只返回管理员模板。
经过一些谷歌搜索后,我发现getApplication不是要从后端和前端管理员那里真正显示网站应用程序,而是可以选择运行一次应用程序,它可以& #39;在第一个实例之后改变。
有没有办法对joomla提供的参数执行请求,还是应该检查数据库中为所需(已使用)模板设置哪些参数?
(joomla I' m using的版本是3.3.0)
答案 0 :(得分:0)
我不确定这是我提供的最佳解决方案,但无法找到合适的joomla!提供了解决方案。对于我剥离数据以获取参数的方式,我确信有更好的方法来实现它。
以下代码会对数据库执行查询,并检索所需的前端模板参数以供以后使用:
//querying database for parameter
$db =& JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('params')); $query->from($db->quoteName('#__template_styles')); $query->where($db->quoteName('template'). ' = ' . $db->quote('myTemplate'). ' AND ' . $db->quoteName('params').' LIKE '.$db->quote('%myParameter%')); $db->setQuery($query); $param = $db->loadRow(); //extracting parameter from the result $paramTemp = explode(",",$param[0]); foreach($paramTemp as $k=>$p): $parm[$k] = explode(":",str_replace(array('"'," "),"",$p)); if($parm[$k][0] == "folderlistParameter") $parameter = $paramTemp[$k][1]; endforeach; //Passing option to filelist $this->directory = "slideshow/".$parameter;
$db =& JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('params')); $query->from($db->quoteName('#__template_styles')); $query->where($db->quoteName('template'). ' = ' . $db->quote('myTemplate'). ' AND ' . $db->quoteName('params').' LIKE '.$db->quote('%myParameter%')); $db->setQuery($query); $param = $db->loadRow(); //extracting parameter from the result $paramTemp = explode(",",$param[0]); foreach($paramTemp as $k=>$p): $parm[$k] = explode(":",str_replace(array('"'," "),"",$p)); if($parm[$k][0] == "folderlistParameter") $parameter = $paramTemp[$k][1]; endforeach; //Passing option to filelist $this->directory = "slideshow/".$parameter;
上面的代码放在:
之前
添加自定义参数的imagelist.php文件中的行。