Добавлять и удалять элементы контента Ektron из таксономий? (С#)

У меня есть элементы контента, хранящиеся в Ektron, которые назначены таксономиям. Я пытаюсь создать метод, который позволит мне программно изменять таксономии. Пока я нахожу элемент контента по идентификатору и могу получить его таксономии, но я не знаю, как их изменить.

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, но я не уверен, как его создать. Я также не уверен, что это тот метод, который мне следует использовать.


person Erica Stockwell-Alpert    schedule 02.09.2015    source источник


Ответы (1)


Если кто-то еще хочет знать, как это сделать, вот решение, которое я придумал:

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)
        {

        }
    }
}
person Erica Stockwell-Alpert    schedule 02.09.2015
comment
Я создаю новый контент на С#. Как я могу проверить, существует ли контент с заголовком, чтобы не создавать новый контент с нижним индексом в конце заголовка? - person Si8; 20.10.2015