Bonjour,
Je cherche à répartir le contenu créé via un node ($content), dans une mise en page multicolonne.
Par exemple ; le contributeur créer un contenu ayant un texte et des photos.Il va donc remplir le champ dédié au texte et ajouter ses photos (qui seront traitées par image cache et gallery assist) ; puis valider.
Tout ce beau monde va alors se retrouver dans le $content…je voudrais plutot que la galerie soit affiché dans une colonne (région $right par ex. à coté du texte) ? est ce possible sans passer par block ou panel ? sinon j’ai deja réussi à faire cela en css via un float, mais il ne s’agissait que d’une seul image sans effet (pas de LBox)…cela pourrait il marcher pour une galerie entière ?
avez vous des exemples de réalisation ? des conseils ?
merci
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

si tu fais ton tpl ça pourrais fonctionner avec un < div id=»colonne_gauche»> et une autre < div id=»colonne_droite»> que tu positionnes en css et où tu affiches les champs correspondants dans chaque div.
selinav
1242
Display Suite (et sa suite de modules) peut faire l’affaire. Mais l’affichage se fera toujours par colonnes mais en place du $content, sans utiliser les colonnes gauche et droite du thème. Je sais pas si je suis claire, mais le mieux c’est de tester le module.
Drupalfr.org est aussi sur freenode à #drupal-fr
—
Amipicto communication et publicité
floown@drupal.org
910
pas de problème pour avoir des colonnes dans mon tpl, j’ai une base en 3 colonnes..mon problème est de pouvoir indiquer quelle part du contenu créé via la création classique d’un noeud, va où …car pour l’instant tout ce qui est créé via l’interface est automatiquement mis dans $content, non ? je maitrise la partie qui consiste à créer des régions pour y mettre des blocs…mais pas celle qui consiste à mettre dans ces régions du contenu issu d’un node…sauf à faire 2 types de contenu :
1- le texte
2- la galerie
puis faire une vue de type bloc qui affiche cette galerie et la positionner dans une région $right..mais cela oblige à créer 2 noeuds…ce que mes utilisateurs auront peut etre du mal à saisir en terme de logique…vous voyez le souci ? c’est de vouloir faire un mécanisme simple de création de noeud (1 compte rendu = 1 noeud) tout en ayant une mise en page plus travaillée..
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
duplique le fichier node.tpl.php en node-nom_ton_type_contenu.tpl.php et commente la ligne
<?phpprint $content
?>
et à la place met par exemple n’importe quelle phrase en html.
Tu verras que quand tu voudras afficher ton contenu, tu n’auras plus le contenu mais ta phrase saisie.
Il te suffit donc d’insérer les variables que tu souhaites afficher.
Pour les connaître utilise le module contemplate ou fait un
< pre >
< ?php print_r($node) ; ?>
< /pre>
ainsi si dans ton tpl tu mets quelque chose comme
<?phpprint $node->title
?>
ça t’affichera ton titre …
selinav
1242
très bien ca, ainsi je vais pouvoir décortiquer le contenu de $content..je m’y colle..par contre il faut que je créer un exemple factice avant afin de lister non ? mais une fois listé, je pourrais en effet dispatcher les éléments dans mes régions..exactement ce que je veux faire…
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
Je crois pas que ce module existe déjà. Panel pourrait faire très facilement qqc d’approchant, sinon DS comme je le disais.
Sinon, si tu ne souhaites «qu’attacher» un texte à une galerie, il te suffit d’utiliser, dans Views, les zones «Header» et/ou «Footer». Après je suppose que tu as une div qui entoure tout ça, (sinon tu la rajoutes dans le code) donc tu peux organiser comme bon te semble avec css et avoir un affichage sur deux colonnes ou trois colonnes par exemple.
Drupalfr.org est aussi sur freenode à #drupal-fr
—
Amipicto communication et publicité
floown@drupal.org
910
en fait au point ou nous en sommes je recense pas moins de 4 possibilités voire 5 :
celle de selinav semble être celle qui va requérir le moins de ressources serveur,je pense, les modules ça alourdi la chose mais ça peut rendre service, tout dépend du niveau du créateur du site ( developpeur,designer, webmaster..) , la dernière solution avec View m’a l’air bien aussi, même si elle requiert des requêtes, ça peut le faire.
Je vais tenté la solution «light», si ça coince alors je passerai par view, car je ne veux pas trop alourdir le site avec trop de modules..
qu’en pensez vous ?
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
effectivement mieux vaut agir au niveau du tpl pour économiser de la ressource, en plus c’est indispensable de savoir faire car tôt ou tard tu auras besoin de modifier des tpl que ce soit pour tes pages, node ou views.
selinav
1242
Oui mais de toute manière il va utiliser Views pour afficher ses galeries. Donc ça fait pas un module de plus, mais un module utilisé à fond :)
(et puis ça me paraît être la soluce la plus simple à mettre en place)
Drupalfr.org est aussi sur freenode à #drupal-fr
—
Amipicto communication et publicité
floown@drupal.org
910
poppopoop ne vous énervez pas ! ;)
j’utilise view en effet,qui ne le fais pas d’ailleurs ? ; mais je teste plusieurs voies afin de voir laquelle je maitrise le mieux..
@selinav : donc j’ai commencé avec celle du tpl.php ; j’ai créé une page test : http://www.lycee-brise-lames.fr/sortie-test
et j’ai des tonnes d’infos..dont je ne sais pas trop laquelle choisir…
@floown : je vais quand même voir ta solution floown (pas de jaloux hein), car ça m’intéresse de creuser l’usage de view aussi, ce module étant surpuissant..si tu as des tutos sur et usage de view je suis preneur
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
La soluce de Selinav est sympa aussi. Mais pour cela il te faudrait également utiliser Insert Views si tu veux pas faire tes requêtes à la main… Donc à méditer…
Si tu choisis tout de même cette voie là, moi j’installerais Content template le temps de récupérer les variables, tu pourras toujours le désactiver une fois que tu auras tes templates.
Je voulais juste rajouter que si tu édites un node-ton-type-de-contenu.tpl.php, tu vas pas pouvoir dispatcher les éléments selon les régions, mais selon la région occupée normalement par le contenu. D’ailleurs mes soluces ne modifient également que le $content.
Si tu voulais vraiment avoir la soluce qui réponde parfaitement à ton idée (utiliser toutes les régions), il faudrait voir plutôt du côté du page.tpl.php. C’est pas infaisable.
Si tu voulais exploiter la soluce avec Views et le champ header et/ou footer, tu dois pouvoir dire en php :
si tu es sur tel terme du vocabulaire x, tu affiches ce texte
si tu es sur tel autre terme de vocabulaire x, tu affiches cet autre texte.
Je suis une bille en php, je peux pas bcp t’aider (voir du côté de case, je pense).
Drupalfr.org est aussi sur freenode à #drupal-fr
—
Amipicto communication et publicité
floown@drupal.org
910
Si tu voulais vraiment avoir la soluce qui réponde parfaitement à ton idée (utiliser toutes les régions), il faudrait voir plutôt du côté du page.tpl.php. »> c’est ce que je fais, je créer mes tpl.php en fonction du nom du type de contenu via du php dans template.php…
pour ce qui est de mon probleme,si j’arrive à splitter le $content en différentes variables,alors je pourrais les assigner à une div particulière de mon TDC.tpl.php
si view ne propose que le footer ou le header, ca m’avance pas car moi je cherche à dispatcher uniquement dans la DIV content.
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
maintenant à toi de voir ce qui te convient le mieux et les avantages et inconvénients de chaque méthode.
J’ai jeté un oeil à ton lien, pense à entourer le print_r de la balise < pre> pour formater les données.
En fait ça te retourne un objet.
bon courage
selinav
1242
en effet la balise n’est pas très bien écrite, ca marche mieux la.je pense aller au bout de ta méthode.je ne suis pas assez a l’aise avec views pour l’instant.
donc mon souci est de trouver ce fameux objet afin de le dispatcher (cad le texte, la galerie..)
EDIT : j’ai tenté ca
<?phpprint $node->ganame;
?>
mais sans succés, que se soit avec ou sans le ;
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
installe contemplate tu n’auras qu’à copier coller le code
Sinon tu dois avoir un truc du genre
<?phpprint $node->ganame[0]['view'];
?>
selinav
1242
contemplate me donne ce que j’ai mis en 1er comme valeur…mais l’affichage ne change pas, toujours identique comme si $content était toujours dans le code…bizarre,j’ai vide les caches..rien a faire,je comprends plus la.
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
as-tu commenté la ligne
<?phpprint $content
?>
dans ton fichier node-nom_type_contenu.tpl.php ?
selinav
1242
je suis dans page-TdC.tpl.php , je ne touche pas à node…par contre puis je créer node-TdC.tpl avec le même nom de TdC ? par contre je l’ai supprimé dans page-XXX ; mais si cela veut dire qu’il faut intervenir sur node-XXX alors ca va compliquer l’affaire au niveau de la page non ?
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
explication :
ton fichier page.tpl.php va générer ta page avec toutes les balises d’une page html :
html, head, body ainsi que les différentes régions de ton thème.
Le fichier node.tpl.php va générer uniquement les informations de tes différents type de contenu.
Dans ton fichier page.tpl.php tu vas trouver également une ligne
<?phpprint $content
?>
qui va appeler le fichier node.tpl.php
Donc si pour tous tes types de contenu ta mise en page globale (régions) ne change pas il ne faut pas toucher au page.tpl.php
Si jamais tu avais une mise en page complètement différente par exemple dans le cas de la page d’accueil tu auras 2 fichiers : page-front.tpl.php (pour la mise en page de la page d’accueil) et page.tpl.php pour toutes les autres pages.
Donc dans ton cas il faut uniquement avoir un fichier node-tdc.tpl.php dans lequel tu mettras du code du genre (exemple d’un de mes fichiers) en jouant avec tes div pour tes colonnes.
<div class="node <?php print $classes; ?>" id="node-<?php print $node->nid; ?>"><div class="node-inner">
<?php if (!$page): ?>
<h2 class="title"><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
<?php endif; ?>
<?php print $picture; ?>
<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<div class="content">
<div class="field field-type-text field-field-profil">
<div class="field-items">
<div class="field-item odd">
<div class="field-label-inline-first"><img src="/sites/all/themes/basic/css/images/puce_feuille.png" /> Profil: </div>
<?php //affichage corps du texte
print $node->content['body']['#value'] ?>
</div>
</div>
</div>
<div class="field field-type-text field-field-job-ref-offre">
<div class="field-items">
<div class="field-item odd">
<div class="field-label-inline-first">Réf Offre: </div>
<?php print $node->field_job_ref_offre[0]['view'] ?>
</div>
</div>
</div>
<div class="field field-type-text field-field-job-type">
<div class="field-items">
<div class="field-item odd">
<div class="field-label-inline-first">Type de contrat: </div>
<?php print $node->field_job_type[0]['view'] ?>
</div>
</div>
</div>
</div>
<?php if ($terms): ?>
<div class="taxonomy"><?php print $terms; ?></div>
<?php endif;?>
<?php if ($links): ?>
<div class="links"> <?php print $links; ?></div>
<?php endif;
/<em>echo '<pre>';
print_r($node);
echo '</pre>';</em>/?>
</div> <!-- /node-inner -->
</div> <!-- /node-->
selinav
1242
ok je comprends, j’ai actuellement créé 5 TdC auxquels correspondront 5 fichiers page-TdC.tpl.
La ou j’avais du mal ,c’est que je pensai que les éléments de node.tpl venez s’mbriquer dans page.tpl, alors qu’ils surpasse (override) le page.tpl..non ? si j’ai bon alors imaginons un layout 3 colonnes.
Je voudrais que mon node se repartisse sur 2 des 3. je dispatche alors dans node-TdC.tpl sur la colonne1 et 2. La 3eme sera celle par defaut donné par mon page-TdC.tpl… vrai ?
alors il ne me reste plus qu’a créer un node-TdC.tpl qui va surpasser les ID et les div du page-TdC.tpl avec le code vu précedemment
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
pour faire plus simple, ne touche pas ton page.tpl.php et dans ton node-tdc.tpl.php tu crées 3 div dans lesquelles tu incorpores ton code
< div id=»colonne_gauche»>
tes champs de ta colonne gauche
< /div>
< div id=»colonne_centrale»>
tes champs de ta colonne centrale
< /div>
< div id=»colonne_droite»>
tes champs de ta colonne droite
< /div>
et pour que ça fonctionne bien tu ne mets rien dans les régions gauche et droite de ton thème ainsi ton node occupera tout l’espace.
Après tu n’as plus qu’à styler le tout en CSS
selinav
1242
en terme de css sa fonctionne bien ,mais je ne trouve pas la variable qui m’affcihe la galerie…
j’ai essayé avec plusieurs combinaisons sans succé :
<?phpprint $node->gallitems['#nid'];
?>
ou
<?phpprint $node->ganame;
?>
je ne suis plus très loin de réussir du coup..
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
Avec quoi génères-tu ta galerie ?
Regarde dans le fichier readme il doit y avoir une méthode pour l’appeler un truc du genre
<?phpprint theme($parametre1, $parametre2,...);
?>
selinav
1242
avec gallery_assist-6.x-1.14 , mais il n’y a rien dans le readme, j’ai posté sur le forum anglais du module, voir si j’ai une réponse..
http://drupal.org/node/814842
sinon le dev a un site mais j’ai rien trouvé dans sa doc..mais avec print_r j’avance pas des masses…
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
bon j’ai trouvé un dossier template dans le module,avec ceci dans un tpl :
* Available variables :
* - $type : An string with the type of the node.
* - $pager : An string with contains the rendered pager for the Gallery Assist page view.
* - $boxes : An string with the rendered gallery item boxes.
* - $conf : An array with the necesary content to display the gallery item.
mais je ne sais pas trop quoi en faire
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
j’ai enfin réussi a splitter le contenu d’un node..mais il me reste un gros morceaux, celui de récupérer un terme de taxonomie associé et de l’afficher dans un endroit défini de mon node.tpl custom…
je pense que la bonne notation est
<?phpprint $node->taxonomy[7]->name
?>
mais le chiffre représentant le tid, c’est pas du tout dynamique ,alors il va me falloir passer par une fonction du template.php…et la c’est pas gagné car je ne sais pas faire, avez une telle fonction qui permette de récupérer un terme ou un vocabulaire défini ?
merci de votre aide
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
http://api.drupal.org/api/function/taxonomy_node_get_terms/6
selinav
1242
merci selinav, j’ai pu y arriver avec ceci : http://drupal.org/node/823918 ; je garde l’api sous le coude pour le futur
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045