Submitted by selinav on
Bonjour,
J'ai créé un type de contenu 'Profil adhérent' avec le module content profile.
J'ai rajouté les champs dont j'avais besoin avec le CCK.
J'ai créer un modèle de page node-profil-adherent.tpl.php.
J'ai un champ qui devrait apparaître sur cette page, mais que les utilisateurs ne doivent pas pouvoir modifier.
J'ai donc créer un autre type de contenu 'avantage-annuel' auquel j'ai mis un node-reference pointant sur le type de contenu 'profil-adherent'.
J'ai réalisé une view récupérant l'avantage annuel grâce à l'argument de l'url.
Cela fonctionne bien.
Mon problème c'est que je voudrais insérer la vue (block) dans ma page node-profil-adherent.tpl.php.
J'ai parcouru le forum et j'ai essayé de créer une zone pour mettre le bloc mais apparement ça ne fonctionne pas dans le contenu.
J'ai essayé ça mais sans succès
<?php $block = module_invoke('views', 'block', 'view',22); ?>
<?php print "ma vue".$block['subject']; ?>
<?php print $block['content']; ?>
<?php
$view = views_get_view('avantage_annuel');
print "ma vue."views_build_view('embed', $view, $current_view->args, true, 10)
?>
Comment puis-je faire?
Merci de votre aide.
Salut je ne me souviens plus
Permalien Soumis par nyl auster le 21 Octobre, 2009 - 11:09
Salut
je ne me souviens plus du code exact. Par contre je te conseille effectivement de passer plutôt par la création d'un nouvelle région :
- déclarer la nouvelle région dans ton fichier.info (si il n'y en a pas de déjà déclaré, je crois qu'il faut que tu rédéclares les régions par défaut)
- ajouter la variable correspondante dans ton template
- et surtout vider le cache de Drupal car sinon il ne prendra pas ta nouvelle région si mes souvenirs sont bons.
Quand on l'a fait une fois et qu'on a compris le truc, ça prend vraiment 30 secondes à faire.
merci nyl auster, toujours
Permalien Soumis par selinav le 21 Octobre, 2009 - 11:18
merci nyl auster, toujours à mon secours.
J'avais oublié de vider le cache, c'est pour cela que ça ne marchait pas, grrrr!
j'ai parlé trop vite. Ma
Permalien Soumis par selinav le 21 Octobre, 2009 - 11:47
j'ai parlé trop vite.
Ma zone apparaît bien dans les zones bloc mais elle ne s'affiche pas dans le contenu même s'il y a des blocs paramétrés pour cette zone.
Pour info, ma zone n'apparaît pas dans page.tpl.php
et ma page node-profil-adherent.tpl.php n'a pas de $content mais uniquement les champs CCK que j'ai besoin d'afficher.
node-profil-adherent.tpl.php
<div class="node <?php print $classes; ?>" id="node-<?php print $node->nid; ?>">
<div class="node-inner">
<div class="content">
<h1 class="title bandeau-rose"><!-- nom boutique + adresse dans bandeau rose -->
<div id="infos-profil">
...
<?php if ($interieur): // zone contenant le bloc issu de ma vue?>
<div id="interieur">
<?php print $interieur; ?>
</div><!-- /#interieur -->
<?php endif; ?>
</div><!--fin div infos-profil -->
</div> <!-- /node-inner -->
</div> <!-- /node-->
C'est moi qui ai lu trop
Permalien Soumis par nyl auster le 21 Octobre, 2009 - 11:57
C'est moi qui ai lu trop vite, rajouter une zone dans un node est moins facile et oblige à passer par une fonction de preprocess pour router la variable de région vers les templates de nodes. (par défauts, les variables sont routées vers le page.tpl.php)
j'avais mis ça dans mon template.php pour communiquer ma région au node, tu peux essayer. (en l'occurence le nom machine de ma région était node_pub_article, et phptemplate était mon moteur de template).
Sinon en cherchant bien sur le web tu devrais trouver un snippet pour appeler une vue qui fonctionne.
[ edit : note qu'avec cette manip ta région sera accessible de la même manière que dans le page.tpl.php, simplement en tapant (dans mon cas) $node_pub_article ]
j'ai essayé avec mon code
Permalien Soumis par selinav le 21 Octobre, 2009 - 14:03
j'ai essayé avec mon code et ça me retourne une internal server errorsur tout le site.
ma region s'appelle 'interieur'
//appel de la region ds node-profile_adherent_partenaire
function phptemplate_preprocess(&$variables, $hook) {
//ajouter une région dans les nodes
$variables['interieur'] = theme('blocks', 'interieur');
}
Ne doit-on pas indiquer quelque part le nom du type de contenu?
ca marcherait pas mieux avec
Permalien Soumis par nyl auster le 21 Octobre, 2009 - 14:12
ca marcherait pas mieux avec ça ?
(désolé je suis pas super au point encore avec les preprocess)
merci, après avoir vidé le
Permalien Soumis par selinav le 21 Octobre, 2009 - 15:07
merci, après avoir vidé le cache ça fonctionne, on progresse.
Mais seul le bloc que j'ai créé manuellement apparaît.
Le bloc de ma vue n'apparaît pas, est-ce à cause de l'argument qui est transmis?
Le preprocess fonctionne
Permalien Soumis par nyl auster le 21 Octobre, 2009 - 15:13
Le preprocess fonctionne ?
aux dernières nouvelles une vue en bloc ne prend pas les arguments, tu es obligé de lui fournir par défaut en php (sauf si c'est du nid dont tu as besoin, tu peux cocher nid from url dans les "provide default argument).
(met un empty text à ta vue et regarde si ça l'affiche)
FOR-MI-DABLE!! Mille merci,
Permalien Soumis par selinav le 21 Octobre, 2009 - 15:24
FOR-MI-DABLE!!
Mille merci, ça fonctionne.
J'avais fourni l'argument en donnant arg(1) au lieu de à partir de l'URL et ça ne fonctionnait pas. C'est curieux tout de même, que ça ne fonctionne pas pour les blocs...
le arg(1) aurait du marcher
Permalien Soumis par nyl auster le 21 Octobre, 2009 - 15:28
le arg(1) aurait du marcher même en bloc ( les arguments fournis en php continuent de fonctionner)...