Jump to content

Création d'un variable pour fichier tpl


Recommended Posts

Bonjour à tous,

 

J'ai un ecommerce de produit alimentaire.  Afin de l'améliorer, je me suis lancé dans l'automatisation de processus. Avant je mettais manuellement le prix au kilo, qui devait etre changé à chaque modification de prix et promotions. Maintenant, c'est afficher sous le prix avec distinction Litre / Kilo. Le tout grace aux variables de la page livraison (poid, hauteur, largeur du colis) aui me sont inutiles (pas d'envoi).

 

Je voudrais afficher la date limite de consommation des produits. Malheureusement, je ne suis pas un pro de la programmation. Je me débrouille un peu sous php. L'environnement de prestashop est très complexe pour moi. Je compte faire une page externe pour modifier les dates sur une page unique et recevoir un mail journalier pour la gestion des casses et des promotions DLC.

 

Modifier le Product.tpl pour calculer et  afficher comme je veux n'est pas un problème tant que j'ai mes variables. Pour les DLC j'ai créé une colonne dans ma base (dans prestashop_product) mais je ne sais pas comment le récupérer dans mon fichier template. J'ai beaucoup cherché et trouvé la fonction assign de smarty mais ma comprehension de la chose s'arrete là. Je ne sais pas où sont récurérés les données de la base et assignés à des variables.

 

Pouvez vous m'aider?

 

 

Share this post


Link to post
Share on other sites

bonsoir,

si je comprend bien tu veux ajouter un champ style DLC dans ta page produit.

 

1) tu vas dans ton phpmyadmin, dans la table "ps_product_lang" tu vas dans structure et tu ajoutes une colonne de type text qu'on appelle "product_dlc".

2) tu crées un override de la classe product, (dans le dossier override/classes) tu crées un fichier que tu nomme Product.php

<?php

class Product extends ProductCore {
    
    public $product_dlc;

    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) {
        parent::$definition['fields']['product_dlc'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString');

        parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }

}

3) si tu veux créer un champ dans ton backoffice au niveau de la fiche produit tu crées /override/controllers/admin/templates/products/information.tpl

 

la tu reprend tout le code du tpl de /ton_dossier_admin/themes/default/template/controllers/products/informations.tpl (copier / coller)

 

et tu injectes le nouveau morceau de code qui va afficher ton nouveau champ

{*START NEW FIELD ALEX*}

	<div class="form-group">
		<div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="product_dlc" type="tinymce" multilang="true"}</span></div>
		<label class="control-label col-lg-2" for="product_dlc_{$id_lang}">
			<span class="label-tooltip" data-toggle="tooltip"
				title="{l s='Appears in the body of the product page.'}">
				{l s='DLC Produit'}
			</span>
		</label>
		<div class="col-lg-9">
			{include
				file="controllers/products/input_text_lang.tpl"
				languages=$languages input_name='product_dlc'
				input_value=$product->product_dlc}
		</div>
	</div>
{*END NEW FIELD ALEX*}
 

3) tu effaces /cache/class_index.php

 

4) tu as envie de faire l importation des nouvelles données DLC via un csv et l outils d import produit de prestashop pour te faire gagner du temps:

tu crées override/controllers/admin/AdminImportController.php

 

<?php
class AdminImportController extends AdminImportControllerCore
{
	public function __construct()
	{
		parent::__construct();
		$this->available_fields += array(


'product_dlc' => array('label' => $this->l('DLC Produit')),



		);
	}





}
tu effaces encore class_index.php

 

5) pour afficher la variable au niveau de product.tpl, tu injectes ou tu veux dans le code:

 

{$product->product_dlc|escape:'html':'UTF-8'}
cdt Edited by Alex-Kodd (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Merci beaucoup poiur cette réponse très précise.

 

Je ne vais pas utilisé le CSS car je dois rentrer moi meme les dates. Je me suis fait un petit tableau avec imput pour me faciliter les choses à la réception d'une commande.

 

Je peux maintenant afficher ma DLc sur les fiches produits. Demain je regarde pour inclure un input dans le Backoffice.

 

Merci encore et bonne soirée.

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
 Share

×
×
  • Create New...

Important Information

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