fonction d'affichage des modules

45 messages dans ce sujet

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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]

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

???

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Vous une url à fournir pour que je puisse voir ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

url en mp ^_^

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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]

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

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).

Modifié (le) par djespace

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ok très bien.

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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')

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

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

Je cherchais justement à inverser la constante...

je vais essayer ça merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping