fonction d'affichage des modules

45 posts in this topic

Posted · Report post

Bonjour,

Dans la configuration de la boutique du back office,

il existe une fonction pour le positionnement des différents modules du site.

"uniquement en page d'accueil"

Dans mon cas, j'aurais aimé pouvoir avoir "sauf en page d'accueil"

Comment puis-je faire ?

---------

Détail de mon besoin :

J'aimerais en fait ne rien avoir sur la colonne de gauche de ma page d'accueil.

Pour exploiter complètement la zone html personnalisable

(qu'il faudra d'ailleurs que je positionne différemment afin d'occuper l'espace libéré par les modules de la colonne de gauche.

Si quelqu'un peu m'aider aussi la dessus car dans screen.css, impossible de trouver).

En revanche sur le reste des pages du site, (ou d'ailleurs la colonne de droite disparait la plupart du temps), j'aimerais que les modules catalogues et d'autres réapparaissent sur la colonne de gauche...

En éspérant avoir été clair dans ma question.

Merci par avance.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Vous pouvez dupliquer le paramètre uniquement en page d'accueil (in_home dans la table peel_modules.)

Modifier ensuite le test


if (empty($this_module['in_home']) || (!empty($this_module['in_home']) && (defined('IN_HOME') || defined('IN_PEEL_ADMIN')))) {
$modules[$this_module['id']] = $this_module;
}
[/CODE]

Share this post


: post
Share on other sites

Posted · Report post

Pouvez vous m'apporter quelques précisions pour arriver à faire tout ceci ?

Je ne sais pas comment dupliquer le paramètre dans la bdd.

Si j'ai bien compris, il faut que je le duplique pour chacun des modules pour lesquels j'ai besoin de cette fonction ?

Pour modifier le test, ca se situe dans quel fichier ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Il faut dans un premier temps créer un nouveau champ dans la table peel_modules, que vous pouvez appeler 'not_in_home' TINYINT (1).

Dans le back office, il faut rendre administrable la valeur de ce champ. Dans site.php, ajouter la checkbox et modifier les requêtes SQL pour permettre la mise à jour du nouveau champ.

Reste ensuite à modifier le test de la fonction get_modules_array, dans le fichier lib/fonctions/fonctions.php pour la prise en compte du nouveau paramètre

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Simon,

Bon alors, le nouveau champ not_in_home est créé dans la bdd.

Dans sites.php, j'ai dupliqué la checkbox du in_home, j'ai changé le champ in_home en not_in_home aussi.

J'ai changé le 'label for', le 'name' et l'id' pour nhome_ (je sais pas si j'ai bien fait)

En fin de fichier j'ai rajouter la ligne correspondante avec le not_in_hom et le nhome_ sur le modèle du in_home

Me voila désormais à modifier le test, mais je ne suis pas sur de ce que je dois modifier.

Il faut que je duplique aussi le test je pense, et que j'y modifie certain champs.

Je m'excuse, je me débrouille un peu la dedans, disons que je comprends vite mais je ne suis que débutant en php / sql

Autre chose :

Une fois tout ceci en place, il ne risque pas d'y avoir un conflit si les deux checkbox sont cochées par exemple ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Vous pouvez modifier le test de cette façon :


if (defined('IN_HOME') && (empty($this_module['in_home']) && !empty($this_module['not_in_home']))) {
continue;
}elseif (empty($this_module['in_home']) || (!empty($this_module['in_home']) && (defined('IN_HOME') || defined('IN_PEEL_ADMIN')))) {
$modules[$this_module['id']] = $this_module;
}
[/CODE]

Si in_home est coché, alors le test qui est ajouté échoue, et le module est affiché en page d'accueil.

Share this post


: post
Share on other sites

Posted · Report post

Et ben c'est tout bon m'sieur Simon !

Peut être un petit rajout à intégrer lors d'une prochaine version ?

Pour aller au bout de mon idée, juste une dernière petite chose :

ma colonne de gauche désormais libérée en page d'accueil, je souhaiterai que ma zone html personnalisable s'étire sur la gauche jusqu'à cette place libre, de manière à occuper tout l'espace horizontal de la gauche absolue jusqu'à la colonne de droite.

On est surement dans le css mais j'ai pas réussi à trouver jusqu'ici.

Merci. :P

Share this post


: post
Share on other sites

Posted · Report post

???

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Vous une url à fournir pour que je puisse voir ?

Share this post


: post
Share on other sites

Posted · Report post

url en mp ^_^

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Pour afficher la zone HTML sur la colonne de gauche, vous devez d'abord modifier le nombre de colonne sur la page enajoutant la variable $page_column_count = 2; dans le fichier /index.php.

Moidifier ensuite haut.php et bas.php pour faire en sorte que ce soit la colonne de gauche qui ne s'affiche plus.

Share this post


: post
Share on other sites

Posted · Report post

si je touche à haut.php et bas.php, j'ai peur que la modif affecte l'ensemble de mes pages...! non ?

Je veux seulement modifier l'index.

Sur les autres pages, je veux garder ma colonne de gauche et étirer la colonne du milieu sur la droite comme c'est le cas actuellement avant modif.

Deplus, je ne sais pas ce qu'il faut modifier dans ces fameux fichiers...

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

pour faire des modification uniquement pour la page d'accueil, vous pouvez utiliser la constante IN_HOME, défini uniquement au début du fichier index.php.

Vous pouvez faire un test comme celui ci dessous :

if(defined('IN_HOME')) {

[VOTRE CODE POUR L'INDEX]

} else {

[VOTRE CODE POUR LE RESTE DES PAGES]

}

Share this post


: post
Share on other sites

Posted (edited) · Report post

ok dans ce cas, je peux aussi créer 2 autres fichiers copies de haut.php et bas.php juste pour l'index.

Que faut-il modifier dans ces derniers pour faire en sorte que ce soit la colonne de gauche qui ne s'affiche plus et non celle de droite ?

EDIT : C'est bon j'ai trouvé :

Les tests qui gèrent l'affichage des colonnes se situent dans la fin du fichier haut.php et au début de bas.php

Par contre, petit détail pour être moins con Simon :

Pourquoi l'un de ces tests est construit ainsi : if($page_column_count > 1) ?

Sachant que le test if($page_column_count = 3) existe j'aurais mis if($page_column_count = 2).

Edited by djespace

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

ce test permet d'afficher la colonne de gauche uniquement si page_column_count est égal à 2 ou 3. Ca évite de faire if (page_column_count == 2 || page_column_count == 3)

Share this post


: post
Share on other sites

Posted · Report post

Ok très bien.

Bon et bien sujet résolu, merci Simon. ^_^

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Dommage colatéral... !

Le panier n'est plus dans un bloc en page d'accueil.

il remonte dans le menu header comme sur la page catalogue (probablement automatique suite au passage en 2 colonnes de mon index)

Comment puis-je le forcer à être dans un bloc sur l'index ?

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Dans la configuration général de la boutique, vous devez sélectionner l'emplacement "droite" pour le panier pour qu'il s'affiche sous forme de bloc dans la colonne

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Je me suis peut-être mal exprimé.

L'emplacement "droite" est déjà séléctionné dans la config du back office.

En temps normal, en configuration "usine" le panier apparait bien dans un block à droite

sauf sur la page catalogue (en 2 colonnes) où du coup il vient se placer plus haut dans le header.

Jusqu'ici, je pense qu'on est d'accord.

Sauf que :

Le fait d'avoir passé mon index en 2 colonnes fait que le panier est remonté dans le header.

Ce qui est normal puisqu'en théorie, le passage en 2 colonnes sous entend qu'il n'y a plus de colonne de droite.

(comme sur la page catalogue, donc le panier remonte dans le header)

Hors, mes modifications font que c'est la colonne de gauche qui disparait en mode 2 colonnes sur l'index.

J'aimerais donc que mon panier apparaisse dans un bloc sur la colonne de droite qui elle est bien présente dans mon cas.

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Le code qui créer ce comportement est dans la fonction get_modules_array, du fichier lib/fonctions/fonctions.php


if (vn($GLOBALS['page_column_count']) == 2 && $this_module['technical_code'] == 'caddie') {
if ($this_module['location'] == 'right') {
// On déplace le module de droite vers le haut pour l'afficher quand même
if (empty($location) || $location == 'header') {
$this_module['location'] = 'header';
$this_module['display_mode'] = '';
} else {
continue;
}
}
}
[/CODE]

vous pouvez mettre en commentaire ce morceau de code.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Merci, sauf que cela va affecter la page catalogue aussi...

Il faudrait un test pour que ce comportement ne s'annule qu'en page d'accueil.

Comment faire ?

Share this post


: post
Share on other sites

Posted · Report post

Vous pouvez faire un test sur la présence de la constante IN_HOME, défini exclusivement sur la page index.php

Share this post


: post
Share on other sites

Posted · Report post

Oui c'est bien à cela que je pense,

mais sans savoir réellement comment faire..

en gros il faudrait faire un test avec la constante IN_HOME, s'il s'avère positif, il faudrait shunter le test du nombre de colonne et passer directement à la suite.

J'avais une idée du genre :


if (defined('IN_HOME') { goto line 408;

} else {

continue;

}


Mais la fonction goto n'existe visiblement pas en php...

je débute en php avec des vieilles notions de codage en c++ voir en basic (mais c'est pas tout à fait pareil)

Pouvez vous m'aider ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

je vous propose ceci :


if (vn($GLOBALS['page_column_count']) == 2 && $this_module['technical_code'] == 'caddie' && !defined('IN_HOME')) {
if ($this_module['location'] == 'right') {
// On déplace le module de droite vers le haut pour l'afficher quand même
if (empty($location) || $location == 'header') {
$this_module['location'] = 'header';
$this_module['display_mode'] = '';
} else {
continue;
}
}
}
[/CODE]

=> ce morceau de code s'exécutera uniquement en dehors de la page d'accueil, grâce au test !defined('IN_HOME')

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

ahhhh, c'est le point d'exclamation avant define qui fait tout ?

Je cherchais justement à inverser la constante...

je vais essayer ça merci.

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping