Posted by RTauson on July 22, 2008 at 8:09am
Hej !
Är nybörjade med Drupal, har valt att börja med Drupal 6.
Jag har skapat en egen content type med ett fält definerat med CCK.
Nu vill jag skapa en modul som hämtar fält värdet jag skapat med CCK.
Hur gör jag, har försökt med följande php kod.
Som ni kan se på koden försöker jag presentera fältvärder i ett block.
$block['content'] = $node->field_group_contact_info[0][view];
$block['content'] = $node->field_group_contact_info[$value['view']];
$block['content'] = $node->field_group_contact_info['view'];
ledsen om det här är en elementär fråga men jag har inte hittat ngt svar.
Comments
Views?
Kul att du hittat hit till svenska diskusionssgruppen!
Vill du beskriva närmare vad du vill göra med fältinnehållet? Ska det bearbetas (beräknas etc) eller bara visas upp?
I det senare fallet tar du förmodligen en omväg - det finns färdiga moduler för att dra fram enstaka värden ur nodtyper. Den kraftfullaste är (vad jag vet) Views, som låter dig (1) hämta ut noder från Drupals databas efter kriterier du bestämmer, (2) visa upp dem i exempelvis block, sidor och RSS-flöden, med (3) precis de fält du väljer ut. Den som är händig kan också skräddarsy mallar med HTML-taggar och CSS för att styra utseendet som man vill.
Views har inte ett rakt igenom intuitivt gränssnitt, men om du inte drar dig för att skriva PHP borde Views inte vara någon större match att komma in i.
//Johan Falk
Eget block
Tack för svar, vad jag egentligen vill åstakomma är att skapa en egen content type som i sin tur är aktiverad som en OG.
Vill skapa ett block som när användaren är på en node som är "kopplad" till en OG visar ett par fält som i sin tur är skapade med CCK på min OG node.
Tänker mig att lägga upp en egen content type typ "butik", vill till den skapa x antal fält för ansvarig, ansvarig titel, telefonnummer, email adress etc.
Vill sedan när en användare är inne på någon OG node visa ett block som visar kontakt information ifylld på OG noden.
Hoppas förklaringen är tydlig nog, känns inte som views är "rätt" verktyg, snarare panels med i och med att panels inte är klart för drupal 6 så återstår eget kodat block.
Är iofs bra eftersom det tvingar mig att sätta mig in i hur programmering av egna content typer och block skall gå till.
//Rickard Tauson
Modulen Sidecontent gör
Modulen Sidecontent gör detta, men den har enbart ett fält.
En lösning är att skapa ett custom block med lite PHP-kod i:
<?phpif (arg(0) == "node" && is_numeric(arg(1)) {
$node = node_load(arg(1));
if ($node) {
print $node->field_name[0]['value'];
}
}
?>
Du måse sedan skapa lite PHP-kod som kollar om noden som visas har fältet eller är av rätt nodtyp. Koden ovan kan också utökas för att kolla node->type.
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Tackar....
Tack för all hjälp, löste sig med ovanstående lösning.
Nackdelen med ovanstående
Nackdelen med ovanstående lösning är att data som folk lagt in inte filtreras för XSS t ex. Det blir säkrare så här:
<?phpif (arg(0) == "node" && is_numeric(arg(1)) {
$node = node_load(arg(1));
if ($node) {
print check_plain($node->field_name[0]['value']);
}
}
?>
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Viktigt påpekande! Drupal i
Viktigt påpekande! Drupal i sig har hög säkerhet men vill man är det inga problem att göra sin webb-plats precis så osäker man vill, t ex genom att skriva ut användargenererat material utan filtrering.
Är det en text med ett inmatningsformat kan man använda följande kod. Då formateras fältinnehållet precis som det görs i en vanlig node.
<?phpif (arg(0) == 'node' && is_numeric(arg(1)) {
$node = node_load(arg(1));
if ($node) {
print content_format('field_name', $node->field_name[0], 'default', $node);
}
}
?>