Jump to content

[RESOLU]Hook DisplayProductList


Recommended Posts

Bonjour,
Sous Prestashop 8.1.7 , j'essai de coder un module simple qui à pour but d'ajouter le bouton "Ajouter au panier" avec le champs quantité et ses flèches devant. 

Je n'arrive pas a savoir quel hook utilisé pour tous ce qui concerne les affichage en liste, comme quand on rentre sur une categorie ou les "produits populaires" etc..
DisplayProductList ne fonctionne pas...

Merci d'avance de votre aide

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

merci pour ta réponse 
mais cela ne fonction pas rien ne s'affiche chez moi.
je te mets mes code si tu veux jeter un oeil
monmodule.php
 

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}

class MonModule extends Module
{
    public function __construct()
    {
        $this->name = 'monmodule';
        $this->tab = 'front_office_features';
        $this->version = '1.0.0';
        $this->author = 'moi';
        $this->need_instance = 0;
        $this->bootstrap = true; // Utiliser Bootstrap pour les styles par défaut

        parent::__construct();

        $this->displayName = $this->l('Mon Module');
        $this->description = $this->l('Affiche un champ de quantité avec flèches et un bouton "Ajouter au panier" entre le titre et le prix des produits dans la liste.');

        $this->ps_versions_compliancy = array('min' => '8.0.0', 'max' => _PS_VERSION_);
    }
    public function install()
    {
        return parent::install() &&
           $this->registerHook('displayProductActions');
    }
    public function uninstall()
    {
        return parent::uninstall();
    }
	public function hookDisplayProductActions($params)
	{
		// Spécifiez le chemin du fichier de log
		$logFile = _PS_MODULE_DIR_ . 'monmodule/log.txt';

		// Écrire un message de début de log pour indiquer l'appel du hook
		file_put_contents($logFile, "Hook displayProductActions appelé\n", FILE_APPEND);

		// Vérifiez les données reçues et écrivez-les dans le fichier de log
		if (isset($params['products']) && is_array($params['products'])) {
			// Écrire les données reçues dans le fichier de log
			file_put_contents($logFile, "Données produits :\n" . print_r($params['products'], true) . "\n", FILE_APPEND);

			// Assigner les données au template Smarty
			$this->context->smarty->assign('products', $params['products']);
			return $this->display(__FILE__, 'views/templates/hook/displayProductList.tpl');
		} else {
			// Écrire un message si aucune donnée produit n'est disponible
			file_put_contents($logFile, "Aucune donnée produit disponible dans displayProductActions\n", FILE_APPEND);
		}
		return '';
	}
}

displayProductList.tpl
 

{debug}

{foreach from=$products item=product}
    <div class="product-add-to-cart js-product-add-to-cart">
        {if !$configuration.is_catalog}
            <span class="control-label">{l s='Quantity' d='Shop.Theme.Catalog'}</span>

            <div class="product-quantity clearfix">
                <input
                    type="hidden"
                    name="product_id"
                    value="{$product.id_product|escape:'html':'UTF-8'}"
                >
                <div class="qty">
                    <input
                        type="number"
                        name="qty"
                        id="quantity_wanted_{$product.id_product|escape:'html':'UTF-8'}"
                        inputmode="numeric"
                        pattern="[0-9]*"
                        value="1"
                        min="1"
                        step="1"
                        data-step="1"
                        class="input-group form-control"
                        aria-label="{l s='Quantity' d='Shop.Theme.Actions'}"
                    >
                </div>

                <div class="add">
                    <button
                        class="btn btn-primary add-to-cart"
                        data-button-action="add-to-cart"
                        type="submit"
                    >
                        <i class="material-icons shopping-cart">&#xE547;</i>
                        {l s='Add to cart' d='Shop.Theme.Actions'}
                    </button>
                </div>
            </div>

            {hook h='displayProductActions' product=$product}
        {/if}
    </div>
{/foreach}

 

Link to comment
Share on other sites

1 hour ago, spawns said:

oui c'est le hook que j'ai utilisé a la base
mais je n'arrive pas à récupérer les infos du produits.
Tu peux faire le test avec mon module

Je mets ici un exemple de module entièrement fonctionnel pour Prestashop 8.x.
Jetez un œil à toutes les fonctionnalités, TPL, JS et CSS.

ps8mod_productlistcart.zip

 

image.thumb.png.b3946146976851dce6eb8a483f1b85d4.png

Edited by ps8modules.com (see edit history)
Link to comment
Share on other sites

  • spawns changed the title to [RESOLU]Hook DisplayProductList

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