繁体   English   中英

Joomla 3:如何覆盖K2管理模板?

[英]Joomla 3: how to override K2 admin templates?

在Joomla 3中,我需要根据类别为K2文章指定不同的管理模板,以便能够指定不同的额外字段,并使内容贡献者更轻松地添加项目。

我以为我找到了理想的解决方案,但它是几年前为较早版本的Joomla编写的。 我确实联系了作者,几年前他承认写了这篇文章,此后就不再使用Joomla,也无法为我提供建议。

它与覆盖前端k2模板非常相似。 这是描述它的文章:

http://getk2.org/documentation/tips-a-tricks/221-custom-admin-templates-and-calling-specific-extra-field-data

但是,当我这样做并修改类别的管理模板时,与默认设置没有任何变化。 我的想法是,这段代码中的某些修改文件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的自定义管理模板时,我仍然一无所获。 它继续使用默认值。

您不仅可以创建其他多余的组,然后将正确的组分配给正确的类别吗?

如果您修改k2核心文件,则任何更改都会在更新时被擦除,而使用新的一键式更新很可能会进行更新。

您应该能够使用标准模板替代(即复制)替代标准管理视图

/administrator/components/com_k2/views/category/default.php

/administrator/templates/YOUR_ADMIN_TEMPLATE/html/com_k2/category/default.php

如果您希望它们在不同类别中有所不同,那为什么不创建前端登录名,然后对不同类别使用不同的模板,并以标准方式覆盖它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM