[Résolu] - Manipuler champ cck type image

Catégories:

Bonjour,

je suis en train de mettre en place mes propres tpl liés à des content type. je change donc node-montype.tlp.php

je cherche à récupérer le filepath des images pour les insérer dans jcarousel

j’ai parcouru le forum, mais je n’arrive pas récupérer cette valeur. Pour info, je comprends un peu le php.

http://drupalfr.org/node/3057

j’ai vu ceci

$node->content['field_FOOBAR']['#value']
$node->field_FIELDFOO[n]

pour ma part voila mon code :

<?php
print $node->field_spect_photos[1]['filepath']['#value'];
print
$node->field_spect_photos[1]['#value'];
print
$node->content['field_spect_photos[1][filepath]']['#value'];
print
$node->content['field_spect_photos[1][1]']['#value'];
?>

  <ul id="mycarousel">
    <li><img src="<?php print je ne sais pas quoi mettre ici;?>" alt="" /></li>

Ou se trouve mon erreur ?

Merci pour votre aide.

Nopt

#

En utilisant Contemplate (http://drupal.org/project/contemplate), tu as accès au contneu de la variable $node, ce qui permet de savoir où est situé exactement le chemin dans le tableau.

Plus simplement, tu peux faire un var_dump($node) à l’endroit approprié pour le même résultat, juste un peu moins propre.

#

Ca ne serait pas tout simplement parce qu’on commence a 0 ? (et il ne me semble pas qu’il y ai pas de #value)

<?php
print $node->field_spect_photos[0]['filepath'];
?>

#

Bonjour et merci pour vos réponses. Effectivement il ne faut pas de value :

la bonne forme est (merci haza) :

print $node->field_spect_photos[0]['filepath']

Par contre, on est pas obligé de commencer par 0.

J’ai donc réussi à injecter dans jcaroussel. (bien content, je suis).

A très bientôt. très

Nopt

#

En fait, le [0], c’est dans le cas des champs CCK multiple, c’est l’increment ;)

#

Bah oui, d’où l’intérêt de ne pas rester scotché sur le zéro, qui peut changer pour peu qu’il y ait plusieurs champs sur le contenu.

#

Bonjour, je réouvre le dossier car, je recontre d’une difficulté supplémentaire. Alors que je récupère facilement les images lorsque je me trouve dans le teaser, lorsque je clique sur en savoir plus (donc je change d’url, je passe de http://localhost/cocktail2/ à http://localhost/cocktail2/content/cocktail), il ne retrouve plus ses petits. Pour info j’ai installé path auto. Je me demande si je ne vais pas être obligé de saisir l’url jusqu’au dossier files en dur ? Autre remarque, je trouve que la gestion des clean url est une vraie usine à gaz au début (entre path, pathauto, globalredirect, .htacces, pre_process(),et autres joyeusetés). J’y perd un peu mon latin.

Voici donc mon code. Que me conseillez-vous ?

<?php
// $Id: node-spectacle.tpl.php,v 1.1 2008/10/01 03:26:19 jwolf Exp $
?>

<!-- start node-spectacle.tpl.php -->
<div id="node-<?php print $node->nid; ?>" class="node <?php print $node_classes; ?>">
  <?php print $picture ?>

  <?php if ($page == 0): ?>
  <h2 class="title"><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
  <?php endif; ?>

   <div class="content">
    <?php print $content ?>
  </div>

<ul id="mycarousel">
<?php foreach ((array)$field_spect_photo as $item) { ?>

<li><img src="<?php print $item['filepath']?>"/></li>
<?php } ?>
</ul>

<?php
//drupal_set_message('<pre>'.print_r($node, true).'</pre>');
?>

  <?php
  jcarousel_add
('#mycarousel', array('horizontal' => TRUE, 'scroll' => 1,'animation' => 'slow'));
 
?>

<?php if ($links): ?>
  <div class="links">
    <?php print $links; ?>
  </div>
  <?php endif; ?>

  <?php if ($node_bottom && !$teaser): ?>
  <div id="node-bottom">
    <?php print $node_bottom; ?>
  </div>
  <?php endif; ?>
</div>
<!-- /#node-<?php print $node->nid; ?> -->

Merci pour votre aide

#

Je suppose que ton $item[‘filepath’] retourne bien le chemin.

<ul id="mycarousel">
<?php foreach ((array)$field_spect_photo as $item) { ?>

<li><img src="<?php print $base_path . $item['filepath']?>"/></li>
<?php } ?>
</ul>

$base_path permet de calculer a coup sur le chemin vers la racine (/) de ton site. Donc une fois les clean url activée, c’est indispensable.

#

Merci pour ton aide, mais j’ai toujours le même symptôme. Finalement j’opte pour la saisie partielle de l’url, et la ca marche. Il faudra que je pense à la changer quand je le mettrai en ligne :-)

<ul id="mycarousel">
<?php foreach ((array)$field_spect_photo as $item) { ?>
<li><img src="http://localhost/cocktail2/<?php print $base_path . $item['filepath'] ?>"/></li>
<?php } ?>
</ul>

Toutefois, cela me perturbe un peu. je me demande bien pourquoi, il ne retrouve pas ses petits. Je ferai des recherches lorsque j’aurai un peu plus de temps. (Maquette à rendre ce soir :-) )

Merci pour ton aide Haza

Noptien

Syndiquer le contenu