Skriva ut filnamnet från ett filfält

Events happening in the community are now at Drupal community events on www.drupal.org.
chrisronn's picture

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

chrisronn's picture

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

chrisronn's picture

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

pontus_nilsson's picture

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ärav Notice: Trying to get property of non-object och som att node inte finns därmed Notice: 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

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: