J'ai un nouvel emploi où je travaille strictement sur Magento tous les jours maintenant. Je n'ai aucune expérience préalable avec Magento, donc ça a été un défi pour le moins que je sache!
Permettez-moi d'expliquer brièvement l'extension que nous construisons.
Cela nous permettra d'afficher une fenêtre Popup / Modal. Le contenu HTML du Modal sera stocké dans
unStatic Block
PAGE ADMIN
Ainsi, le panneau d'administration se compose d'un nouvel onglet sous System/Confuration/
NEW TAB
Le panneau d'administration vous permet de sélectionner dans une liste déroulante sur cette NOUVELLE PAGE D'ONGLET la valeur par défaut Static Block
à utiliser pour ces sections ...
HOME PAGE
ou HOME PAGE w/Items in Shopping Cart
ALL CATEGORY PAGES
ou ALL CATEGORY PAGES w/Items in Shopping Cart
ALL PRODUCTS PAGES
ou ALL PRODUCTS PAGES w/Items in Shopping Cart
ALL CMS PAGES
ou ALL CMS PAGES w/Items in Shopping Cart
SHOPPING CART PAGE
ou SHOPPING CART PAGE w/Items in Shopping Cart
SURVOLS PAR DÉFAUT
Ensuite, les pages CMS , CATÉGORIE et PRODUITS réelles autorisent toutes les mêmes paramètres que la page du panneau d'administration, sauf qu'elles vous permettent de définir STATIC BLOCK
un par article et de remplacer le paramètre par défaut que nous avions dans les paramètres d'administration ci-dessus. .
Jusqu'à présent, le côté administrateur de l'extension est terminé. Nous avons tous les onglets d'administration pour chaque section ... produit, catégorie, CMS et page de configuration.
La prochaine étape sera d'ajouter à la même extension et de faire un Static Block
insert dans la page. Ce Static Block
sera responsable de ... Afficher le correct Static Block
sur chaque page en fonction des paramètres qui ont été définis dans les zones mentionnées ci-dessus .....
- Déterminer la page sur laquelle nous nous trouvons et le type de page (cms, produit, accueil, catégorie)
- Il devra ensuite lire tous les paramètres personnalisés qui ont été définis dans les zones mentionnées ci-dessus.
- S'il est déterminé que nous sommes sur une
Category
page, nous devrons alors obtenir la catégorie spécifique sur laquelle nous nous trouvons. Par exempleCategory 3
. Nous verrons ensuite s'il existe un paramètre spécifique pour cette catégorie spécifique. S'il indique queEnabled
nous chercherons alors ce quiStatic Block
est enregistré pour cette catégorie et l'afficherons dans notreStatic Block
page principale sur la page! - Si la catégorie spécifique ci-dessus est définie comme
Disabled
pour notre,Modal Window
nous allons chercher plus haut dans les paramètres plus globaux pour le modal et voir si un modal est activé pour toutes les catégories. Si oui, alors nous verrons lequelStatic Block
doit être affiché dans toutes les catégories. - En plus de tout cela, il effectuera ce processus pour chacun des types de page principale (produit, catégories, cms, accueil, panier)
- Nous devrons également vérifier si le panier est vide ou non. SI pas vide ... alors nous devrons prendre cela en considération ci-dessus lorsque nous vérifierons lequel
Static Block
afficher pour cette page car chaque paramètre permet deStatic Block
définir un pour le panier vide et 1 pour le panier non vide! (Je sais que c'est une entreprise énorme et difficile, mais nous avons surtout le côté administrateur. Il suffit de faire la partie qui tient compte de tous ceux-ci pour déterminer lequelStatic Block
afficher sur quelle page particulière.
Donc, pour me mettre dans la bonne direction, j'ai quelques petites questions ...
- Comment puis-je à l'intérieur de mon
Static Block
code (la partie PHP) déterminer sur quel TYPE de PAGE je suis. Comme je l' ai mentionné que je dois savoir si je suis sur .... PAGE HOME , une PAGE CMS , une page de catégorie , une fiche produit , ou la page de panier ? - En plus du TYPE DE PAGE, j'ai besoin d'obtenir la page réelle. Donc, si je suis sur l' ID de produit 1234, je dois pouvoir obtenir le paramètre (bloc statique défini pour cette page) pour cette page particulière.
Je sais que cela a été un poste long et peut-être déroutant. Si vous êtes arrivé jusqu'ici, merci d'avoir pris le temps de lire ceci =)
Si vous pouvez répondre à ma question, chaque petit morceau me rapprochera de l'objectif final
Voici un organigramme que j'ai fait de la façon dont mon module devra fonctionner pour déterminer le bloc statique à insérer dans la page
la source
Mage_Widget
module, non?Mage_Widget
? Je dois aussi examiner celaRéponses:
En plus de ce que @benmarks a répondu :
Voici un petit code pour vérifier certaines des conditions que vous avez mentionnées:
Pour vérifier si le panier est vide ou non utilisé
Vous avez également demandé si vous pouvez vérifier la page actuelle dans un bloc CMS.
Ce n'est probablement pas une bonne approche (vous devrez inclure des blocs personnalisés, ce qui irait à l'encontre de l'utilisation des blocs CMS dans la première page).
Au lieu de cela, il est préférable de vérifier d'abord la page actuelle, puis de choisir le bloc CMS à afficher en fonction de cela.
EDIT : fixé
Mage::app()->getRequest()->getFullActionName()
àMage::app()->getFrontController()->getAction()->getFullActionName()
comme mentionné par @Joseph dans les commentaires. Merci!la source
Mage::app()->getRequest()->getFullActionName()
d'un modèle de panier entraîne une erreur fatale ou du moins, c'est le cas pour moi sur 1.7.0.2.$this->getAction()->getFullActionName()
a parfaitement fonctionné!Beaucoup d'approches que vous pourriez adopter. Je recommanderais d'ajouter votre bloc via la
<default>
poignée de mise à jour de la mise en page, qui le rendrait disponible sur toutes les pages. Dans la_prepareLayout()
méthode de votre bloc , vous pouvez déterminer la portée en obtenant le nom de l'action complète actuelle à partir de l'objet de demande ($this->getRequest()->getFullActionName()
) et en l'utilisant pour déterminer le contexte.Les produits et catégories seront enregistrés dans le registre. Votre bloc pourrait également consulter les poignées de mise à jour de la mise en page, qui comprendront les poignées d'ID de produit ou d'ID de catégorie.
la source
Pour détecter la page d'accueil, vous devez utiliser la chaîne d'identifiant (par exemple "home") pour faire correspondre la valeur de configuration, plutôt que l'ID numérique:
En voici d'autres:
Merci pour les informations utiles à tous!
la source