In a previous post, I presented the Taxonomy Factory and a way of retrieving taxonomies and keywords from Tridion.
In this post, I will present more functionality about retrieving content tagged against a certain Keyword.
All these methods return a list of TcmUris representing Components or Pages that are tagged with the given Keyword.
Method GetRelatedContent is the simplest of these methods, and it returns the TcmUris of all items that are directly tagged with the given Keyword. The implementation uses the Tridion.ContentDelivery.Taxonomies.TaxonomyRelationManager to retrieve the related content:
Method GetRelatedContentBySchema returns only Component TcmUris, which are tagged with the given Keyword and which are also on the given Schema title. The method uses the GetTaxonomyContent method on the TaxonomyRelationManager that also accepts a Criteria object. We are passing in a SchemaTitleCriteria to restrict the result set.
Finally, method GetRelatedContentBySchemaAndMetadata returns Component TcmUris that are tagged with the given Keyword and are also on a given Schema title and have the given custom meta field and value. The method creates an AndCriteria between a SchemaTitleCriteria and a CustomMetaValueCriteria and then passes the AndCriteria to the GetTaxonomyCriteria method:
These simple methods provide very powerful querying capabilities for dynamic content, which I happen to use extensively in my last 3 projects (all in DD4T context).
In this post, I will present more functionality about retrieving content tagged against a certain Keyword.
string[] GetRelatedContent(IMyKeyword keyword); string[] GetRelatedContentBySchema(IMyKeyword keyword, string schemaTitle); string[] GetRelatedContentBySchemaAndMetadata(IMyKeyword keyword, string schemaTitle, string metadataKey, string metadataValue);
All these methods return a list of TcmUris representing Components or Pages that are tagged with the given Keyword.
Method GetRelatedContent is the simplest of these methods, and it returns the TcmUris of all items that are directly tagged with the given Keyword. The implementation uses the Tridion.ContentDelivery.Taxonomies.TaxonomyRelationManager to retrieve the related content:
private TaxonomyRelationManager manager; public MyTaxonomyFactory() { manager = new TaxonomyRelationManager(); } public string[] GetRelatedContent(IMyKeyword keyword) { Keyword tridionKeyword = new Keyword(keyword.TaxonomyId, keyword.Id); return manager.GetTaxonomyContent(tridionKeyword, false); }
Method GetRelatedContentBySchema returns only Component TcmUris, which are tagged with the given Keyword and which are also on the given Schema title. The method uses the GetTaxonomyContent method on the TaxonomyRelationManager that also accepts a Criteria object. We are passing in a SchemaTitleCriteria to restrict the result set.
public string[] GetRelatedContentBySchema(IMyKeyword keyword, string schemaTitle) { Criteria schemaCriteria = new SchemaTitleCriteria(schemaTitle); Keyword tridionKeyword = new Keyword(keyword.TaxonomyId, keyword.Id); return manager.GetTaxonomyContent(tridionKeyword, false, schemaCriteria); }
Finally, method GetRelatedContentBySchemaAndMetadata returns Component TcmUris that are tagged with the given Keyword and are also on a given Schema title and have the given custom meta field and value. The method creates an AndCriteria between a SchemaTitleCriteria and a CustomMetaValueCriteria and then passes the AndCriteria to the GetTaxonomyCriteria method:
public string[] GetRelatedContentBySchemaAndMetadata(IMyKeyword keyword, string schemaTitle, string metadataKey, string metadataValue) { Criteria criteria = new AndCriteria( new SchemaTitleCriteria(schemaTitle), new CustomMetaValueCriteria(new CustomMetaKeyCriteria(metadataKey), metadataValue) ); Keyword tridionKeyword = new Keyword(keyword.TaxonomyId, keyword.Id); return manager.GetTaxonomyContent(tridionKeyword, false, criteria); }
These simple methods provide very powerful querying capabilities for dynamic content, which I happen to use extensively in my last 3 projects (all in DD4T context).
Comments