iNCiTE Web Posté 28 Mai 2012 Posté 28 Mai 2012 Bonjour Je développe un module PHP pour une société qui a un site sous ez-publish. Mon module doit afficher des articles pleine page (type Shadowbox/Lightbox). Comme la seule solution pour invoquer le module est une iframe (ou son équivalent object), le fonctionnement n'est pas celui attendu puisque seule la partie enfant (l'iframe) est grisée et l'article ne s'affiche pas en pleine page. Le Shadow = window.parent.Shadowbox que l'on peut utiliser dans le cas habituel d'iframe, n'est pas fonctionnel car c'est du cross-domain (le site et le module sont sur des serveurs différents) EZ-Publish ne permet pas (simplement) d'appeler du PHP directement ; il faut par une extension il me semble, je n'ai pas le temps de m'y pencher Auriez-vous une idée de contournement (le cross-domain ne semble pas solutionnable pour Javascript) Merci d'avance.
SStephane Posté 28 Mai 2012 Posté 28 Mai 2012 Que cherches tu à faire, afficher simplement un contenu en ajax ? Tu peux faire ça très simplement dans ezpublish en ajoutant un layout ajax qui ne contiendra que {$module_result.content}, et pour appeler ce contenu, tu pourras tout simplement appeler l'URL "/layout/set/[AJAX= selon comme tu l'as appelé]/node/view/full/[iD]". />http://snipplr.com/view/41578/ajax-view-in-ez-publish/
iNCiTE Web Posté 28 Mai 2012 Auteur Posté 28 Mai 2012 Salut, Je souhaite appeler un script PHP qui contient une grande image avec des zones réactives qui affichent des article dans une shadowbox. Tu penses que ton exemple pourra appeler un script externe ? Je ne connais pas du tout ez-publish, pour tout ce qui est config je dois passer par le prestataire qui gère le site source Je vais regarder ces pistes, merci.
Ernestine Posté 28 Mai 2012 Posté 28 Mai 2012 Je ne comprends pas bien. Tu dis que le site (qui est sous eZPublish) et le module (que tu dois développer en php) sont sur des serveurs différents. Donc à priori ton script php doit fonctionner indépendamment d'eZPublish. Mais d'un autre côté tu nous dis que ce script doit afficher des articles lors du survol d'une image, je suppose donc que ces articles sont ceux du site eZPublish, et je ne vois pas comment tu vas les récupérer si ton script est placé sur un autre serveur.
iNCiTE Web Posté 28 Mai 2012 Auteur Posté 28 Mai 2012 Je ne comprends pas bien. Tu dis que le site (qui est sous eZPublish) et le module (que tu dois développer en php) sont sur des serveurs différents. Donc à priori ton script php doit fonctionner indépendamment d'eZPublish. Mais d'un autre côté tu nous dis que ce script doit afficher des articles lors du survol d'une image, je suppose donc que ces articles sont ceux du site eZPublish, et je ne vois pas comment tu vas les récupérer si ton script est placé sur un autre serveur. Non non, c'est moi qui gère entièrement les articles (qui sont liés à un événement). Mon module est autonome et fonctionne parfaitement quand il est appelé en direct. C'est son intégation qui pose problème (je l'avais plus ou moins pressenti, mais trop chronophage à tester avant de faire le devis). D'ailleurs j'aurais pu me connecter sur leur BDD si j'avais besoin de leur article. Mais il y a un autre back-office pour les gérer. D'ailleurs le problème direct (à savoir Shadowbox dans une iframe/object) n'est pas lié au CMS ez-Publish, je pense que tous auraient le problème (à moins de pouvoir appeler un script PHP via include, mais c'est en rêve ça) J'ai fait l'essai avec un autre domaine sur mon serveur, avec une pauvre page html et juste l'appel, j'ai le même souci, le fameux cross-domain
Ernestine Posté 28 Mai 2012 Posté 28 Mai 2012 Ah ok, donc ce problème n'a aucun rapport avec eZPublish. En gros, si je comprends bien : tu produis une page html (générée en php mais peu importe) qui ouvre des éléments (articles) dans une shadowbox. Et cette page html est intégrée dans une iframe dans un site. Et donc quand l'utilisateur ouvre la shadowbox, l'ombre de la box couvre uniquement l'iframe, et non la page entière, ce qui est bien logique, mais pas l'effet souhaité. Le javascript qui ouvre les shadowbox doit être inclue dans la page mère, et non dans la page fille (celle qui est dans l'iframe). Il n'est donc pas possible de mettre cette solution en place sans intervenir un minimum sur le code de la page mère. Tu peux créer un petit script javascript et demander aux développeurs du site eZ de l'inclure dans la page (en plus d'intégrer l'iframe).
iNCiTE Web Posté 28 Mai 2012 Auteur Posté 28 Mai 2012 Tu as tout compris ! J'ai accès à la page parente, mais mon script dans le module ne peut y accéder... Normalement un parent.shadowbox() suffit mais j'ai un access denied. Dans l'iframe le module ne voit pas le script, et si il est dedans, la page s'ouvre dans l'iframe. I'm stuck ! Je vais prendre un apéro terrasse au cas où une idée viendrait
iNCiTE Web Posté 29 Mai 2012 Auteur Posté 29 Mai 2012 Que cherches tu à faire, afficher simplement un contenu en ajax ? Tu peux faire ça très simplement dans ezpublish en ajoutant un layout ajax qui ne contiendra que {$module_result.content}, et pour appeler ce contenu, tu pourras tout simplement appeler l'URL "/layout/set/[AJAX= selon comme tu l'as appelé]/node/view/full/[iD]". />http://snipplr.com/view/41578/ajax-view-in-ez-publish/ Je ne connais pas du tout ez-publish, j'ai fait la demande au webmaster mais je n'ai pas de réponse. Dans quel(s) fichier(s) doit-on faire la modification ? avec un accès back-office, est-ce suffisant ? Merci PS : j'ai fait des essais avec du jQuery.ajax() mais toujours le même problème de cross-domain
SStephane Posté 29 Mai 2012 Posté 29 Mai 2012 D'après ce que j'ai compris (pas tout lu), il s'agit simplement de modifier les templates ez, rien de bien méchant, mais je doute que tu aies un accès te permettant de faire ça en tant qu'éditeur.
iNCiTE Web Posté 29 Mai 2012 Auteur Posté 29 Mai 2012 Salut, Le dév qu'il a fait la modif (l'ajout), mais je sais pas trop par où prendre le morceau
Ernestine Posté 29 Mai 2012 Posté 29 Mai 2012 Ton problème est un simple problème de communication entre une iframe et sa page mère, je ne vois vraiment pas le rapport avec Ajax. A moins que tu aies finalement opté pour charger le contenu dans un bloc via Ajax, et non plus via une iframe ? Ce qui résoudrait effectivement ton problème de shadow qui ne couvre pas tout l'ensemble de la fenêtre (mais nécessitera au développeur du site eZPublish d'inclure l'appel ajax au lieu d'inclure simplement l'iframe). En tous cas, le module set/layout d'eZPublish sert à rendre un noeud avec un template différent du template par défaut pagelayout.tpl (très utile en effet pour faire de l'ajax), mais je ne vois vraiment pas le rapport avec ton problème.
iNCiTE Web Posté 29 Mai 2012 Auteur Posté 29 Mai 2012 Et bien avec Ajax je dois pouvoir charger le contenu du module dans la page mère, sans l'iframe qui bloque définitivement la communication. Donc oui en effet j'ai changé de direction "Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème".
SStephane Posté 29 Mai 2012 Posté 29 Mai 2012 Les templates sont au choix dans les dossiers suivants : /design/[sITEACCESS]/override/templates /design/[sITEACCESS]/templates /extension/[NOM DE L'EXTENSION DESIGN]/design/[sITEACCESS]/override/templates /extension/[NOM DE L'EXTENSION DESIGN]/design/[sITEACCESS]/templates Elles ont toutes une extension .tpl Le layout est généralement dans un fichier qui s'appelle "pagelayout.tpl", mais c'est selon les dev.
iNCiTE Web Posté 29 Mai 2012 Auteur Posté 29 Mai 2012 Les templates sont au choix dans les dossiers suivants : /design/[sITEACCESS]/override/templates /design/[sITEACCESS]/templates /extension/[NOM DE L'EXTENSION DESIGN]/design/[sITEACCESS]/override/templates /extension/[NOM DE L'EXTENSION DESIGN]/design/[sITEACCESS]/templates Elles ont toutes une extension .tpl Le layout est généralement dans un fichier qui s'appelle "pagelayout.tpl", mais c'est selon les dev. J'en suis même pas là. Je dois créer un article, ou une nouvelle page ? Je ne vois pas trop où placer : /layout/set/[AJAX= selon comme tu l'as appelé]/node/view/full/[ID]" Pas facile quand on ne maitrise pas le CMS...
Ernestine Posté 29 Mai 2012 Posté 29 Mai 2012 Je ne vois pas trop où placer : /layout/set/[AJAX= selon comme tu l'as appelé]/node/view/full/[ID]" Nulle part ! Ça, ce sera l'url de ton noeud, si jamais tu utilises le module set layout. Mais vu que ton script est complètement indépendant du site eZPublish, qu'il sera intégré soit dans une iframe, soit appelé en ajax, je ne vois pas pourquoi tu aurais besoin de ce module. Tu leur envoies le code que tu as pondu (à priori : le javascript et une div html), tu leur dis de l'insérer et pis voila. Les développeurs du site sauront beaucoup mieux que toi comment l'intégrer, et où.
iNCiTE Web Posté 29 Mai 2012 Auteur Posté 29 Mai 2012 Je suis perdu... pour l'iframe il faut oublier, ça n'est pas possible. Mon module est composé de nombreux fichiers PHP, de scripts JS, d'un back-office et une base de données Il faut que j'ai accès à mon dév, ils sont juste sensés l'appeler depuis leur site, mais visiblement c'est à moi que revient cette superbe tâche
iNCiTE Web Posté 1 Août 2012 Auteur Posté 1 Août 2012 Je reviens sur le sujet, finalement ils m'ont ouvert un espace FTP sur le site, et dans le template ils appelent mon fichier index. Donc je suis dans la même page et je peux donc utiliser leur jQuery etc... Merci à tous pour votre aide.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant