簡體   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