未为 Joomla 类别自定义组件保存标签



我正在开发一个Joomla组件并使用Joomla Core中的类别。类别在 Joomla 管理中正确保存,但我无法向此类别添加标签。我做错了什么吗?还是我需要特定代码来向组件的类别添加标签?

如果要在类别中添加标记支持,则需要在内容类型表中添加条目。更多详情

下面是可以检查引用以将条目添加到内容类型表中的示例代码。将com_example更改为扩展。

<?php
/** @var JTableContentType $table */
$table  = JTable::getInstance('contenttype');
if ($table)
{
    $table->load(array('type_alias' => 'com_example.category'));
    if (!$table->type_id)
    {
        $data   = array(
            'type_title'        => 'Example Category',
            'type_alias'        => 'com_example.category',
            'table'             => '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},'
            . '"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}',
            'rules'             => '',
            'field_mappings'    => '
            {"common":{
            "core_content_item_id":"id",
            "core_title":"title",
            "core_state":"published",
            "core_alias":"alias",
            "core_created_time":"created_time",
            "core_modified_time":"modified_time",
            "core_body":"description",
            "core_hits":"hits",
            "core_publish_up":"null",
            "core_publish_down":"null",
            "core_access":"access",
            "core_params":"params", "core_featured":"null",
            "core_metadata":"metadata", "core_language":"language",
            "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey",
            "core_metadesc":"metadesc", "core_catid":"parent_id",
            "core_xreference":"null", "asset_id":"asset_id"},
            "special": {
            "parent_id":"parent_id",
            "lft":"lft",
            "rgt":"rgt",
            "level":"level",
            "path":"path",
            "extension":"extension",
            "note":"note"
            }
            }',
            'content_history_options' => '{"formFile":"administrator/components/com_categories/models/forms/category.xml",
            "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"],
            "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],
            "convertToInt":["publish_up", "publish_down"],
"displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},
            {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},
            {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},
            {"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}',
        );
        $table->bind($data);
        if ($table->check())
        {
            $table->store();
        }
    }
}

对于任何面临相同问题的人,我在经历了很多痛苦后解决了它。如果您在组件中使用 Joomla 类别,则没有这方面的文档。@irfan是正确的,但为了更容易,我觉得您可以在安装过程中向#__content_types添加一行。我所做的只是在joomla数据库中搜索com_newsfeed行。我在#__content_type内遇到了一个新闻源类别。我将type_title列替换为标题,type_alias列替换为my_extension.category。我能够保存标签。还要更改为路由器的路由器列名称。您需要放入sql文件中的整个SQL代码是

INSERT INTO `#__content_types` (`type_title`, `type_alias`, `table`, `rules`, `field_mappings`, `router`, `content_history_options`) VALUES
('Your Category', 'com_yourcomponent.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', 'YourComponentHelperRoute::getCategoryRoute', '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}')

注意:请记住更改代码中的组件名称。我给出了一个示例代码。

最新更新