Jump to content

[Prestashop 1.4.10&Smarty&php] Script PHP avec template


MadW

Recommended Posts

Bonjour à tous.

 

Je viens à nouveau quérir vos lumières.

 

Je suis actuellement confronté à un sérieux problème concernant l'ajout de données dans des CMS et l'éditorial d'un site, données amenées par des algorythmes extérieurs à la boutique.

 

Voilà exactement où est mon problème :

 

Jusque là mon site était en Prestashop version 1.4.8.2. Sur cette version, il était possible d'éditer la configuration de Smarty, et d'y modifier la fameuse variable "$allow_php_tag" (passage de False à True).

A partir de cet instant, je pouvais donc faire appel à un fichier php tiers, et le laisser faire ce qu'il avait à faire (galerie d'images par exemple), à l'intérieur même du template (cms.tpl ; editorial.tpl).

 

Un autre site en 1.5.0, il fallait ce coup ci éditer smarty.config.inc.php dans le répertoire Config, de changer l'appel de la classe Tools/Smarty/smarty.class.php en Tools/Smarty/smartyBC.class.php.

Et à nouveau appeler un script php à l'intérieur du template de mon choix.

 

C'était pas propre du tout, j'en conviens, mais ça marchait.

 

 

Maintenant, j'ai fait migré mon site 1.4.8.2 en 1.4.10.0, et qu'il s'agisse de la 1.4.9.0 ou de la 1.4.10.0, il n'y a plus NI $allow_php_tag, NI smartyBC.class.php.

 

Que dois je faire avec cette version pour intégrer du contenu PHP dans mes templates ?

 

Est il possible d'implanter une autre version de Smarty dans Prestashop 1.4.10.0, récupérée dans une autre version de Prestashop ?

 

 

Il existe j'imagine un autre moyen de faire les choses, BEAUCOUP plus propre, à savoir faire appel au script PHP dont j'ai besoin AVANT l'appel du template, mais j'aimerai savoir où l'on pourrait apporter ces modifications.

C'est à dire, si je dois intégrer du contenu dynamiquement dans mon template cms.tpl, quel est le fichier appelant cms.tpl que je dois modifier ? Et ce à quel endroit ?

Idem pour editorial.tpl.

 

[Fonctionnement normal de Prestashop :

Fichier_père.php :
[...]
appel cms.tpl
[...]
Fin de Fichier_père.php

 

Mon souhait :

Fichier_père.php :
[...]
appel mon_script_php.php
appel cms.tpl
[...]
Fin de Fichier_père.php

]

 

 

Voilà trois questions dont j'espère avoir une réponse :unsure:

 

Merci de m'accorder un peu de votre temps.

Edited by MadW (see edit history)
Link to comment
Share on other sites

Sans réponse aucune, dois je considérer que ce problème de "choc des versions de Smarty dans Prestashop" n'a pas de correction possible ou envisageable ?

 

Cela est d'autant plus dérangeant puisque certains modules à effet graphique (pour leur tâche principale) ne sont pas non plus compatibles avec une version supérieures à la 1.4.8.2, et cela est vraiment gênant... J'aurai bien souhaité au moins savoir pourquoi...

Edited by MadW (see edit history)
Link to comment
Share on other sites

Que dois je faire avec cette version pour intégrer du contenu PHP dans mes templates ?

Il est préférable de ne pas inclure du php dans un tpl, pour des raisons de sécurité et ça va à l'encontre de la philosophie smarty.

 

Est il possible d'implanter une autre version de Smarty dans Prestashop 1.4.10.0, récupérée dans une autre version de Prestashop ?

il est possible de rester en smlarty 2 au lieu de smarty 3, mais le 3 est plus rapide de 20% si mes souvenirs sont bons (sans compter des fonctions qui sont en smarty 3 et non en 2)

 

As-tu réfléchis à inclure un fichier, ou mieux encore créer ta fonction smarty (il y a des tuto très biens fais là dessus)

 

C'est à dire, si je dois intégrer du contenu dynamiquement dans mon template cms.tpl, quel est le fichier appelant cms.tpl que je dois modifier ? Et ce à quel endroit ?

 

Idem pour editorial.tpl.

pour le cms c'est très simple : controllers/front/CmsController.php

Pour editorial, i y a un hook : displayHome (https://github.com/PrestaShop/PrestaShop/blob/master/modules/editorial/editorial.php)

  • Like 1
Link to comment
Share on other sites

Merci pour ta réponse !

 

J'aurai dû tilter bien avant, mais je n'osais jusque là pas toucher directement à CmsController.

Quant à editorial, j'étais encore les mains liées...

 

Je vais donc essayer ça.

 

Faire appel à un fichier.php contenant quelques fonctions, chacune dédiée à un carrousel/galerie suivant l'ID du CMS envoyé en argument, ou traçant le carrousel d'accueil s'il s'agit de l'éditorial. Ok.

 

 

Quant à Smarty 3, sur les précédentes versions de Prestashop je n'ai jamais eu un seul souci. Etrange que pour le Smarty 3 de P1.4.9 et P1.4.10.0 cela ne fonctionne pas de la même manière.

 

Faire les fonctions smarty reste une idée. Je n'ai encore que peu de compétence à ce sujet, mais ce n'est pas ça qui me fait froid aux yeux, si tu penses que cela est possible de le faire ainsi.

 

 

 

J'ai donc un problème similaire, à propos d'un module payant. "v1.2-carrousel-slider-promotions-et-reductions-special-products-caroussel.zip" appelé "mscarrouselspecials".

Puis je en parler ici ou dois je ouvrir un ticket ailleurs ?

 

Je sais qu'il est clairement noté que ce module n'est que "P1.3.X -> P1.4.8.2", mais ça me chagrine de l'avoir acheté il y'a un ou deux ans, et de me dire que je ne peux plus l'utiliser puisque n'est pas compatible avec la dernière mise à jour. C'aurait été pour savoir si cela venait là aussi d'un souci de Smarty ou "juste" d'un petit hic codé codage. Dans le second cas, cela m'effraie moins étrangement.

Edited by MadW (see edit history)
Link to comment
Share on other sites

faire des fonctions smarty est assez simple, voici un tuto très bien fait : http://blog.dev-net.fr/2012/01/ajoutez-vos-propres-fonctions-a-smarty-depuis-un-module-prestashop/

 

sur addons il faut en général changer manuellement les versions compatibles donc le module est certainement compatible 1.4.10,

tu peux toujours tester sur une boutique démo installé sur ton pc

Link to comment
Share on other sites

Concernant le module en question, non, je l'ai essayé. En l'ayant installé à gauche au sommet, la totalité de la page déconnait.

En l'installant à droite au sommet, toute la colonne de droite disparaissait.

 

Il doit y'avoir un truc à faire, et là j'avoue que je tourne plutôt en rond.

 

 

 

 

Je posterai à la suite quant à mon problème de galerie/carrousel intégré à un "contenu Smarty".

Edited by MadW (see edit history)
Link to comment
Share on other sites

Donc une erreur de codage dans le module lui même, de base ? Personnellement je n'ai strictement rien modifié en son sein, pourtant. Et sur 1.4.8.2 ça posait aucun souci.

 

A croire que les versions V3 de Smarty de P1.4.8.2 et P1.4.10.0 sont vraiment différentes...

 

J'ai retiré mes propres modifications de la page d'accueil, tout laissé en "neutre", et la colonne plante.

Donc je jetterai un oeil sur ce fameux module alors.

Edited by MadW (see edit history)
Link to comment
Share on other sites

Bah il semblerait bien que ça soit une V3 des deux cotés.

Mais en effet il y'a bel et bien un différence de version.

 

Prestashop 1.4.8.2 : Version Smarty 3.0.7

Prestashop 1.4.10.0 : Version Smarty 3.1-DEV

 

 

 

J'en profites pour un petit rappel :

- Intégrer du code PHP dans controleur CMS et editorial, OK, je taperais ça demain.

- Intégrer le module mscarrouselspecials, il faut que je regarde s'il ne manque pas une {literal} quelque part, sachant que P1.4.8.2 et P1.4.10.0 ne partagent PAS la même version de Smarty.

 

Et j'ai une question facultative : je souhaitais intégrer une vidéo par le biais de balises <object [...] ><param [...]>...</object> dans une page CMS, balises appelant un fichier "player_videos_flv.swf". Normalement le code fonctionne parfaitement.

Or, à l'insérer, à sauvegarder et à le rééditer, le code reste dans l'éditeur de Prestashop, dans le back-office.

Alors que sur le-front office, Smarty V3.1-DEV ne veut pas m'interpréter ce bout de code.

 

Je regarderai demain si Smarty V3.0.7 accepte de m'afficher l'objet vidéo.

 

 

Une remarque pour terminer aujourd'hui - et je pense que j'aurai fait le tour de tous mes doutes, de toutes mes interrogations concernant Smarty :

 

Intégrant une cinquantaine de boutiques diverses et variées sur la map "Nos Magasins"/googlemaps de ma boutique, tout fonctionnait correctement sur Prestashop 1.4.8.2/Smarty 3.0.7, et ce même après une petite modification de ma part sur le code javascript de cette fameuse page.

 

Et du jour au lendemain, après plusieurs mois d'utilisation/consultation de la part des internautes, ça s'est mis à planter sur Internet Explorer - l'on me demande à rendre ma boutique compatible à une grande majorité de navigateurs.

En remplissant le champ "Ville" par "Paris", et en sélectionnant le premier résultat proposé dans la liste déroulante qui s'affiche alors - soit une boutique PARISIENNE - , la carte se mettait à jour (normal !) et me pointait alors automatiquement la première boutique REFERENCEE de tout le site (soit une boutique se trouvant en Isère, comportement parfaitement anormal). Je n'ai jamais compris pourquoi.

 

En passant en Prestashop 1.4.10.0/Smarty 3.1-DEV, ce bug a disparu. Je doute que ça soit clairement lié à Smarty 3.0.7, mais j'aurai bien aimé comprendre...

Edited by MadW (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...