Jump to content

Description des catégories en HTML pour le référencement


Recommended Posts

Bonjour,

 

eh mince ... ma longue explication perdue ! Je recommence...

Le but est de permettre au référenceur de mettre des descriptions en html tout comme cela existe pour les fabricants entre autre.

En effet, il est bon d'avoir un contenu personnalisé et syntaxé (h1, h2, p, etc.) sur les diverses pages du sites à savoir accueil, produit, catégorie, fabricant, cms, ...

Ca existe pour tout sauf pour les catégories ...je ne comprends pas pourquoi !

 

Pour cela il faut donc :

- mettre l'éditeur HTML dans le back office

- éviter les balises html dans l'interface de gestion dans le tableau donnant la liste des catégories, sous catégories comprenant la description (pour les fabricants la description n'est tout simplement pas affichée dans le tableau... çà peut aussi etre une solution!)

 

>>>>>>>>> Mettrel'éditeur HTML dans le back office :

 

simple :

---Modifier AdminCategories.php classe DisplayForm

ajouter la class rte et le code pour tiny (attention il faut rouvrir le echo pour le label image ensuite bien sûr ) :

echo '
 <div class="lang_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;">
  <textarea name="description_'.$language['id_lang'].'" class="rte" cols="48" rows="10" >'.htmlentities(stripslashes($this->getFieldValue($obj, 'description', $language['id_lang'])), ENT_COMPAT, 'UTF-8').'</textarea>
 </div>';
 echo ' <p class="clear"></p>
</div>
 ';
 // TinyMCE
 global $cookie;
 $iso = Language::getIsoById((int)($cookie->id_lang));
 $isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en');
 $ad = dirname($_SERVER["PHP_SELF"]);
 echo '
  <script type="text/javascript">
  var iso = \''.$isoTinyMCE.'\' ;
  var pathCSS = \''._THEME_CSS_DIR_.'\' ;
  var ad = \''.$ad.'\' ;
  </script>
  <script type="text/javascript" src="'.__PS_BASE_URI__.'js/tiny_mce/tiny_mce.js"></script>
  <script type="text/javascript" src="'.__PS_BASE_URI__.'js/tinymce.inc.js"></script>';

 

--- fichier Category : modifier le type du champ description en isString pour que le html soit pris en compte dans la validation de l'update :

protected  $fieldsValidateLang = array('name' => 'isCatalogName', 'link_rewrite' => 'isLinkRewrite', 'description' => 'isString', 'meta_title' => 'isGenericName', 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName');

 

modifier la fonction getTranslationsFieldsChild par celle-ci

public function getTranslationsFieldsChild()
{
 $fieldsArray = array('name', 'description', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description');
 $fields = array();
 $languages = Language::getLanguages(false);
 $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] = (int)($this->id);
  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']], true);
elseif (in_array($field, $this->fieldsRequiredLang))
 $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);
else
 $fields[$language['id_lang']][$field] = '';
  }

  $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : '';
 }
 return $fields;
}

 

 

>>>>>>> problème pour affichage de la description dans le back office

 

1) tout simplement ne pas l'afficher dans le tableau de la liste des catégorie

En enlevant dans AdminCategories.php le champ description du

$this->fieldsDisplay

 

2) en enlevant le code html dans le tableau car c'est pas pris en compte actuellement dans le coeur de prestashop je ne sais pas pourquoi car il n'y a jamais de html à afficher dans les tableaux de liste de produit, de liste de fabricant, de liste de categories

 

il suffit de modifier le fichier AdminTab.php et d'utiliser la fonction strip-tags

ligne 1530 pour la v1.4.5.1 de PS (release 8991 $ du fichier)

$echo = ($key == 'price' ? round($tr[$key], 2) : isset($params['maxlength']) ? Tools::substr(strip_tags($tr[$key]), 0, $params['maxlength']).'...' : strip_tags($tr[$key]));

 

