Bannière dans bloc - différente selon page

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Alors voilà mon problème.
J'avais dans l'idée de créer un bloc afin de mettre tout en haut de mon site http://www.autoentrepreneur-pratique.fr/public_html/index.html/
(à la place de la bannière actuelle) une bannière.
La bannière serait différente pour chaque page du menu. Par exemple la bannière de la page "règlementation" sera différente de celle de la page "droit".

Malheureusement j'ai crée un bloc mais le plus haut qu'il va c'est en dessous de mon menu horizontal (écriture grise)

J'aimerais créer un bloc qui logerait une bannière exactement à la place de l'actuelle. Celle là c'est juste un code HTML sur page.tpl.php

Dans l'idée je comptais créer un bloc pour chaque bannière que j'afficherais sur la page désiré.(donc 16 blocs car 16 sous menus. C'est ce que je compte faire pour les bannières verticales. (Là pas de souci.)

Quelqu'un à une idée ?

Merci par avance.

Bonjour,
tu peux créer une nouvelle région, que tu rajoutes dans le dossier de ton thème, dans le fichier tontheme.info.
ex: dans tontheme.info:

regions[header]           = header           //existe sans doute déjà, selon ton thème
regions[header_banniere]  = header bannière  // à rajouter

Tu rajoutes aussi cette région , toujours dans le dossier theme, dans le template de page (page.tpl.php).
ex: dans page.tpl.php (à rajouter):

      <?php if ($header_banniere): ?>
        <div id="header-block-banniere" class="region region-header-banniere">
          <?php print $header_banniere; ?>
        </div> <!-- /#header-block-banniere -->
      <?php endif; ?>

Et dans un fichier css de ton thème, toujours dans ce même dossier (ex: tontheme.css), tu peux définir l'emplacement et la dimension exacte de cette région qui contiendra ton bandeau.

Ensuite, tu reprends ton idée de blocs que tu placeras dans cette nouvelle région.

Merci pour l'infos.

J'ai regarder sur google et je suis sur ce tuto : http://felisite.com/node/219

Est ce le fichier .info ou le fichier template.php qu'il faut modifier ?

Pour le css, il faut faire les modification dans quel fichier ? J'ai style.css, layout.css, defaut.css, et print .css.

Ensuite dans le dossier css, le placement de la div se fait en jouant avec le margin jusqu'à ce que la bannière soit à l'endroit où je veux ? Il faut tatonner ?

Désolé pour les questions de débutants :)

PS : je ne peux pas essayer ce soir, mais demain quand je serai au bureau.

Attention, l'article auquel tu fais référence date de 2007; tu y trouves un lien vers durpal.org ou tu peux lire:

Note that as of Drupal 6.x templates now have .info files where this information is stored. If you are using Drupal 6.x, you should refer to the documentation at http://drupal.org/node/171224.

J'imagine que démarrant sous Drupal, tu as installé la V6.x.
Je pense que le tutoriel peut toujours s'appliquer, mais je te suggère de suivre les étapes que je te propose.

Le fichier tontheme.info pour déclarer la nouvelle région. C'est exactement la même chose que ce qui est fait dans l'étape 1 du tutoriel, sauf que là les régions semblent être déclarées programatiquement par une fonction php, alors qu'actuellement, on travaille sur un fichier .info qui semble-t-il n'existe que depuis la 6.x.

L'étape 2 n'a pas changé.

L'étape 3 correspond à ce que tu as imaginé.

Il reste le css à traiter pour mettre en forme ta présentation.
Tu peux mettre ton code css dans les fichier que tu veux; d'après ce que tu as, ça peut être style.css, où tu vas mettre ce qui est plutôt général, ou layout.css, qui va traiter plutôt des dimensions et des marges. Tu peux n'avoir qu'un seul fichier, style.css où tu mets tout ton css; par défaut, Drupal va en chercher un seul nommé style.css; tu peux en avoir plusieurs si tu veux bien séparer tes éléments, comme ça semble être le cas dans ton thème. Le seul impératif, si tu ne te contentes pas de style.css, est que tous soient déclarés dans ton .info (même le style.css, sinon il sera ignoré).

