Jestem całkiem nowy w Tridion i muszę zaimplementować funkcjonalność, która pozwoli redaktorowi treści utworzyć komponent i przypisać do niego wiele zakresów dat (dostępnych dat). Należy je przesłać z brokera w celu zapewnienia funkcji wyszukiwania.Format przechowywania metadanych Tridion 2009 w brokerze
Początkowo wymagało to tylko jednej daty rozpoczęcia i zakończenia, a zatem zostały zaimplementowane jako indywidualne pola metadanych.
Proponuję użyć osadzonego schematu w polu metadanych "dostępne daty" schematu, aby umożliwić przypisanie wielu dat rozpoczęcia i zakończenia.
Jednakże, pole jest teraz umożliwiając wiele wartości danych są przechowywane w pośrednika w przecinek oddziela wartości w kolumnie „KEY_STRING_VALUE” raczej niż data w kolumnie „KEY_DATE_VALUE”, jak to było gdy było dozwolone są tylko pojedyncze wartości początkowe i końcowe.
np.
KEY_NAME | KEY_STRING_VALUE
data_końcowa | 2012-04-30T13: 41: 00, 2012-06-30T13: 41: 00
data początkowa | 2012-04-21T13: 41: 00, 2012-06-01T13: 41: 00
To powoduje teraz problemy z moim zapytaniem brokera, ponieważ nie mogę już używać prostej logiki zapytań do pobierania pozycji wymaganych do wyszukiwania na podstawie dat.
Zanim zacznę pisać logikę C#, aby przetworzyć te rozdzielone przecinkami daty i wyszukać w oparciu o te, zastanawiałem się, czy ktoś miał podobne wymagania/doświadczenia w przeszłości i wdrożył to w inny sposób, aby zmniejszyć ilość konieczne jest parsowanie kodu i użycie kwerendy brokera w celu dokończenia wyszukiwania.
Zajmuję to na Tridion 2009, ale stosując 5,3 Broker (ze względów starszych) więc zapytanie obecnie wygląda następująco (dla pojedynczych terminach rozpoczęcia/zakończenia):
query.SetCustomMetaQuery((KEY_NAME='end_date' AND KEY_DATE_VALUE>'" + startDateStr + "') AND (ITEM_ID IN(SELECT ITEM_ID FROM CUSTOM_META WHERE KEY_NAME='start_date' AND KEY_DATE_VALUE<'" + endDateStr + "')))";
Każda pomoc jest mile widziane.
Nigdy nie korzystałem z Brokera 5.3, czy pozwala na słowo kluczowe "IN"? –
Tak, zapytanie, które dodałem powyżej, zawiera przykłady użytego słowa kluczowego "IN", które jest świetne dla pojedynczych wartości, ale wiele wartości nie jest już przechowywanych jako daty, ale ciąg znaków rozdzielonych przecinkami (jako wartość ciągu znaków)) co oznacza, że nie mogę już wyszukiwać według daty, tak jak poprzednio. –
Tak jest, przykro mi, że tego nie zauważyłem i to i tak by mi nie pomogło, przepraszam! –