Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

Ajouter du javascript dans vos pages cms sous Prestashop

J’expliquais dans cet article comment ajouter du javascript dans les descriptions de vos produits mais, depuis la version 1.5.6.2 de Prestashop, le problème se pose également dans les pages cms.

Actuellement lorsque vous tentez d’ajouter du javascript à vos pages cms voici ce que vous obtenez:


Property CMS->content is not valid

Voici donc la solution pour régler ce problème
Créez un fichier “CMS.php” dans le dossier “override/classes” et ajoutez-y le code suivant:


<?php
class CMS extends CMSCore
{
	/**
	 * @see ObjectModel::$definition
	 */
	public static $definition = array(
		'table' => 'cms',
		'primary' => 'id_cms',
		'multilang' => true,
		'fields' => array(
			'id_cms_category' => 	array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'),
			'position' => 			array('type' => self::TYPE_INT),
			'indexation' =>     	array('type' => self::TYPE_BOOL),
			'active' => 			array('type' => self::TYPE_BOOL),

			// Lang fields
			'meta_description' => 	array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
			'meta_keywords' => 		array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
			'meta_title' =>			array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
			'link_rewrite' => 		array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128),
			'content' => 			array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString', 'size' => 3999999999999),
		),
	);
}

Rendez-vous ensuite dans le dossier “cache” et supprimez le fichier “class_index.php”

Voila désormais vos pages cms accepteront le javascript.

*** EDIT 20/03/14 ***
Apparemment sur PS 1.5.6.0 (et sans doute avant) la colonne “indexation” n’existe pas dans la table “cms”.
Il faut donc retirer la ligne suivante du code précédent:


'indexation' =>     	array('type' => self::TYPE_BOOL),

*** EDIT 19/03/15 ***
Si vous ne voyez pas votre javascript dans la page cms, pensez à aller dans “paramètres avancés/performances” et décocher la case “Déplacer le code JavaScript à la fin”.

Poster un Commentaire

25 Commentaires sur "Ajouter du javascript dans vos pages cms sous Prestashop"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
Sinisrus
Invité

Bonjour,

J’ai ajouté le fichier CMS.php dans override/classes avec le code que tu donne puis supprimer le fichier class_index.php mais ça ne marche toujours pas

je suis sur prestashop 1.5.6 je ne comprend pas comment prestashop peux charger un fichier qu’il ne connais pas sans qu’on lui demande quelque part?! le fichier CMS.php et appeler comment? c’est un script prestashop qui appel automatiquement tout les fichiers dans override?

merci d’avance pour la réponse

Sinisrus
Invité

j’ai tout verifier ça ne marche pas, lorsque j’enregistre ma page cms j’ai ce message.

Le champ contenu (Français (French)) est invalide.

ça le fait seulement avec le code javascript dans la page.

je ne comprend pas :-/

j’ai même ajouté à la fin ça ne marche pas

Sinisrus
Invité

Ben non pas d’érreur par contre j’ai plus de message d’erreur dans cms mais il me supprime le script a chaque fois :-(

Sinisrus
Invité

En faite avec ton code j’ai plus de message d’érreur de prestashop mais il supprime le script.

et sans ton code j’ai un message d’erreur et il garde le script

donc l’override à un effet mais pas celui que je cherche :-(

Sinisrus
Invité

ok c’est pas grave merci quand même

Sinisrus
Invité

tu pourrais me mettre un lien vers ton fichier?

si ça se trouve le problème vient de moi :-)

Mickael
Invité
Mickael

Hello,

Moi non plus cela na pas marché dans un premier temps car j’avais oublié les balise <?php (copier coller)

En les ajoutant le pb est parti et jai pu sauvegarder

neo_88
Invité
neo_88

bonjour,

faut-il faire des modifs sous prestashop 1.6 ?

j’ai essayé, mais cela ne fonctionne pas.

enmoderugby
Invité

Bonjour,

Je suis sur PS 1.6.

De prime abord ça fonctionne puisque j’arrive à enregistrer un CMS contenant du javascript par contre le javascript ne s’affiche pas quand on clique sur la page.

gok
Invité
gok

Ce message juste pour te remercier d’avoir partagé cette solution qui, sur mon Presta 1.5.6.1, marche nikel ! :)

Opalie
Invité
Opalie

Coucou!

Je tiens à te remercie le plus chaleureusement du monde car tu m’as retiré une sacré grosse épine du pied!
Mon client étant très pointilleux et ne connaissant pas prestashop sur le bout des ongle moi-même je suis heureuse de t’annoncer que cela fonctionne tout bien comme je voulais!! :D

Gil
Invité
Gil

Big big Hug!

Ça marche à la perfection, un grand bravo et un grand merci

Séb
Invité
Séb

Bonjour,
Je dois louper quelque chose car je n’arrive pas à ajouter de javascript dans ma page cms.
J’ai bien créé le fichier CMS.php dans le dossier override/classes avec le code donnée ci-dessus
J’ai bien supprimé le fichier class_index.php dans le dossier cache.
Mais dans ma page CMS, quand j’affiche le code html pour ajouter mon javascript et que je referme le code source pour le réafficher le javascript à disparu.
Je suis sous prestashop 1.6.11
Je loupe quelque chose ?
Merci d’avance

Séb
Invité
Séb

P.S : je n’obtiens d’ailleurs pas le message “Property CMS->content is not valid”

olivier
Invité
olivier

Bonjour,
Je vois que je ne suis pas seul.
Je suis en 1.6.11. je fais les essais en local sous easyphp . les dossisers sources sont sous module prestashop en local.
Quand je copie le fichier CMS.php dans override/class c est ok
Quand je supprime le class-index no probleme
quand je rentre mon petit bout de code js dans la page cms, le resultat de ce code apparait, ( cad un petit tableau. tout va bien. MAIS quand j enregistre ou voir et enregistrer l ensemble des lignes disparaissent alors que j ai un beau successfull update.
ca c’est un peu fort de café.
Alors j ai voulu valider le code le CMS.php avec l outil de easyphp et voici le message

Fatal error: Class ‘CMSCore’ not found in C:Program Files (x86)EasyPHP-DevServer-14.1VC9binarieshomecodesource.php on line 4

Sinon j ai essayé les differentes manip, desactiver le js a la fin dans preference, essayé de cocher ou decocher les option html…rien n y fait

je ne vois pas comment faire.

Julia
Invité
Julia

Un grand merci, je suis novice, et tout à fonctionné du premier coup !
Je suis ravie et je te remercie de cette astuce, et de ce blog bien utile que je viens de découvrir.

wpDiscuz