2012-03-19 3 views
2

Je crée une mise en page personnalisée (node ​​- article.tpl.php) pour un type de contenu personnalisé basé sur le type d'article fourni dans l'installation de base de Drupal7. Tout ce que j'ai ajouté est un champ de pièce jointe pour un fichier PDF.Personnalisation du lien de fichier dans le modèle Drupal7

Je veux avoir un lien dans la page de rendu qui dit quelque chose comme ("Version PDF"). J'ai créé un fichier modèle pour ce type de contenu et cela fonctionne bien. J'ai utilisé l'extrait de code print render($content['field_pdf']); pour afficher le lien du fichier. Il affiche le nom du fichier sous la forme d'un lien vers le fichier avec une icône PDF à côté. Presque parfait!

J'ai juste besoin de changer le nom du fichier à la chaîne statique "Version PDF".

Merci d'avance!

Répondre

2

Utilisez hook_node_view_alter()

function yourmodule_node_view_alter(&$build) 
{ 
    $node = $build['#node']; 
    if($node->type == "article" && isset($build['field_pdf']['#items'])) 
    { 
     $build['field_pdf']['#items'][0]['#file']->filename = t('PDF Version'); 
    } 
} 

OU

function yourmodule_node_view_alter(&$build) 
{ 
    $node = $build['#node']; 
    if($node->type == "article" && isset($build['field_pdf']['#items'])) 
    { 
     hide($build['field_pdf']); 
     $build['my_themed_link']['#markup'] = l(t('PDF Version'), file_build_uri($build['field_pdf']['#items'][0]['uri'])); 
     $build['my_themed_link']['#weight'] = 10; 
    } 
} 

Je n'ai pas testé encore que, espérons que cela fonctionne pour vous.

Muhammad

+0

MANQUÉ par * que * beaucoup !! (Channeling Get Smart pour un moment.) –

+0

Vous avez modifié légèrement votre premier code. A dû modifier cette valeur à la place: '$ build ['field_pdf'] [0] ['# fichier'] -> filename = t ('Version PDF)' - Merci !! –

+0

Euh, mon mauvais :). Merci beaucoup. –

0

Si vous avez le champ de description activé le champ de téléchargement de PDF, vous devriez être en mesure d'accéder à cette variable avec l'instruction print_r.

Le vous pouvez écrire quelque chose comme ceci:

<a href="<?php print render($content['field_pdf']['path'])?>"><?php print render($content['field_pdf']['description']);?></a> 

Ce code est pas exactement quelles utilisations drupal, mais vous pouvez saisir le format de tableau correct d'utiliser le code ci-dessous dans votre fichier node.tpl.php.

<pre><?php print_r($node); ?></pre> 
0

je devais le faire comme ceci:

function yourmodule_node_view_alter(&$build) 
    { 
     $node = $build['#node']; 
     if(($node->type == "grantee") && isset($node->field_abstract_pdf)) 

     { 
      $build['field_abstract_pdf'][0]['#file']->filename = t('Download Project Abstract'); 

     } 
    } 
Questions connexes