Posted by misc on March 26, 2009 at 1:11pm
Vid en sökning på en sajt som jag bygger så skulle jag behöva skriva ut alla de taxonomy terms som varje artikel har, vilka sätt finns det att göra detta på ett enkelt sätt?
Vid en sökning på en sajt som jag bygger så skulle jag behöva skriva ut alla de taxonomy terms som varje artikel har, vilka sätt finns det att göra detta på ett enkelt sätt?
Comments
Hej
Kan du vara lite mer specifik på vad du vill göra?
Lösningar:
Om artiklarna är en egen innehållstyp och du kör cck kan du ställa in taxonomy efter ett cck-fält sedan kan du välja att visa fältet när noden ses som teaser. Kolla cck tilläggsmodulen content taxonomy.
Använd Views och skapa ett block. Ställ in så att taxonomi-termer för din innehållstyp visas. Du kan också kolla på views cloud modulen om du vill ha det i ett annat format.
Hoppas att det hjälpte.
Viktor Miranda | NodeOne
Viktor Miranda | Blog
Content Taxonomy eller mallfil
Hej Mikke!
När det gäller Viktors lösning 1 skulle jag nog säga att det spelar ingen roll för sökresultatsidan vad man ger fälten för Display setting för teasers. Det är inte vanliga teasers man ser på söksidan. Däremot finns det en Sök-flik under Display settings där man kan ange vilka fält som ska indexeras och vilka som ska visas i resultaten. Men det kräver som Viktor skriver att du använder Content Taxonomy för att koppla termerna till noderna.
Om man vill använda standardsystemet för taxonomier, eller om man föredrar att styra visningen med en mallfil, så kan man använda filen
search-result.tpl.phpsom man kopierar till sitt tema på sedvanligt sätt. Högst upp i filen står en massa tillgängliga variabler angivna, men det som inte nämns där är variabeln$result, vilket är en array som bland annat innehåller$result['node'],$result['node']->taxonomyosv.Lykka till!!!
/ Hannes Lilljequist – SthlmConnection
Tack
Ah , tack.
Hannes - $result var precis vad jag behövde, tack!
så här gjorde jag
// $result['node']->taxonomy har info om alla taxonomiers id som ingår, samla dem i en ny array,
$taxNumberArray = $result['node']->taxonomy;
$termKeys = array_keys($taxNumberArray);
//lagra namnen på taxonomierna i en ny array, termarray
foreach ( $termKeys as $tid ) {
$termarray[] = $result['node']->taxonomy[$tid]->name;
}
//skriv ut dem med ett komma och ett mellanslag emellan
print implode(", ", $termarray);
Förresten - finns det någon dokumentation kring vad som mer finns tillgängligt att använda sig av?
/* Mikke Schirén, https://digitalist/ */
preprocess-funktioner
Det verkar inte som det finns så mycket dokumentation om det förutom det som står i kommentarerna högst upp i filen. Det säkraste sättet att få veta vilka variabler som finns är att undersöka variabeln
$variablesi mallens motsvarande preprocess-funktion. (Eller: använd en debugger och sätt en breakpoint i mallen.)Kan inte säga exakt på rak arm, men du bör kunna skapa en funktion som heter typ
{temanamn}_preprocess_search_result(&$variables). $variables är en array som innehåller det som blir till enskilda variabler i mallfilen. Så du kan dels undersöka den variabeln och dels modifiera den om du vill.Din kod ovan bor kanske helst i en preprocess-funktion faktiskt, så du kan alltså skapa t ex
$variables['mina_taxonomier']och sen skriva ut dem i mallen som$mina_taxonomier. Snyggt och prydligt! Drupalgudarna ler./ Hannes Lilljequist – SthlmConnection
$variables var mycket
$variables var mycket användbar, den öppnar upp en hel dörrar. preprocess-funktion för det bli :-)
/* Mikke Schirén, https://digitalist/ */