Tridion DynamicContent.Query Поиск по шаблону компонента

Я пытаюсь отобразить все презентации компонентов из базы данных брокера с определенным шаблоном компонента. Вот код запроса на данный момент:

 using Tridion.ContentDelivery.DynamicContent;
using Tridion.ContentDelivery.DynamicContent.Query;

ItemTemplateCriteria CTCriteria = new ItemTemplateCriteria(1111);
PublicationCriteria pubCriteria = new PublicationCriteria(10);
AndCriteria finalCriteria = new AndCriteria(pubCriteria, CTCriteria);

Response.Write("<h1>START</h1>");

Query q = new Query();
q.Criteria = finalCriteria;

string[] result = q.ExecuteQuery();

if (result != null && result.Length > 0)
{
    foreach (string r in result)
    {
        Response.Write("<h1>" + r + "</h1>");
    }
}
else {
    Response.Write("Result is null or 0-length.");
}
Response.Write("<h1>END</h1>");

Я продолжаю получать результаты null. У меня есть настройка динамической публикации контента в cd_storage_conf.xml и несколько презентаций компонентов, опубликованных в базе данных Broker.

Мое понимание от этот документ заключается в том, что я должен иметь возможность получить связанные URI-адреса компонентов используя этот подход.

Мои вопросы :

  1. Правильно ли я понимаю возможности класса Query?
  2. Я что-то пропустил, настройки и код?
  3. Есть ли другой способ получения контента брокера по шаблону компонента?

ИЗМЕНИТЬ

Дополнительная информация: Что касается ItemTemplateCriteria, я предположил, что он используется только для поиска записей по шаблону компонента. Я предположил, потому что есть другой класс критериев под названием PageTemplateCriteria. Пожалуйста, поправьте меня, если это предположение неверно.

ИЗМЕНИТЬ

Дополнительная информация: я проверил COMPONENTS, SCHEMA и TEMPLATES в базе данных брокера, но не нашли там опубликованные компоненты. По умолчанию в cd_storage_conf.xml публикуемый контент должен передаваться посреднику. Для справки вот мой конфиг:

 <Publication Id="57" defaultStorageId="brokerdb" cached="false">
    <Item typeMapping="ComponentPresentation" storageId="brokerdb" cached="false" />
    <Item typeMapping="BinaryMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="BinaryVariant" cached="true" storageId="brokerdb"/>
    <Item typeMapping="Binary" storageId="defaultFile" cached="true"/> 
    <Item typeMapping="ComponentMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="ComponentPresentationMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="ItemMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="LinkInfo" cached="true" storageId="defaultDataFile"/>
    <Item typeMapping="DynamicLinkInfo" cached="true" storageId="defaultDataFile"/>
    <Item typeMapping="Page" cached="true" storageId="defaultFile"/> 
    <Item typeMapping="PageMeta" cached="true" storageId="defaultDataFile"/>
    <Item typeMapping="Reference" storageId="brokerdb"/>
    <Item typeMapping="Schema" storageId="brokerdb"/>
</Publication>
4 голоса | спросил Ianthe the Duke of Nukem 28 32012vEurope/Moscow11bEurope/MoscowWed, 28 Nov 2012 09:31:07 +0400 2012, 09:31:07

1 ответ


0

Дважды проверьте свой cd_storage_conf.xml и базу данных, чтобы проверить, хранятся ли там элементы. Если ваши данные поступают в файловую систему, они не будут доступны для запросов.

В частности, я думаю, что ComponentPresentationMeta должен идти в БД, чтобы этот сценарий работал.

Также проверьте файл cd_licenses.xml, если срок его действия истек, если он есть (даже если cd_storage_conf.xml правильно), элементы окажутся в файловой системе.

ответил Chris Summers 28 32012vEurope/Moscow11bEurope/MoscowWed, 28 Nov 2012 16:17:44 +0400 2012, 16:17:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132