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 true qui ne permettra pas la suppression des balises HTML.
Posté par Franck, le 23-04-2012

1 commentaire(s)

POSTER UN COMMENTAIRE
  1. 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

POSTER UN COMMENTAIRE


+ 4 = 10