2017-07-16 44 views
0

我使用Joomla Component Builder來快速創建一些小組件。現在我創建簡單的目錄組件和時間來添加類別,因爲所有其他的想法似乎工作得很好,但有一個問題。將類別添加到Joomla 3中的組件

類別的所有代碼都創建得很好,我可以添加新的類別並保存在數據庫中,但是在編輯目錄項時沒有看到任何這些貓。 我嘗試通過在列表模式中添加catid到一些項目和類別顯示來找出問題出在哪裏以及簡單地對數據庫進行了更改,但在編輯模式下,組合框仍然只有根元素。

我檢查\型號\表格\ item.xml文件,並找到現場描述:

<!-- Catid Field. Type: Category. (joomla) --> 
<field 
    type="category" 
    name="catid" 
    label="COM_SKYCATALOG_ITEM_CATID_LABEL" 
    extension="com_skycatalog.list" 
    required="true" 
    show_root="true" 
    description="COM_SKYCATALOG_ITEM_CATID_DESCRIPTION" 
    published="true" 
/> 

似乎一切ok。

回答

0

奇怪的是,標準的方式沒有工作,但我管理它的工作方式不同。我只需要添加自定義字段:

<?php 

// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 

JFormHelper::loadFieldClass('list'); 

/** 
* skycatalog Form Field class for the skycatalog component 
* 
* @since 0.0.1 
*/ 
class JFormFieldSkyCatalog extends JFormFieldList 
{ 
    /** 
    * The field type. 
    * 
    * @var   string 
    */ 
    protected $type = 'skycatalog'; 

    /** 
    * Method to get a list of options for a list input. 
    * 
    * @return array An array of JHtml options. 
    */ 
    protected function getOptions() 
    { 
     $db = JFactory::getDBO(); 
     $query = $db->getQuery(true); 
     $query->select('id, title'); 
     $query->from('#__categories'); 
     // Retrieve only published items 
     $query->where('#__categories.published = 1','and'); 
     $query->where("#__categories.extension like 'com_skycatalog.list'",'and'); 


     $db->setQuery((string) $query); 
     $messages = $db->loadObjectList(); 
     $options = array(); 

     if ($messages) 
     { 
      foreach ($messages as $message) 
      { 
        $options[] = JHtml::_('select.option', $message->id, $message->title); 
      } 
     } 

     $options = array_merge(parent::getOptions(), $options); 

     return $options; 
    } 
} 

和改變字段類型:

<field 
    type="Skycatalog" 
    name="catid" 
    class="inputbox" 
    label="COM_SKYCATALOG_ITEM_CATID_LABEL" 
    extension="com_skycatalog" 
    required="true" 
    description="COM_SKYCATALOG_ITEM_CATID_DESCRIPTION" 
    published="true" 
/> 

而現在它工作得很好。 那麼有很多東西需要改進,例如,添加類似樹木的填充等等。

0

您確定com_skycatalog.list是正確的嗎?檢查#__categories表以確保您使用正確的上下文。

您是否嘗試過使用categoryedit?

<field name="catid" 
    type="categoryedit" 
    extension="__EXTENSION__" 
    label="JCATEGORY" 
    required="true" 
    default="" 
/> 
+0

'categoryedit'顯示類別ID號,所以它看起來好,但'category'仍然只顯示根條目:( –