2015-03-30 22 views
6

Ho utilizzato il metodo GetTags() sotto umbraco.cms.businesslogic.Tags.Tag per ottenere tutti i tag in un gruppo o nodo.Umbraco - Ottieni tutti i tag utilizzati in un nodo/gruppo

var tags = umbraco.cms.businesslogic.Tags.Tag.GetTags("default"); 

Ma con umbraco.cms.businesslogic.Tags.Tag essere obsoleta adesso, c'è qualche altra alternativa migliore?

Inoltre, la nuova libreria offre un'interrogazione basata su tag dei nodi?

risposta

9

Ok, quindi Umbraco 7 ha la nuova libreria TagService per gestire i tag.

per ottenere tutti Tag utilizzati,

var service = UmbracoContext.Application.Services.TagService; 
var blogTags = service.GetAllTags("default"); 

Per ottenere contenuti specifici tag GetTaggedContentByTag() è il metodo esposto,

var sports = service.TagService.GetTaggedContentByTag("Gaming"); 

restituisce il TaggedEntity lista e la TaggedEntity oggetto con EntityId proprietà.

Source Cortesia: Jimbo Jones

+1

E 'anche utile per prendere un'occhiata al nuovo servizio tag: https: // github. com/umbraco/Umbraco-CMS/blob/7.1.5/src/Umbraco.Core/Servizi/TagService.cs –

+1

È consigliabile utilizzare Umbraco Helper per frontend, i servizi non utilizzano la cache e interrogano direttamente il DB. –

1

ho trovato limitazioni con il TagService e hanno utilizzato il seguente per ottenere un elenco di tag da uno specifico insieme di nodi. L'interrogazione dei tag da parte del gruppo non ha funzionato per me.

var pages = parentpage.Children; 
var allNodesWithTags = pages.Where("tags != \"\""); 

List<string> taglist = new List<string>();  
foreach (var node in allNodesWithTags) 
{ 
    taglist.AddRange(node.tags.ToString().Split(',')); 
} 

taglist = taglist.OrderBy(q => q).ToList(); 

E 'quindi semplice per produrre un elenco dei tag dei nodi figli:

@foreach (string tag in taglist.Distinct()) 
{ 
    <li><a href="#" class="">@tag</a></li> 
} 
4

Non c'è bisogno di chiamare il servizio di tag.

In umbraco 7 è possibile utilizzare questo:

var tags = Umbraco.TagQuery.GetAllTags(); 

o

var tags = Umbraco.TagQuery.GetAllTags(group); 

Ed è possibile utilizzare

var mycontents = Umbraco.TagQuery.GetContentByTag("mytag") 

Per recuperare i dati