Pour ce qui est de tâtonner, oui essaie jusqu'à ce que tu arrives à la présentation que tu souhaites. Installe Firebug, si ça n'est pas déjà fait, comme ça tu peux faire des essais et voir le résultat immédiat.

J'espère ne pas avoir dit de bêtises, parce que j'ai vu tout ça en formation avec Vincent, de Félisite!

Merci je teste ca demain et je te tiens au courant.

Merci d'avoir pris le temps tout expliquer. Je pense que je devrais y arrivé maintenant que j'ai toute les cartes en main :)

Et oui j'ai Firebug.

Je reposte demain dans l'après midi pour te dire si j'ai réussi ou ce qui foire .

Bonne soirée

Bonjour,

J'ai fait ce que tu m'a dit et ca marche. Mon seul souci maintenant est le css.

J'ai une bordure que je n'arrive pas à enlever. Enfin si j'y arrive mais le problème c'est qu'elle servent à d'autres bloc.
Les blocs ont la même bordure en commun.

Pour retirer la bordure violette, je dois supprimer la bordure ici :
. blockit {} et dans blockic{}
Le problème c'est que mes autres blocs se retrouve sans bordure.

Comment faire pour effacer la bordure pour la région que je viens de créer ?
J'ai cru qu'en ne mettant pas de bordure dans #header-block-banniere ca allait marcher mais nan. Ca n'a aucun lien. Quand je met une bordure dans #header-block-banniere ca en créer une autre.

Quelqu'un à une solution ?

En HTML (sur firebug) il suffit de supprimer les class blockit et blockic, c'est tout con, ca se fait tout seul, mais avec le fichier en php, c'est une autre histoire :(

Pour corriger ton erreur css, tu peux regarder avec firebug la class du div de ton bloc, ou son id, qui normalement est différent des autres blocs de ton site. Chacun des blocs ayant un ID distinct.

Un solution serait donc d'enlever les bordures à ta div

#taDiv { border : none }

Nan justement, quand on regarde le code HTML, il est compris dans les blockit et blockic.
Si je met #taDiv { border : solid 5px } Ca recréer une autre bordure.

Voici un lien image du code HTML : http://img529.imageshack.us/img529/4449/pbbordure.png

En modifiant le code HTML sur Firebug, c'est nikel, par contre impossible en CSS.
Quand je modifie le CSS automatiquement, les autres blocs perdent leur bordure.

Voila le lien : http://8581.host.fr/
il y a une bordure violette au dessus de la bannière. Elle est mal positionné mais je ne m'en suis pas encore occupé :)

Merci d'avance

Encore une question.

En fait j'ai ma nouvelle région.
Mais je créer un nouveau bloc pour chaque bannière.
Donc une bannière = Une page = Un block

J'ai 10 pages donc 10 bannières donc 10 blocks.

Dans le CSS il faut que j'ajoute cette ligne pour chaque bloc? :

block-block-8 .block-inner .blockic

Par exemple :

block-block-1 .block-inner .blockic { border:none }

block-block-2 .block-inner .blockic { border:none }

block-block-3 .block-inner .blockic { border:none } ....

Ou il y a un moyen plus court ?

Merci.

Nan ca affecte d'autres blocs :(

Pourquoi ca ne marche pas si j'enlève la bordure sur header-block-banniere ou region region-header-banniere

Le code que j'ai mis dans mon fichier page.tpl.php est celui donné plus haut

Je n'arrive pas à afficher les div sur ce forum :(

A priori, tu veux enlever la bordure pour tous les blocs de ta région bannière, qui a forcément un id unique donc, si l'id est region-header-banniere, essaie:

#region-header-banniere .block-inner .blockic {
  border: none;
}

sinon, pour reprendre ta méthode:

block-block-1 .block-inner .blockic ,
block-block-2 .block-inner .blockic ,
...
block-block-n .block-inner .blockic {
  border: none;
}