Jump to content
pascalbochet@live.fr

récupérer les données utilisateurs sur les fiches produits

Recommended Posts

Bonjour à tous,

J'utilise la version 1.6.0.9 avec le theme Flatroshop

J'essai en vain de vouloir afficher les différents champs visibles dans "Mes informations personnelles" de l'utilisateur connecté, directement dans les fiches produits. Notamment un champs "dep"(pour le département). Ceci afin de faire des tests sur le département et déterminer l'image qui s'affiche sur la fiche produit.

En suivant les tuto, j'ai déclaré cette variable dans authentification.tpl, identity.tpl, cookies.php et customer.php

Quand je suis sur "mon compte", cela marche bien

Mais je cherche depuis assez longtemps à faire le pont pour avoir accès à ces variables depuis product.tpl

Quelles sont les pistes??

merci

 

Share this post


Link to post
Share on other sites
En suivant les tuto, j'ai déclaré cette variable dans authentification.tpl, identity.tpl, cookies.php et customer.php

 

 

Si tu as ajouté un définition à Customer 

 

Tu peux la récupérer avec le context :

$this->context->customer->dep

Share this post


Link to post
Share on other sites

Merci OkOm pour ta réponse... j'ai tout de meme un soucis de compréhension... 

$this->context->customer->dep 

s'ajoute bien dans un fichier php?

comment je fais pour la récupérer dans mon product.tpl

... je pense que j'ai codé n'importe quoi à force de lire ... 

et j'ai du mal a comprendre la liaison entre mes déclarations php et la sortie sur un tpl !!

(je me fouette pourtant !!! lol)

 

voici les différents ajouts que j'ai fais...

 

dans customer.php

 

/** je met la variable du departement pour identifier association correspondante */

public $depasso;
 
/** je déclare depasso dans la définition */
public static $definition = array(
'table' => 'customer',
'primary' => 'id_customer',
'fields' => array(
...
'depasso' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
...

 

/** je l'ajoute a ma fonction getcustomer*/

public static function getCustomers()
{
$sql = 'SELECT `id_customer`, `email`, `firstname`, `lastname`, `depasso`

 

dans authentification.tpl (c'est un champs obligatoire)

...

<div class="required form-group">

<label for="depasso">{l s='Votre Code Postal'} <sup>*</sup></label>
<input type="text" class="is_required validate form-control" data-validate="isdepasso" id="depasso" name="depasso" onblur="$('#depasso').val($(this).val());" value="{if isset($smarty.post.depasso)}{$smarty.post.depasso}{/if}" />
<input type="hidden" id="depasso" name="depasso" value="{if isset($smarty.post.depasso)}{$smarty.post.depasso}{/if}" />
</div>
...

 

dans identity.tpl (toute modification enregistré en BDD)

...

<div class="required form-group">    
<label for="depasso" class="required">
{l s='Votre Code Postal'}
</label>    
<input class="is_required validate form-control" data-validate="isdepasso" type="text" name="depasso" id="depasso" value="{$smarty.post.depasso}"/>
</div>

...

 

et dans cookies.php (je l'ai ajouté dans la fonction mylogout)

 

unset($this->_content['depasso']);

 

 

Merci si tu peux me faire avancer OkOm (7n1)

Share this post


Link to post
Share on other sites

Bon ok on va commencer par le début.

 

Tu as modifié directement /classes/Customer.php ? 

Share this post


Link to post
Share on other sites

Prestashop propose des overrides voici la doc : http://doc.prestashop.com/display/PS16/Overriding+default+behaviors

 

Donc il ne faut pas modifier les fichiers directement

 

Tu trouveras ici un tuto pour ajouter un champ à la classe Product

 

http://www.novazen.net/blog/development/ajouter-un-nouveau-champ-personnalise-sur-la-fiche-produit/

 

En lisant bien le tout ( surtout la section 3.2 pour toi ) tu pourras le faire pour la classe Customer

 

Quand tu seras ok il faudra faire une override de ProductController.php pour assigner ta variable département au tpl  

Share this post


Link to post
Share on other sites

Salut

$this->context->customer->dep 

s'ajoute bien dans un fichier php?

 

ca s'ajoute dans le cookie de prestashop ou tu pourras recup la donnée dans n'importe quel tpl

 

sans vouloir troller la réponse de okom3pom

Edited by Alexandre Carette (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

chi va piano va sano e va lontano chi va forte va alla morte

 

Step by Step :P

Share this post


Link to post
Share on other sites

oui... allons y par étape !!

 

Ma variable est créée dans la table xxx_customer et se nomme "depasso"

 

J'ai donc créé le fichier customer.php dans l'override: (j'ai bien compris que le customer.php d'origine devait resté propre... j'ai donc nettoyé le mien de mes ajouts !)

<?php
class Customer extends CustomerCore
{
  public $depasso;
  public static $definition = array(
   'fields' => array(
     'depasso' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
    ),
  );
}
 
J'ai créé le répertoire customers et le fichier informations.tpl
override/controllers/admin/templates/customers/informations.tpl
(!oupsss je n'ai pas de fichier information . tpl dans le répertoire customer du chemin admin !! => stand bye plutot que de faire des betises ! c'est pour le BO a ce que j'ai vu !)
 
bref... je continu par la modification de... product.tpl puisque c'est dans ce fichier que je veux voir apparaitre ma variable ! non?
 
j'ai modifier comme cela (meme si les onglets c'est bizarre!)
 
<div id="more_info_block" class="clear">
  <ul id="more_info_tabs" class="idTabs idTabsShort clearfix">
  <!-- ... -->
 
  {if $customer->depasso }
    <li>
      <a id="more_info_tab_information" href="#idTab13">
        {l s='département'}
      </a>
    </li>
  {/if}
 
  <!-- ... -->
</ul>
 
<div id="more_info_sheets" class="sheets align_justify">
  <!-- ... -->
 
  {if isset($customer) && $customer->depasso }
  <div id="idTab13" class="rte">{$customer->depasso }</div>
  {/if}
 
  <!-- ... -->
</div>

 

 

J'ai donc ajouté théoriquement le champs dans tous mes products...

je vide mon cache !

 

ETTTTTTT.......voilà ! ... rien du tout

pas de panique, je pense qu'il y a encore des choses à faire !

 

quelle est la prochaine étape??

Share this post


Link to post
Share on other sites

Les tpls c'est dans ton thème que tu les modifies.

 

L'exemple plus haut c'est pour ajouter un champ dans l'admin donc tu n'as pas à mettre les tpl 

 

override/controllers/admin/templates/

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More