Доставка Контента — Как Получить Все Компоненты, Кроме Определенного Идентификатора Tcm, С Помощью Criteria Api

  • Автор темы Teivar
  • Обновлено
  • 23, Oct 2024
  • #1

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

Это мой код сейчас

 AndCriteria totalCriteria = null;//this will be used for combining all kind of criteria 
PublicationCriteria pubCriteria = new PublicationCriteria(myPublicationId);
ItemSchemaCriteria IsFVideSchema = new ItemSchemaCriteria(MySchemaID);
ItemTypeCriteria IsComponent = new ItemTypeCriteria(16);

//Here i want to include one more critera, so that ignore this TCM ID ("tcm:mypub-ItemId-16); 
//I want to get all the recent components by schema, it's working fine. But i already have one of component via component presentations //earlier, because of this reason i have to get top 4 components, but query including the one which i already have. 

TaxonomyKeywordCriteria taxonomyKeywordCriteria = new TaxonomyKeywordCriteria(catgoryId, keyWordId, false);
SortParameter sortParameter = new SortParameter(SortParameter.ItemLastPublishedDate, SortParameter.Descending);

totalCriteria = new AndCriteria(pubCriteria, IsFVideSchema );
totalCriteria = new AndCriteria(totalCriteria, IsComponent);
totalCriteria = new AndCriteria(totalCriteria, taxonomyKeywordCriteria);
query.Criteria = totalCriteria;
query.AddSorting(sortParameter);
PagingFilter Pagefilter = new PagingFilter(0, limit); //limit is 4 here
query.SetResultFilter(Pagefilter);
string[] ItemUris = query.ExecuteQuery();
 

Пожалуйста, кто-нибудь может мне помочь? Я просто хочу получить 4 компонента, исключая этот идентификатор tcm. Мне придется игнорировать компонент в Tridion Query, иначе я снова получу тот же компонент. Есть ли способ?

#content-delivery #2013-sp1 #dd4t #query

Teivar


Рег
19 Mar, 2015

Тем
78

Постов
207

Баллов
617
  • 26, Oct 2024
  • #2

Для достижения желаемого результата необходимо использовать следующие два дополнительных условия:

  1. LimitFilter — ограничить количество компонентов до 4.
  2. NotInCriteria — исключить уже имеющийся компонент.

Дайте мне знать, если у вас все еще возникают какие-либо проблемы.

Обновленный код будет выглядеть примерно так:

 AndCriteria totalCriteria = null;//this will be used for combining all kind of criteria 
PublicationCriteria pubCriteria = new PublicationCriteria(myPublicationId);
ItemSchemaCriteria IsFVideSchema = new ItemSchemaCriteria(MySchemaID);
ItemTypeCriteria IsComponent = new ItemTypeCriteria(16);

//Here i want to include one more critera, so that ignore this TCM ID ("tcm:mypub-ItemId-16); 
//I want to get all the recent components by schema, it's working fine. But i already have one of component via component presentations //earlier, because of this reason i have to get top 4 components, but query including the one which i already have. 
NotInCriteria notInCriteria = new NotInCriteria("<your component details>")

TaxonomyKeywordCriteria taxonomyKeywordCriteria = new TaxonomyKeywordCriteria(catgoryId, keyWordId, false);
SortParameter sortParameter = new SortParameter(SortParameter.ItemLastPublishedDate, SortParameter.Descending);

totalCriteria = new AndCriteria(pubCriteria, IsFVideSchema );
totalCriteria = new AndCriteria(totalCriteria, IsComponent);
totalCriteria = new AndCriteria(totalCriteria, taxonomyKeywordCriteria);
totalCriteria = new AndCriteria(totalCriteria, notInCriteria);

query.Criteria = totalCriteria;
query.AddSorting(sortParameter);
LimitFilter limitfilter = new LimitFilter(4); //limit is 4 here
query.SetResultFilter(limitfilter);
string[] ItemUris = query.ExecuteQuery();
 
 

Wolkill


Рег
23 Jan, 2013

Тем
66

Постов
173

Баллов
533
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно