Créer de nouvelles compositions et de nouvelles pages avec Zpip-vide - commentaires Créer de nouvelles compositions et de nouvelles pages avec Zpip-vide 2011-05-09T12:17:07Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment445352 2011-05-09T12:17:07Z <p>Il est tout à fait possible de définir vos propres blocs. Par contre, cela vous fera perdre la compatibilité avec les thèmes Z et vous devrez définir votre propre thème.</p> <p>Si j'ai bien compris la structure de votre site :</p> <ul class="spip"><li> Vos pages par défaut ont un seul bloc : <i>contenu</i>.</li><li> Vous avez pour les articles et les rubriques (à étendre à d'autres objets au besoin) une composition (que je vais appeler <i>nav</i>) avec deux blocs : <i>contenu</i> et <i>navigation</i>.</li><li> Enfin votre page d'accueil a trois blocs. Le premier bloc va devoir s'appeler <i>contenu</i> (le bloc de base est nécessaire pour toutes les pages). Les deux autres seront <i>col2</i> et <i>col3</i>.</li></ul> <p>Je fais l'hypothèse que vous utilisez Aveline + noiZetier + Zpip-vide.</p> <p>Vous allez donc créer votre propre thème personnalisé qui définira tous les éléments de la structure de votre site. Ce thème sera donc sous la forme d'un plugin (voir donc la doc générale des plugins).</p> <p>Pour être sûr de bien surcharger Zpip et Zpip-vide, le fichier plugin.xml de votre thème contiendra :</p> <div class="precode"><pre class="spip_code spip_code_block language-XML" dir="ltr" style="text-align:left;" data-language="XML"><code><necessite id="Z" /> <necessite id="zvide" /></code></pre></div><h2 class="h2">Étape 1 : définir la liste des blocs pour Zpip</h2> <p>Dans un fichier d'options, vous allez définir la globale <i>z_blocs</i> en lui indiquant tous les blocs existants (ne pas oublier le <i>head</i>) :</p> <div class="precode"><pre class="spip_code spip_code_block language-PHP" dir="ltr" style="text-align:left;" data-language="PHP"><code>$GLOBALS['z_blocs'] = array('contenu','head','navigation','col2','col3');</code></pre></div><h2 class="h2">Étape 2 : définir la structure des pages dans le fichier body.html</h2> <p>Créer un fichier <code class="spip_code spip_code_inline" dir="ltr">body.html</code> à la racine du thème. Ce fichier va permettre d'appeler les différents blocs et de définir la structure HTML des pages. Ce fichier sera à adapter selon vos besoins. Mais grosso modo, il sera à peu près comme ça :</p> <div class="precode"><pre class="spip_code spip_code_block language-SPIP" dir="ltr" style="text-align:left;" data-language="SPIP"><code><div id="page"> <div id="entete"> <INCLURE{fond=inclure/entete,env}> </div> <div id="nav"> <INCLURE{fond=inclure/barre-nav,env}> </div> <div id="conteneur"> [(#ENV{composition}|=={sommaire}|non) <div id="contenu"> <INCLURE{fond=contenu/#ENV{type},env}> </div> ] [(#ENV{composition}|=={sommaire}|oui) <div id="col1"> <INCLURE{fond=contenu/#ENV{type},env}> </div> <div id="col2"> <INCLURE{fond=col2/#ENV{type},env}> </div> <div id="col3"> <INCLURE{fond=col3/#ENV{type},env}> </div> ] [(#ENV{composition}|=={nav}|oui) <div id="navigation"> <INCLURE{fond=navigation/#ENV{type},env}> </div> ] </div> <div id="pied"> <INCLURE{fond=inclure/pied,env}> </div> </div></code></pre></div> <p>On inclue les blocs <i>navigation</i>, <i>col2</i> et <i>col3</i> de manière conditionnelle.</p> <h2 class="h2">Étape 3 : fournir un contenu par défaut pour les deux nouveaux blocs col2 et col3</h2> <p>Zpip a besoin d'un contenu par défaut de base pour chaque bloc. Dans le cas présent, il va s'agir d'un squelette vide puisque les contenus seront ajoutés ensuite via le noiZetier. Il vous faut donc créer dans votre plugin deux sous-répertoires : <code class="spip_code spip_code_inline" dir="ltr">col2</code> et <code class="spip_code spip_code_inline" dir="ltr">col3</code>. dans chacun d'eux, créer un fichier <code class="spip_code spip_code_inline" dir="ltr">dist.html</code> (c'est un squelette par défaut) ne contenant rien.</p> <h2 class="h2">Étape 4 : indiquer au noiZetier les blocs des différentes pages</h2> <p><strong>Pages normales</strong></p> <p>Tout d'abord, il faut indiquer au noiZetier que les blocs par défaut pour les différentes pages ne sont que le bloc <i>contenu</i>. Cela se fait via le pipeline <i>noizetier_blocs_defaut</i> (voir <a href='https://contrib.spip.net/Fonctionnement-par-defaut-du-noiZetier' class="spip_in" rel='nofollow'>Fonctionnement par défaut du noiZetier</a>). Par défaut, le noiZetier prévoit trois blocs par défaut : <i>contenu</i>, <i>navigation</i> et <i>extra</i>. On va donc lui indiquer de ne garder que <i>contenu</i>.</p> <p>Je pars du principe que le préfixe de votre plugin Thème est <code class="spip_code spip_code_inline" dir="ltr">theme</code>. Dans le fichier <code class="spip_code spip_code_inline" dir="ltr">plugin.xml</code> de votre thème, il faut donc ajouter :</p> <div class="precode"><pre class="spip_code spip_code_block language-XML" dir="ltr" style="text-align:left;" data-language="XML"><code> <pipeline> <nom>noizetier_blocs_defaut</nom> <inclure>theme_pipelines.php</inclure> </pipeline></code></pre></div> <p>Ensuite, vous devez créer le fichier <code class="spip_code spip_code_inline" dir="ltr">theme_pipelines.php</code> à la racine du thème et y mettre le code suivant :</p> <div class="precode"><pre class="spip_code spip_code_block language-PHP" dir="ltr" style="text-align:left;" data-language="PHP"><code><?php function theme_noizetier_blocs_defaut($blocs) { unset($blocs['navigation']); unset($blocs['extra']); return $blocs; } ?></code></pre></div> <p>On a ainsi supprimé <i>navigation</i> et <i>extra</i> des blocs par défaut (il ne reste donc que <i>contenu</i>.</p> <p><strong>Page sommaire</strong></p> <p>Pour la page sommaire, on va lister les blocs spécifiques de cette page via sa déclaration XML (voir <a href='https://contrib.spip.net/Fonctionnement-par-defaut-du-noiZetier' class="spip_in" rel='nofollow'>Fonctionnement par défaut du noiZetier</a>).</p> <p>On va donc surcharger le fichier <code class="spip_code spip_code_inline" dir="ltr">contenu/page-sommaire.xml</code> de Zpip-vide. Donc, dans le sous-répertoire <code class="spip_code spip_code_inline" dir="ltr">contenu</code> de votre thème, vous allez créer un fichier <code class="spip_code spip_code_inline" dir="ltr">page-sommaire.xml</code> contenant :</p> <div class="precode"><pre class="spip_code spip_code_block language-XML" dir="ltr" style="text-align:left;" data-language="XML"><code><page> <nom><:zvide:nom_page-sommaire:></nom> <icon>img/page_sommaire.png</icon> <bloc id="contenu" nom="theme:col1" icon="img/fichier.png" /> <bloc id="col2" nom="theme:col2" icon="img/fichier.png" /> <bloc id="col3" nom="theme:col3" icon="img/fichier.png" /> </page></code></pre></div> <p>A vous d'adapter les icônes (vous devez fournir un chemin relatif), ou supprimer l'attribut <code class="spip_code spip_code_inline" dir="ltr">icon</code>.</p> <p>Pour le nom des blocs, vous devez définir un fichier de langue dans votre thème afin de spécifier col1, col2 et col3. Vous remarquerez à ce niveau qu'on en profite pour renommer le bloc contenu en 'Colonne 1' via une chaine de langue dans l'interface du noiZetier pour une meilleure expérience utilisateur. Techniquement, ce sera toujours le sous-répertoire contenu qui sera utilisé.</p> <p>Vous pouvez ajouter une description aux blocs avec l'attribut <code class="spip_code spip_code_inline" dir="ltr">description</code> qui attend lui aussi une chaine de langue.</p> <p><strong>Compositions nav</strong></p> <p>Ces compositions ayant une structure différente, elles devront être définies en dur par le thème. On va d'abord s'occuper des articles. Dans le sous-répertoire <code class="spip_code spip_code_inline" dir="ltr">contenu</code>, créez un fichier vide nommé <code class="spip_code spip_code_inline" dir="ltr">article-nav.html</code>. Le fichier est vide car il sera rempli ensuite de nosiettes. Mais il doit être présent pour être détecté par le noiZetier et Compositions. Cependant, pour être considéré comme une composition, il faut lui associer un fichier de description au format XML. Vous devez donc créer le fichier <code class="spip_code spip_code_inline" dir="ltr">article-nav.xml</code> dans le même sous-répertoire et contenant :</p> <div class="precode"><pre class="spip_code spip_code_block language-XML" dir="ltr" style="text-align:left;" data-language="XML"><code><composition> <nom><:theme:compo-nav:></nom> <description><:theme:description-compo-nav:></description> <icon>images/objet-simple.png</icon> <bloc id="contenu" nom="noizetier:nom_bloc_contenu" description="noizetier:description_bloc_contenu" icon="img/ic_bloc_contenu.png" /> <bloc id="navigation" nom="noizetier:nom_bloc_navigation" description="noizetier:description_bloc_navigation" icon="img/ic_bloc_navigation.png" /> </composition></code></pre></div> <p>La composition sera ainsi définie avec les blocs adéquats. N'oubliez pas de définir les chaines de langue adéquates et de personnaliser au besoin les icônes.</p> <p>Pour les rubriques, on procédera de la même manière en créant deux fichiers identiques dans le sous-répertoire <code class="spip_code spip_code_inline" dir="ltr">contenu</code> et nommés <code class="spip_code spip_code_inline" dir="ltr">rubrique-nav.html</code> et <code class="spip_code spip_code_inline" dir="ltr">rubrique-nav.xml</code>. Vous pouvez étendre à d'autres objets SPIP de la même manière en fonction de vos besoins.</p> <h2 class="h2">Étape 5 : désactiver la page par défaut de Zpip-vide</h2> <p>Zpip-vide dispose d'une page nommée <i>page par défaut</i> permettant d'ajouter des contenus sur toutes les pages (voir <a href='https://contrib.spip.net/Organisation-des-blocs-et-des-pages-dans-Aveline' class="spip_in" rel='nofollow'>Organisation des blocs et des pages dans Zpip-vide</a>). Dans le cas présent, il semble que cette page par défaut soit inutile. Pour la désactiver, créez un fichier vide nommé <code class="spip_code spip_code_inline" dir="ltr">defaut.xml</code> dans le sous-répertoire <code class="spip_code spip_code_inline" dir="ltr">contenu</code>.</p> <p>Si vous préférez la conserver, adapter alors le code du fichier <code class="spip_code spip_code_inline" dir="ltr">contenu/defaut.xml</code> de Zpip-vide en fonction de vos besoins.</p> <p>En espérant avoir répondu à votre question.</p> <p>Bien cordialement</p> Créer de nouvelles compositions et de nouvelles pages avec Zpip-vide 2011-05-08T19:45:26Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment445325 2011-05-08T19:45:26Z <p>Bonjour,</p> <p>voilà, j'ai un petit problème. En effet j'aimerais avoir 3 configurations de pages spécifiques pour le site :</p> <p>- une page sommaire sur 3 colonnes <br>- des pages normales sur une seule colonne, sans nav secondaire ni extra, <br>- des pages spécifiques avec une nav secondaire</p> <p>Comment puis je régler ça dans Aveline avec Compositions<small class="fine d-inline"> </small>? Est-ce possible<small class="fine d-inline"> </small>?</p> Créer de nouvelles compositions et de nouvelles pages avec Zpip-vide 2011-03-25T10:32:40Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment443109 2011-03-25T10:32:40Z <p>Bonjour Chers Collègues Spipiens,</p> <p>Je tente un exercice d'incitation à s'intéresser à certaines réalisations de la concurrence pour inspiration. je présente donc deux réalisations de l'univers Drupal qui mon séduit et dont on souhaiterais qu'elles puissent être réalisées avec SPIP, par exemple avec ZPIP.</p> <h2 class="h2">OpenPublic</h2> <p>Le premier est une application Drupal complète comprenant tous les modules (plugin chez SPIP) et le thème. Je vous invite à visiter la démo. Le paquet complet est téléchargeable ici :</p> <ul class="spip"><li> <a href="http://openpublicapp.com/" class="spip_out" rel='nofollow external'><strong>OpenPublic </strong></a> : OpenPublic is an open source content management system based on Drupal and tailored for building websites for government</li></ul><ul class="spip"><li> Un collègue <a href="http://sem.unige.ch/drupaltest/openpublic/" class="spip_out" rel='nofollow external'>a installé <strong>le paquet ici en guise de Démo</strong>, visitez la ici</a></li></ul> <p>Remarquer la navigation secondaire sous la forme d'un très beau slider d'images.</p> <h2 class="h2">Template Marinelli</h2> <p>Marinelli est un élégant template Drupal qui exploite un panneau en haut de page qui s'ouvre au clic (slider) ainsi qu'un menu horizontal qui ouvre des panneaux de liens. Sous le menu horizontal un beau slider d'images joue le rôle de bandeau du site.</p> <ul class="spip"><li> <a href="http://drupal.org/project/marinelli" class="spip_out" rel='nofollow external'><strong>Download & Extend : Marinelli</strong></a></li></ul><ul class="spip"><li> <a href="http://marinelli.netsons.org/" class="spip_out" rel='nofollow external'><strong>Démo du template Marinelli</strong></a></li></ul> <p>Quelqu'un peut-il commenter ces réalisations en vue d'une réalisation à la SPIP<small class="fine d-inline"> </small>?</p> <p>Bien cordialement</p> <p>FDG</p> Créer de nouvelles compositions et de nouvelles pages dans Aveline 2010-12-09T13:06:29Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment437969 2010-12-09T13:06:29Z <p>Bonjour,</p> <p>J'ai eu un problème similaire.</p> <p>Je l'ai résolu en mettant à jour les plugins yaml, saisies, noizetier et aveline, puis en vidant le cache.</p> <p>En espérant que ça serve...</p> Créer de nouvelles compositions et de nouvelles pages dans Aveline 2010-10-27T19:54:52Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment436177 2010-10-27T19:54:52Z <p>Si tu choisis <i>même rubrique</i> en transmettant un id_rubrique dans l'url, est-ce que la noisette fonctionne correctement<small class="fine d-inline"> </small>?</p> <p>Ensuite, concernant le sélecteur de rubrique pour <i>rubrique spécifique</i>, utilises-tu les dernière version d'Aveline, de saisies et de Bonux<small class="fine d-inline"> </small>? Dans quel navigateur<small class="fine d-inline"> </small>? C'est peut-être un problème de javascript puisque le sélecteur ne s'affiche qu'une fois <i>rubrique spécifique</i> sélectionné, apparait alors le texte <i>Si rubrique spécifique, quelle rubrique<small class="fine d-inline"> </small>?</i> et un lien <i>Modifier</i> sur lequel il faut cliquer pour qu'apparaisse la liste des rubriques. De mon côté, ca fonctionne sans problème avec Firefox sous Windows et IE8.</p> <p>Cordialement</p> Créer de nouvelles compositions et de nouvelles pages dans Aveline 2010-10-27T19:35:34Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment436176 2010-10-27T19:35:34Z <p>du type page</p> <p>justement pas de selecteur rubrique</p> Créer de nouvelles compositions et de nouvelles pages dans Aveline 2010-10-27T17:42:28Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment436169 2010-10-27T17:42:28Z <p>J'ai besoin de quelques précisions. Si je comprends bien, la noisette <strong>Sites de la rubrique ou tous les sites</strong> a été incluse dans une composition du noizetier. Est-ce une composition de type <i>rubrique</i> ou de type <i>page</i><small class="fine d-inline"> </small>?</p> <p>Ensuite, concernant l'option <i>rubrique spécifique</i> de la noisette : normalement un sélecteur de rubrique apparait pour sélectionner la rubrique spécifique. Est-ce que la rubrique spécifique a bien été sélectionnée<small class="fine d-inline"> </small>?</p> <p>Concernant le cas <i>même rubrique</i> et s'il s'agit d'une composition de type page, il importe de passer un id_rubrique dans l'URL.</p> <p>Cordialement</p> Créer de nouvelles compositions et de nouvelles pages dans Aveline 2010-10-27T17:35:23Z https://contrib.spip.net/Creer-de-nouvelles-compositions-et-de-nouvelles-pages#comment436168 2010-10-27T17:35:23Z <p><strong>Bonjour<small class="fine d-inline"> </small>; </strong></p> <p>quelque précisions sur la création « »<strong>Compositions du noiZetier</strong>«<small class="fine d-inline"> </small>»</p> <p>J'ai donc voulu créer une page reprenant certain sites</p> <p>- dans la configuration <strong>«<small class="fine d-inline"> </small>»Sites de la rubrique ou tous les sites«<small class="fine d-inline"> </small>»</strong></p> <p>si je sélectionne : <strong>«<small class="fine d-inline"> </small>»tous les sites web«<small class="fine d-inline"> </small>»</strong> ou dans la <strong>«<small class="fine d-inline"> </small>»même rubrique«<small class="fine d-inline"> </small>»</strong> ainsi que <strong>«<small class="fine d-inline"> </small>»dans une rubrique spécifique" <br class="autobr"> </strong></p> <p><strong>rien ne change au niveau de l'affichage<small class="fine d-inline"> </small>; </strong></p> <p>tous les sites référencés de mon site apparaissent</p> <p>qu'ai je donc omis de configurer pour pouvoir choisir une rubrique spécifique ou sous-rubrique de préférence</p> <p>merci</p>