Jump to content

Problème d'affichage dans un module


Samos

Recommended Posts

Bonsoir,

 J'essaye d'apprendre à créer des modules et j'ai quelques questions. 😊

J'ai essayé de lire la doc mais je ne vous cache pas que je comprend pas tout. J'ai donc opté pour un livre (celui ci : https://www.eyrolles.com/Chapitres/9782212141924/9782212141924.pdf) mais, je me retrouve bloqué au premier chapitre... 😐

Le but de l'exercice est de créer un module de notation et de commentaires produit. La partie back-office fonctionne, cependant, je n'arrive pas à afficher un message sur le site.

Je pense donc que ce livre, (qui ce dit être pour la 1.7) est fait pour la version 1.6 de prestashop. 😋

Je vous met mon code en espérant trouver de l'aide : (le module se nomme mymodcomments)

 mymodcomments.php (a la racine) :

<?php

  class MyModComments extends Module
  {
    public function __construct()
    {
      $this->name = 'mymodcomments';
      $this->tab = 'frot_office_features';
      $this->version = '0.1.0';
      $this->author = 'Samos Sit';
      $this->displayName = 'Mon module de commentaires produits';
      $this->description = 'Avec ce module, vos clients pourront noter et commenter vos produits !';
      $this->bootstrap = true;
      parent::__construct();
    }

    public function install()
    {
      parent::install();
      $this->registerHook('displayProductTabContent');
      return true;
    }

    public function processConfiguration()
    {
      if (Tools::isSubmit('submit_mymodcomments_form')) {
        $enable_grades = Tools::getValue('enable_grades');
        $enable_comments = Tools::getValue('enable_comments');
        Configuration::updateValue('MYMOD_GRADES', $enable_grades);
        Configuration::updateValue('MYMOD_COMMENTS', $enable_comments);
        $this->context->smarty->assign('confirmation', 'ok');
      }
    }

    public function assignConfiguration()
    {
      $enable_grades = Configuration::get('MYMOD_GRADES');
      $enable_comments = Configuration::get('MYMOD_COMMENTS');
      $this->context->smarty->assign('enable_grades', $enable_grades);
      $this->context->smarty->assign('enable_comments', $enable_comments);
    }

    public function getContent()
    {
      $this->processConfiguration();
      $this->assignConfiguration();
      return $this->display(__FILE__, 'getContent.tpl');
    }

    public function hookDisplayProductTabContent(array $params)
    {
      return 'Affichez-moi sur la fiche produit';
    }
  }

getContent.tpl (mymodcomments/views/templates/hook/) :

{if isset($confirmation)}
    <div class="alert alert-success">La configuration a bien été mise à jour</div>
{/if}

<form method="post" action="" class="defaultForm form-horizontal">
    <div class="panel">
        <div class="panel-heading">
            <i class="icon-cogs"></i> La configuration de mon module
        </div>
        <div class="form-wrapper">
            <div class="form-group">
                <label class="control-label col-lg-3">Activer les notes :</label>
                <div class="col-lg-9">
                    <img src="../img/admin/enabled.gif" alt="" />
                    <input type="radio" id="enable_grades_1" name="enable_grades" value="1" {if $enable_grades eq '1'}checked{/if} />
                    <label class="t" for="enable_grades_1">Oui</label>
                    <img src="../img/admin/disabled.gif" alt="" />
                    <input type="radio" id="enable_grades_0" name="enable_grades" value="0" {if $enable_grades ne '1'}checked{/if} />
                    <label class="t" for="enable_grades_0">Non</label>
                </div>
            </div>
            <div class="form-group">
                <label class="control-label col-lg-3">Activer les commentaires :</label>
                <div class="col-lg-9">
                    <img src="../img/admin/enabled.gif" alt="" />
                    <input type="radio" id="enable_comments_1" name="enable_comments" value="1" {if $enable_comments eq '1'}checked{/if} />
                    <label class="t" for="enable_comments_1">Oui</label>
                    <img src="../img/admin/disabled.gif" alt="" />
                    <input type="radio" id="enable_comments_0" name="enable_comments" value="0" {if $enable_comments ne '1'}checked{/if} />
                    <label class="t" for="enable_comments_0">Non</label>
                </div>
            </div>
        </div>
        <div class="panel-footer">
            <button class="btn btn-default pull-right" name="submit_mymodcomments_form" value="1" type="submit">
                <i class="process-icon-save"></i> Enregistrer
            </button>
        </div>
    </div>
</form>

J'aimerais donc savoir :

Pourquoi le "Affichez-moi sur la fiche produit" ne s'affiche pas ?

Si quelqu'un aurais un moyen autre que la doc pour apprendre ?

Comment pourrais-je afficher un bouton qui redirige vers un fichier pdf ou tpl ?

Merci beaucoup pour vos futures réponses  ! 😀

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

Cette documentation semble être obsolète.

Vérifiez ceci:

https://mypresta.eu/prestashop-17/product-page-tabs.html

https://belvg.com/blog/product-tabs-for-cms-prestashop-1-7.html

En outre, le formulaire de configuration est également obsolète. Je vous recommande de créer un module de test à l'adresse https://validator.prestashop.com/generator et de voir comment il le fait.

  • Thanks 1
Link to comment
Share on other sites

5 hours ago, joseantgv said:

Je vous recommande de créer un module de test à l'adresse https://validator.prestashop.com/generator et de voir comment il le fait.

Effectivement, c'est super et on apprends pas mal de choses ! 😁

Savez vous par hasard comment faire pour cette question ?

15 hours ago, Samos said:

Comment pourrais-je afficher un bouton qui redirige vers un fichier pdf ou tpl ?

ou pour faire en sorte de rediriger le bouton 'commander' de la page panier a un fichier tpl de mon module.

Merci beaucoup !! 😀

Link to comment
Share on other sites

10 minutes ago, Samos said:

Effectivement, c'est super et on apprends pas mal de choses ! 😁

Savez vous par hasard comment faire pour cette question ?

ou pour faire en sorte de rediriger le bouton 'commander' de la page panier a un fichier tpl de mon module.

Merci beaucoup !! 😀

Vous devez créer un contrôleur.

https://devdocs.prestashop.com/1.7/modules/concepts/controllers/front-controllers/

  • Thanks 1
Link to comment
Share on other sites

Pour être plus explicite, j'aimerais avoir le même fonctionnement que ce bouton :

{block name='cart_detailed_actions'}
  <div class="checkout cart-detailed-actions card-block">
    {if $cart.minimalPurchaseRequired}
      <div class="alert alert-warning" role="alert">
        {$cart.minimalPurchaseRequired}
      </div>
      <div class="text-sm-center">
        <button type="button" class="btn btn-primary disabled" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
      </div>
    {elseif empty($cart.products) }
      <div class="text-sm-center">
        <button type="button" class="btn btn-primary disabled" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
      </div>
    {else}
      <div class="text-sm-center">
        <a href="{$urls.pages.order}" class="btn btn-primary">{l s='Proceed to checkout' d='Shop.Theme.Actions'}</a>
        {hook h='displayExpressCheckout'}
      </div>
    {/if}
  </div>
{/block}

Cependant, cliquer sur ce fameux bouton nous redirigerais vers une page tpl vide, ou au mieux vers un pdf afin de proposer un devis. J'aimerais que mon site génère des devis au format pdf et non pas des achats.

J’espère m’être fait comprendre, encore merci 😊

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