繁体   English   中英

从分类法中添加和删除Ektron内容项? (C#)

[英]Add and remove Ektron content items from taxonomies? (C#)

我在Ektron中存储了分配给分类法的内容项。 我正在尝试创建一种方法,允许我以编程方式更改分类法。 到目前为止,我已经通过ID找到了内容项,并且能够检索其分类法,但是我不确定如何更改它们。

var ektronItem = contentManager.GetItem((long) item.tctmd_id);
if (ektronItem != null) // item exists in Ektron
{
    var newTaxonomies = item.taxonomy_ids;

    var taxonomyAPI = new Taxonomy();
    var taxData = taxonomyAPI.ReadAllAssignedCategory(ektronItem.Id);

    foreach (var tax in taxData)
    {
        taxonomyAPI.RemoveTaxonomyItem(???);
        // here I'm trying to remove the content item from the taxonomy
    }
}

taxonomyAPI.RemoveTaxonomyItem()使用Ektron.Cms.TaxonomyRequest对象,但是我不确定如何创建此对象。 我也不确定这是否是我应该使用的方法。

如果有人想知道如何做,这是我想出的解决方案:

var contentManager = new Ektron.Cms.Framework.Content.ContentManager();
var criteria = new Ektron.Cms.Content.ContentCriteria(ContentProperty.Id, EkEnumeration.OrderByDirection.Ascending);
criteria.AddFilter(ContentProperty.FolderId, CriteriaFilterOperator.EqualTo, toUpdate.folder_id);
criteria.OrderByDirection = Ektron.Cms.Common.EkEnumeration.OrderByDirection.Descending;
criteria.OrderByField = Ektron.Cms.Common.ContentProperty.GoLiveDate;
criteria.FolderRecursive = true;
criteria.PagingInfo = new Ektron.Cms.PagingInfo(50, 1);

var ektronItem = contentManager.GetItem((long) item.tctmd_id);
if (ektronItem != null) // item exists in Ektron
{
    // update taxonomy in Ektron
    var taxIds = item.taxonomy_ids;

    var taxonomyAPI = new Taxonomy();
    var taxData = taxonomyAPI.ReadAllAssignedCategory(ektronItem.Id);

    var taxManager = new Ektron.Cms.Framework.Organization.TaxonomyItemManager();

    var taxCriteria = new TaxonomyItemCriteria();
    // create a taxonomy criteria of the item ID
    taxCriteria.AddFilter(TaxonomyItemProperty.ItemId, CriteriaFilterOperator.EqualTo, item.tctmd_id);
    // get all taxonomy items with item ID 
    var taxItems = taxManager.GetList(taxCriteria);
    // determine taxonomyItemType
    var type = taxItems.FirstOrDefault().ItemType;

    foreach (var tax in taxData)
    {                      
        // delete from old taxonomies
        taxManager.Delete(tax.Id, (long)item.tctmd_id, type);
    }

    foreach (var tax in taxIds)
    {
        // add to new taxonomies
        var taxonomyItemData = new TaxonomyItemData()
        {
            TaxonomyId = tax,
            ItemType = type,
            ItemId = (long)item.tctmd_id
        };
        try
        {
            taxManager.Add(taxonomyItemData);
        }
        catch (Exception ex)
        {

        }
    }
}

暂无
暂无

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

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