>>>>>>> coté client l'affichage est déjà pris en compte ... mais c'était une simple chaine sans possibilité de mettre des balises pour la description.

 

Voilou si çà peut aider quelqu'un.. voir si çà peut etre intégré à PS ! Du coup on peut avec la dernière modification ajouter la description_short dans la liste des fabricants.

 

Bye

AdminCategories.php

AdminTab.php

Category.php

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Merci beaucoup, ca marche impecable sur mon prestashop 1.4.4.1

 

Petit ajout

 

Pour ne plus afficher l'image de base de la categorie, et ainsi mettre en forme une nouvelle image en html, il faut modifier dans le fichier category.tpl de votre template

 

 

{if $category->id_image}
       <img src="{$link->getCatImageLink($category->link_rewrite, $category->id_image, 'category')}" alt="{$category->name|escape:'htmlall':'UTF-8'}" title="{$category->name|escape:'htmlall':'UTF-8'}" id="categoryImage" />
{/if}

 

 

par

 

 

 

{if $category->id_image}
       <!--<img src="{$link->getCatImageLink($category->link_rewrite, $category->id_image, 'category')}" alt="{$category->name|escape:'htmlall':'UTF-8'}" title="{$category->name|escape:'htmlall':'UTF-8'}" id="categoryImage" />-->
{/if}

Link to comment
Share on other sites

Autre chose aussi

 

Lorsque vous ecrivez votre code html pour décrire la catégorie, ne faite pas de saut a la ligne pour eclaircire le code, car ils seront retrenscris en saut de ligne

 

Exemple a ne pas faire



<table>
<tr>
<td>
<img src='ttrucbidul'/>
</td>
<td>
Le text
</td>
</tr>
</table>

 

A la place il faut l'ecrire ainsi

 

<table><tr><td><img src='ttrucbidul'/></td><td>Le text</td></tr></table>

Link to comment
Share on other sites

Bonjour et merci pour ce post qui m'a été très utile.

J'ai juste un petit souci:

quand on survole le nom de la catégorie dans le menu, on voit le code html

je n'ai pas trouvé ou il fallait le modifier.

 

Une idée?

 

Guillaume

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
  • 2 months later...
  • 2 months later...

Bonjour,

 

Je remonte ce post car il est mentionné que l'on peut simplement modifier la classe DB pour obtenir l'effet désiré mais chez moi cela ne fonctionne pas (V1.4.9).

 

Doit-on impérativement passer par la première modif indiquée dans ce post pour ajouter une simple balise <b></b> dans sa description ?

 

Merci

Link to comment
Share on other sites

  • 4 weeks later...
  • 4 weeks later...
  • 2 weeks later...

Bonjour,

 

à partir de la version 1.5

apparemment pour insérer du code html dans la description des catégories on peut ajouter

'autoload_rte' => true,

 

à la ligne 405 du fichier AdminCategoriesController.php.

 

Par contre, tout comme le dis ekoter dans son post plus haut; le html apparaît au survol de la souris sur le nom de la catégorie.

 

Quelqu’un sait il comment modifier cela?

 

edit:

->je me réponds moi même:

il faut modifier le fichier category-tree-branch.tpl du dossier modules/blockcategories

et remplacer

title="{$node.desc|escape:'htmlall':'UTF-8'}"

par

title="{$node.desc|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}"

 

Peut être faut il également modifier le category-tree-branch.tpl du dossier themes

