在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的自定义管理模板时,我仍然一无所获。它继续使用默认值。
答案 0 :(得分:0)
您是否可以创建不同的额外字段组,然后将正确的组分配到正确的类别?
如果你修改了k2核心文件,那么任何更改都将在更新中被删除,更新很可能会发生新的1次点击更新。
您应该能够使用标准模板覆盖覆盖标准管理视图,即 复制
/administrator/components/com_k2/views/category/default.php
到
/administrator/templates/YOUR_ADMIN_TEMPLATE/html/com_k2/category/default.php
如果您希望它们针对不同的类别有所不同,那么为什么不创建前端登录,然后为不同的类别使用不同的模板,并以标准方式覆盖它们。