78 뷰
Widget dans une div |
|
---|---|
Bonjour, J'essaye de faire mon thème en me basant sur le Dungeon, j'ai actuellement fait le "Topbar" et dans mon menu, j'aimerai intégré un widget espace membre, pour pouvoir se loger quand on est visiteur et le panel gestion quand on est connecté, mais je dois modifier mon menu pour faire en sorte qu'il accepte l'ajout de widget... Quelqu'un pourrait m'éclairer sur ce sujet ? Au passage, j'aimerai aussi savoir si quelqu'un connait le code pour afficher le nombre de personnes en ligne sur le site, pour l'instant il est écrit en brut. J'ai cherché dans le thème par défaut mais je ne trouve pas... le site: French Family Merci d'avance ! French Family |
3 참가자
3 개 |
|
---|---|
Salut Gnesis ! Alors, pour pouvoir ajouter des widgets à un endroit de ton thème, il faut déclarer une nouvelle zone. Je vais essayer de t'expliquer la démarche en me basant sur le thème Dungeon et t'expliquer le principe de déclaration/affichage des zones. Si tu regarde le fichier dungeon.php ligne 43 tu as : public $zones = array('Header', 'Avant-contenu', 'Contenu', 'Post-contenu', 'Footer'); Le tableau $zones reçoit les zones que tu déclares pour ton thème. Elles sont ensuite appelées pour être affichées dans le fichier body.tpl.php du thème (dans le dossier dungeon/views/...). Tu peux leur donner le nom que tu veux.Maintenant, si on regarde le fichier body.tpl.php, lignes 3 à 7, on voit un exemple d'appel d'une zone du thème : <?php if ($zone = $NeoFrag->output->display_zone(0)): ?> On regarde si la zone a du contenu à afficher avec <?php if ($zone = $NeoFrag->output->display_zone(0)): ?> , si oui : on l'affiche avec <?php echo $zone; ?> $NeoFrag->output->display_zone(0) va appeler la première zone du tableau $zones déclaré dans le thème, en l’occurrence la zone qui porte le nom "Header". Un tableau PHP commence toujours par l'index 0Si vous comprenez ce principe, pour appeler la zone "Footer" (5ème zone déclarée dans le tableau), il faudra utiliser : <?php if ($zone = $NeoFrag->output->display_zone(4)): ?> Donc, dans ton cas, Gnesis, pour ajouter une nouvelle zone, il faut :
Autre point très important : Déclarer une nouvelle zone après avoir installé un thème pose un petit problème : même si elle est vide, elle ne sera pas détectée par le LiveEditor car non configurée/initialisée dans la base de données lors de l'installation du thème. Donc il faut également modifier la fonction public function install(){ ... } ligne 63 du fichier dungeon.php.Dans cette fonction, on retrouve toute les actions à réaliser si on installe le thème pour la première fois ou qu'on le réinitialise depuis l'administration : configuration par défaut du thème, dispositions par défaut, etc... Donc si tu regarde bien le code, on retrouve ce genre de chose : $dispositions['*']['Header'] = array( Ici on déclare un contenu par défaut pour la zone ['Header'], pour toutes les pages du site ['*']Toujours dans notre exemple, il faut déclarer ton contenu de base pour ta nouvelle zone avec : $dispositions['*']['Topbar'] = array(); En laissant un array vide, la zone sera déclarée mais vide par défaut, mais bien reconnue avec le LiveEditor. Ensuite, pour bien prendre en compte ces changements, il faut "Réinstaller le thème par défaut" (petit bouton orange disponible depuis la rubrique Apparence > Thèmes) Tu pourra ensuite lancer le LiveEditor et voir apparaître ta nouvelle zone et y ajouter ton widget. J'espère être assez compréhensible dans mes explications lol... Dans tous les cas on pourra en rediscuter si tu as quelques difficultés :) |
|
@eResnova explication au top merci ! "N'arrêtez jamais d'apprendre" ! |
|
Un grand merci à toi, je n'ai pas encore eu l'occasion d'essayer mais tout est bien détaillé, merci à toi pour une réponse aussi détaillé :) French Family |