Posted by chrisronn on January 27, 2012 at 9:29pm
Hej!
Har skapat en egen content type i Drupal 7 som bland annat innehåller ett fil-fält med namnet field_videofile. Sedan har jag skapat en anpassad node template så att jag ska kunna skräddarsy visningen av innehållet för just denna innehållstyp.
Jag har listat ut att jag kan skriva enligt nedan för att få ut en formaterad URL till filen (om jag har valt "URL till fil" i fältformatet):
<?php
print render($content['field_videofile']);
?>Men hur gör jag om jag bara vill ha tag på det aktuella filnamnet?

Comments
Ok, då har jag läst på lite
Ok, då har jag läst på lite mer och är ganska nära nu...
Jag kom fram till att jag måste skapa en "theme function" i template.php för det fält jag vill ha mer specifik information från. Så här ser min nya funktion ut:
function talata_field__field_videofile__video($variables) {
$output = '';
$output = $variables['node']->field_videofile['und'][0]['filename'];
return $output;
}
Nu får jag filnamnet som output på sidan, precis som jag vill ha det. Men jag får också ett störigt felmeddelande:
"Notice: Undefined variable: node i talata_field__field_videofile__video() (rad 92 av .../sites/all/themes/talata/template.php).
Notice: Trying to get property of non-object i talata_field__field_videofile__video() (rad 92 av .../sites/all/themes/talata/template.php)."
Någon som kan se var jag klantar till det?
It's hard to find. I found it hard. Oh well, whatever, nevermind...
Jaha, efter lite
Jaha, efter lite experimenterande kom jag fram till att man kan få ut filnamnet direkt på sidan utan att skriva någon funktion. Så här:
<?php
print $node->field_videofile['und'][0]['filename'];
?>
Frågan som dröjer sig kvar är väl vilket sätt som är "the Drupal way"?
Nu tar jag helg :)
It's hard to find. I found it hard. Oh well, whatever, nevermind...
Template funktionen ser
Template funktionen ser trevlig ut tycker jag. Testa att installera Devel.
I din template funktion kan du sedan skriva
dpm($variables);för att se hur $variables ser ut. Det ser ut som du behandlar $variables['node']->field_videofile felaktigt. DäravNotice: Trying to get property of non-objectoch som att node inte finns därmedNotice: Undefined variable: node. Med hjälp av Devel ser man enkelt hur ett objekt är uppbyggt och om det är ett objekt eller en array, och grotta sig ner hur arrayen ser ut :).//Pontus Nilsson, Digitalist