3 votes

Affichage d'un bloc statique sous forme de fenêtre popup dans Magento

J'essaie d'afficher un bloc statique dans Magento sous la forme d'une fenêtre popup, mais je n'arrive pas à faire fonctionner le code.

J'ai trouvé à divers endroits sur Internet un code qui semble assez proche de ce que je veux, mais je n'arrive pas à obtenir de résultats. J'ai utilisé le code de base pour renvoyer les "meilleurs liens" vers mon site, je sais donc que les principes de base fonctionnent.

J'ai créé un delpopup.php script dans mon dossier racine de Magento et y mettre ce code :

<?php
require_once('app/Mage.php');
umask(0);

$layout = Mage::app()
    ->getLayout();

$layout
    ->getUpdate()
    ->addHandle('default')
    ->load();

$layout
    ->generateXml()
    ->generateBlocks();

echo '<p>before</p>';

echo $layout
    ->createBlock('cms/block')
    ->setBlockId('delivery-info')
    ->toHtml();

echo '<p>after</p>';
?>

Malheureusement, le code n'affiche pas le bloc statique. Cette partie de la sortie est vide.

L'idée est que je puisse placer un lien dans une page normale de Magento et faire apparaître ma livraison. Comme ceci :

<a title="" onclick="popWin('http://www.mysite.com.au/delpopup.php', 'deliveryinfo', 'width=300,height=300,left=0,top=0,location=no,status=yes,scrollbars=yes,resizable=yes'); return false;" href="#">Delivery Info</a>

En gros, je veux pouvoir afficher un bloc statique dans une fenêtre popup qui utilise le thème de mon site Magento. Toute idée serait grandement appréciée.

3voto

ivantedja Points 2543

Comme je le pensais, les problèmes sont dus à des erreurs Block Id . Maintenant que le cms peut être montré.

La question qui se pose maintenant est la suivante : comment faire fonctionner le thème ?

Je ne suis pas vraiment sûr de ce que vous entendez par thème, si ce que vous voulez dire css qui a été inclus dans <default> vous pouvez utiliser :

Mage::getDesign()->setTheme('your theme');

echo $layout->getBlock('head')->toHtml();

Une fois que le xml a été généré, il faut mettre ce code après :

$layout
    ->generateXml()
    ->generateBlocks();

2voto

kalenjordan Points 1004

Je configurerais d'abord un contrôleur et un ou plusieurs blocs pour rendre le type de mise en page que vous voulez lancer dans la fenêtre contextuelle. Ainsi, au lieu de faire cela dans un fichier php autonome, faites-le dans le cadre régulier de Mage, dans une action de contrôleur spécifique.

Ensuite, une fois que cela fonctionne, la question est de savoir comment l'intégrer dans une fenêtre pop-up. J'opterais pour un joli widget popup jquery qui vous permet de spécifier l'URL à afficher, puis de passer celle que vous avez préparée à l'étape 1 ci-dessus.

Vous pouvez consulter adminhtml/default/default/template/popup.phtml pour l'inspiration. Il s'agit en fait d'un modèle de popup pour l'administration, pas pour le frontend, mais vous pouvez voir ce qu'ils ont fait.

Ils tirent dans certains blocs standard Magento, y compris la head qui devrait reprendre toutes vos CSS et JS, afin de vous donner le schéma de couleurs général, l'aspect et la convivialité de votre front-end, mais sans toute la navigation, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X