Autres posts de la catégorie Prestashop :
0
Prestashop - Tools::addJS Tools::addCSS ne fonctionnent pasVoici une toute petite astuce, qui servira seulement à quelques uns d'entres vous.
Le problème :
Dans le développement d'un module Prestashop, je place un appel à Tools::addJS dans le hookHeader. Résultat : Rien ! Dans le code source, le fichier JS n'est pas appelé...
Résolution du problè

0
La traduction Prestashop ne fonctionne pas Le problème :
J'ai remarqué que le plus souvent, le formulaire de traduction Prestashop ne fonctionne pas. Vous validez le formulaire, et aucun changement ne se produit. Que ce soit la traduction des modules, du frontend, du backend.
Pour cause ? Le formulaire entier passe les données en une
PrestaShop. Intégrer du code HTML dans la description des catégories.
Lors de l'édition d'une catégorie, Prestashop supprime automatiquement toutes les balises HTML du champs description. Comportement assez étrange puisque l'éditeur tinyMCE est présent pour l'édition des produits et accepte les balises HTML. L'intérêt de pouvoir y intégrer ce genre de balises peut être non négligeable d'un point de vue SEO/Référencement.
La fonction suivante, trouvée sur le forum anglais de Prestashop, permet de modifier ce comportement.
Elle a été testée sous 1.4.0.17 ainsi que sous 1.4.7.0.
class Category extends CategoryCore
{
public function getTranslationsFieldsChild() {
self::validateFieldsLang();
$fieldsArray = array('name', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description');
$fields = array();
$languages = Language::getLanguages();
$defaultLanguage = Configuration::get('PS_LANG_DEFAULT');
foreach ($languages as $language)
{
$fields[$language['id_lang']]['id_lang'] = $language['id_lang'];
$fields[$language['id_lang']][$this->identifier] = intval($this->id);
$fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? Tools::htmlentitiesDecodeUTF8(pSQL($this->description[$language['id_lang']], true)) : '';
foreach ($fieldsArray as $field)
{
if (!Validate::isTableOrIdentifier($field))
die(Tools::displayError());
/* Check fields validity */
if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']]))
$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]);
elseif (in_array($field, $this->fieldsRequiredLang))
$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);
else
$fields[$language['id_lang']][$field] = '';
}
}
return $fields;
}
}
?>
Dans le dossier /override/classes/ vous devez créer un fichier Category.php et y copier le code ci-dessus. C'est tout.
Explications :
Ce code va écraser la fonction getTranslationsFieldsChild du fichier /classes/Category.php. Cette fonction était sensée faire appel à getTranslationsFields ainsi qu'à makeTranslationFields.
La différence de cette dernière fonction avec le code que nous avons ajouté se situe dans les appels pSQL(). Nous y ajoutons le second paramètre
La fonction suivante, trouvée sur le forum anglais de Prestashop, permet de modifier ce comportement.
Elle a été testée sous 1.4.0.17 ainsi que sous 1.4.7.0.
class Category extends CategoryCore
{
public function getTranslationsFieldsChild() {
self::validateFieldsLang();
$fieldsArray = array('name', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description');
$fields = array();
$languages = Language::getLanguages();
$defaultLanguage = Configuration::get('PS_LANG_DEFAULT');
foreach ($languages as $language)
{
$fields[$language['id_lang']]['id_lang'] = $language['id_lang'];
$fields[$language['id_lang']][$this->identifier] = intval($this->id);
$fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? Tools::htmlentitiesDecodeUTF8(pSQL($this->description[$language['id_lang']], true)) : '';
foreach ($fieldsArray as $field)
{
if (!Validate::isTableOrIdentifier($field))
die(Tools::displayError());
/* Check fields validity */
if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']]))
$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]);
elseif (in_array($field, $this->fieldsRequiredLang))
$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);
else
$fields[$language['id_lang']][$field] = '';
}
}
return $fields;
}
}
?>
Dans le dossier /override/classes/ vous devez créer un fichier Category.php et y copier le code ci-dessus. C'est tout.
Explications :
Ce code va écraser la fonction getTranslationsFieldsChild du fichier /classes/Category.php. Cette fonction était sensée faire appel à getTranslationsFields ainsi qu'à makeTranslationFields.
La différence de cette dernière fonction avec le code que nous avons ajouté se situe dans les appels pSQL(). Nous y ajoutons le second paramètre
true qui ne permettra pas la suppression des balises HTML.1 commentaire(s)
POSTER UN COMMENTAIRE

Merci pour cette classe.
Seul impact sur le listing des catégories dans le back-office, le code HTML est présent.
Il faudrait gérer ce cas pour éviter d’impacter le tableau avec la liste des catégories.
Merci encore