【发布时间】:2014-02-06 02:31:18
【问题描述】:
在 Joomla 3 中,我需要根据类别为 K2 文章指定不同的管理模板,以便能够指定不同的额外字段,并使内容贡献者更容易添加项目。
我以为我找到了完美的解决方案,但它是几年前为旧版本的 Joomla 编写的。我确实联系了作者,他承认几年前写过它,此后不再使用 Joomla 并且无法为我提供建议。
它与覆盖前端 k2 模板非常相似。这是描述它的文章:
但是,当我这样做并修改类别的管理模板时,默认值没有任何变化。我的想法是,这段代码中修改了文件 administrator/components/com_k2/views/item/view.html.php 的内容与 Joomla v.3 不兼容:
//Look for specific admin template file
jimport('joomla.filesystem.folder');
$componentPath = JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'templates';
$componentFolders = JFolder::folders($componentPath);
$db =& JFactory::getDBO();
$query = "SELECT template FROM #__templates_menu WHERE client_id = 0 AND menuid = 0";
$db->setQuery($query);
$defaultemplate = $db->loadResult();
if (JFolder::exists(JPATH_SITE.DS.'templates'.DS.$defaultemplate.DS.'html'.DS.'com_k2'.DS.'templates'.DS.'admin'.DS.$item->catid))
{
$this->_addPath('template',
JPATH_SITE.DS.'templates'.DS.$defaultemplate.DS.'html'.DS.'com_k2'.DS.'templates'.DS.'admin'.DS.$item->catid);
}
我已经知道我的数据库中没有名为“templates_menu”的表。这立即引发了错误。我认为它应该是 template_styles",并且列很可能应该是 client_id 和 id。进行这些更改至少可以消除错误。
此外,我认为“if”语句中的路径不正确。不需要第二个“模板”目录。
但是,即使在进行了这些更改之后,我似乎也没有在管理员端拉入我的新模板。
我希望 Joomla/PHP 专家(我不是)可以在这里权衡。我对路径和表名的假设可能完全错误。
编辑:在进一步研究这一点时,我决定继续创建原始海报代码中指示的表。现在我的数据库中有一个名为 e758z_templates_menu 的表。
但是,当我试图让 Joomla 使用连接到类别 ID 的自定义管理模板时,我仍然一无所获。它继续使用默认的。
【问题讨论】:
标签: php templates joomla joomla-k2