Edited by Acidy (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour Acidy,

Est ce que tu n'a fait que modifier ce fichier AdminCategoriesController.php? ou as tu aussi fait les autres manipulations?

Ou se trouve ce fichier (ainsi que les autres dont on parle dans ce post: AdminCategories.php / AdminTab.php et Category.php), je n'arrive pas a le repérer!

Merci d'avance pour votre aide!

Link to comment
Share on other sites

Je sais pas si je regarde au bon endroit, mais c'est bien dans le dossier controllers (qui se trouve a la racine du site)? parce que moi dans ce dossier je n'ai que des fichiers, et pas de dossier admin... ou je cherche pas au bon endroit?

 

Je travaille sur la version 1.4.8.2 de Prestashop (je suis suis encore un peu débutante!)

Merci d'avance.

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

Oui c'est bien dans ce dossier par contre je parle de la 1.5.2. L'arborescence est sans doute différente dans les versions 1.4.x et je pense que ma solution ne marche qu'à partir des versions 1.5.x.

 

Je fait un edit de mon post précédent pour le préciser

Link to comment
Share on other sites

Voici la solution à ma question de balise html au survol des catégories:

(j'ai édité mon post original pour plus de lisibilité)

 

il faut modifier le fichier category-tree-branch.tpl du dossier modules/blockcategories

et remplacer

title="{$node.desc|escape:'htmlall':'UTF-8'}"

par

title="{$node.desc|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}"

 

Peut être faut il également modifier le category-tree-branch.tpl du dossier themes

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

Bonsoir, tout marche parfaitement mais il y a la balise h1 qui se trouve également dans le menu à gauche et même en faisant les modifications dans le category-tree-branch.tpl du thème ainsi que du module à la racine du site, cela s'affiche quand même est ce normal?

 

Merci d'avance pour vos réponses.

 

Cordialement.

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

D'accord, moi il ne s'enlève pas de la category-tree-branch en fait, c'est ça mon soucis principal...par contre vous dites de faire une modification comme cela :

 

title="{$node.desc|escape:'htmlall':'UTF-8'}"

 

par

 

title="{$node.desc|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}"

 

ALors que dans son fil de discussion par:

 

{$node.desc|strip_tags|escape:html:’UTF-8′}

 

Qui n'est pas la même écriture.

Link to comment
Share on other sites

  • 3 months later...

salut

 

Je viens de faire la manip pour les trois fichiers sauf que j'obtiens une erreur à chaque fois que je veux enregistrer un texte: le champ id_parent est invalide

 

si quelqu'un à la solution à ce problème :)

 

J'ai également le meme probleme, quelqu'un peut il nous éclairer ?

Merci par avance.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour à tous,

 

je suis en 1.4.6.2 et la manip fonctionne très bien.

 

par contre impossible de modifier le TPL pour enlever le code HTML de la balise TITLE.

 

j'ai bien modifier les lignes du category-tree-branch.tpl et du fichier du thème, mais toujours pareil.

 

De plus, j'ai modifié le category-tree-branche du module ET du thème, et rien ne fonctionne. J'ai vidé le cache dans tools->smarty_v2->compile mais rien n'y fait

 

J'ai aussi carrément supprimé le "title='. . . ." et il s'affiche toujours.

 

C'est où qu'il est ???

 

help help help ! ! !

 

Merci

Patrick

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

  • 1 month later...

Pour la version 1.4x nulle besoin de modifier les classes de validation, il suffit de modifier la classe DB.

 

Je vous renvois sur l'excellent tutoriel que voici : http://www.prestasho...s-descriptions/

 

Ca fonctionne nickel avec 1.4.9, cependant, j'ai le même soucis que Patrick_64, à savoir impossible de me débarrasser du code html dans la description en survol du bloc catégorie.

 

J'ai modifié le category-tree-branch.tpl comme indiqué sans succès que ce soit dans mon thème ou dans le dossier modules à la racine

Link to comment
Share on other sites

Message pour chalkeia

 

Ne t'affole pas, fait la manip pour enlever l'affichage du HTML : http://www.prestashop-blog.com/2011/09/09/astuce-prestashop-1-4-x-comment-autoriser-des-balises-html-dans-les-descriptions/

et surtout attends, il y a quelque part du cache, je ne sais pas si c'est le navigateur, le serveur, le site, enfin bref, 15 jours après, tout est nickel.

 

Bonne continuation

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