Aller au contenu

iframe/Shadowbox/JS


iNCiTE Web

Sujets conseillés

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 :wacko:

Auriez-vous une idée de contournement (le cross-domain ne semble pas solutionnable pour Javascript) :unsure:

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

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/

Lien vers le commentaire
Partager sur d’autres sites

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 :nonono:

Je vais regarder ces pistes, merci.

Lien vers le commentaire
Partager sur d’autres sites

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.

:?:

Lien vers le commentaire
Partager sur d’autres sites

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 :mad2:

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :D

Lien vers le commentaire
Partager sur d’autres sites

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 :evil:

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :whistling:

"Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème".

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :blush:

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 :nonono:

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...