繁体   English   中英

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

[英]Tags not saving for Joomla category custom component

我正在开发 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 列替换为我的 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"}]}')

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

暂无
暂无

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

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