PrestaShop Forum

The best place in the world to ask questions about PrestaShop and get advice from our passionate community!

PrestaShop Forum

Jump to content

 

dédoubler module [RESOLU]

10 replies to this topic
#1
Laurent_hunter

    PrestaShop Apprentice

  • Members
  • PipPip
  • 80 posts
bonjour,

Je serais intéresser par le dédoublement de certain module, blog.
Notamment le module produit phare.

Si quelqu'un c'est comment faire donc pour installer plusieurs fois un même module qui soit complètement indépendant les un des autres?

Je pense ne pas être le seul à être intéresser par cette possibilité. (pas forcément avec les produit phares)

Cordialement,
Laurent

#2
liandri

    PrestaShop Apprentice

  • Members
  • PipPip
  • 457 posts
Bonjour,

C'est pas dur ! Rassure toi !

Tu copies/colles le dossier du module "homefeatured"

renomme le nouveau dossier en "homefeatured (copie)" en "homefeaturedbis"

renomme juste le fichier de classe "homefeatured.php" en "homefeaturedbis.php"

édite le fichier "homefeaturedbis.php"

et remplace tout son contenu par :


<?php

class HomeFeaturedBis extends Module
{
private $_html = '';
private $_postErrors = array();

function __construct()
{
$this->name = 'homefeaturedbis';
$this->tab = 'Tools';
$this->version = '0.9 BIS';

parent::__construct();

$this->displayName = $this->l('Featured Products on the homepage');
$this->description = $this->l('Displays Featured Products in the middle of your homepage');
}

function install()
{
if (!Configuration::updateValue('HOME_FEATURED_NBR_BIS', 8) OR !parent::install() OR !$this->registerHook('home'))
return false;
return true;
}

public function getContent()
{
$output = '

'.$this->displayName.'

';
if (Tools::isSubmit('submitHomeFeatured'))
{
$nbr = intval(Tools::getValue('nbr'));
if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))
$errors[] = $this->l('Invalid number of product');
else
Configuration::updateValue('HOME_FEATURED_NBR_BIS', $nbr);
if (isset($errors) AND sizeof($errors))
$output .= $this->displayError(implode(' ', $errors));
else
$output .= $this->displayConfirmation($this->l('Settings updated'));
}
return $output.$this->displayForm();
}

public function displayForm()
{
$output = '
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'

'.$this->l('In order to add products to your homepage, just add them to the "home" category.').'




<input type="text" size="5" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('HOME_FEATURED_NBR_BIS')).'" />

'.$this->l('The number of products displayed on homepage (default: 10)').'




<input type="submit" name="submitHomeFeatured" value="'.$this->l('Save').'" class="button" />


</form>';
return $output;
}

function hookHome($params)
{
global $smarty;
$category = new Category(1);
$nb = intval(Configuration::get('HOME_FEATURED_NBR_BIS'));
$products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));
$smarty->assign(array(
'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
'category' => $category,
'products' => $products,
'currency' => new Currency(intval($params['cart']->id_currency)),
'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
'productNumber' => sizeof($products),
'homeSize' => Image::getSize('home')
));
return $this->display(__FILE__, 'homefeatured.tpl');
}
}


suite ... après :p

#3
liandri

    PrestaShop Apprentice

  • Members
  • PipPip
  • 457 posts
suite ..

ensuite, édite le fichier "fr.php", toujours dans le nouveau dossier copié

remplace tout par :


<?php

global $_MODULE;
$_MODULE = array();
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_cd2c2dc24eaf11ba856da4a2e2a248be'] = 'Produits phares sur la page d\'accueil';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_b494beb5de5dd7b4fad67262e0de6321'] = 'Affiche les produits phares au centre de votre page d\'accueil';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_ced2b9f1aad1f8a5b351a3120e4b1212'] = 'Nombre de produit invalide';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_c888438d14855d7d96a2724ee9c306bd'] = 'Paramètres mis à jour';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_f4f70727dc34561dfde1a3c529b6205c'] = 'Paramètres';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_6df1f9b5662398a551a2c9185b26638a'] = 'Pour ajouter des produits à votre page d\'accueil, ajoutez-les simplement à la catégorie \"Accueil\" du catalogue.';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_20c47700083df21a87e47d9299ef4dc4'] = 'Nombre de produits';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_ada7594fb1614c6b6d271699c8511d5e'] = 'Le nombre de produits affichés sur la page d\'accueil (défaut : 10)';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_578d26aacd7844a23f0a59ef743cf26c'] = 'produits phares';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_d3da97e2d9aee5c8fbe03156ad051c99'] = 'Plus d\'infos';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_a312dde7f348b17424bc8e3c97816891'] = 'TTC';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_dc764c1fa1f8e4be404a15939070c390'] = 'HT';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_4351cfebe4b61d8aa5efa1d020710005'] = 'Plus d\'infos';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_2d0f6b8300be19cf35e89e66f0677f95'] = 'Ajouter au panier';
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_e0e572ae0d8489f8bf969e93d469e89c'] = 'Aucun produit phare';

?>


Voilà ! il te reste plus qu'à aller installer ton nouveau module qui doit apparaitre juste en dessous du premier !

Quote

Produits phares sur la page d'accueil v0.9 BIS


Ah oui, je t'ai aussi prévu la gestion d'une variable indépe

#4
Laurent_hunter

    PrestaShop Apprentice

  • Members
  • PipPip
  • 80 posts
e be merci, beaucoup, c'est une très bonne réponse.
Je vais regarder ce que tu a changer, pour l'adapté à d'autre module qui sais.
Réponse rapide, merci

#5
liandri

    PrestaShop Apprentice

  • Members
  • PipPip
  • 457 posts
de rien ! pense à mettre [Résolu] dans le titre du topic si c'est le cas !
a+

#6
amandarey92

    PrestaShop Newbie

  • Members
  • Pip
  • 1 posts
Je vous remercie tellement ça était véritable aider!

#7
thierry_02

    PrestaShop Apprentice

  • Validating
  • PipPip
  • 486 posts
Bonjour, voila j'ai voulu faire un doublon mes j'ai une erreur voir photo j'ai refait 3 fois le chgt mes a chaque fois j'ai la meme erreur.

Attached Files


I love you presta 1.4

#8
liandri

    PrestaShop Apprentice

  • Members
  • PipPip
  • 457 posts
Bonjour,

Les changements réels à apporer pour le cas de ce module sont :

- renommer le nouveau dossier “homefeatured (copie)” en “homefeaturedbis”

- renommer juste le fichier de classe “homefeatured.php” en “homefeaturedbis.php”

dans “homefeaturedbis.php” :

- renommer le nom de la classe
class HomeFeatured extends Module
en
class HomeFeaturedBis extends Module


- renommer les déclarations d'informations du module

$this->name = 'homefeatured';
$this->tab = 'Tools';
$this->version = '0.9';

en

$this->name = 'homefeaturedbis';
$this->tab = 'Tools';
$this->version = '0.9 BIS';


- renommer l'unique variable de configuration
Configuration::updateValue('HOME_FEATURED_NBR', 8)
en
Configuration::updateValue('HOME_FEATURED_NBR_BIS', 8)

de manière à distinguer les 2 configurations des modules
Attention, la variable doit être modifier dans tout fichier, à chaque appel ! soit par un "Configuration::updateValue()" ou par "Configuration::get()"

dans “fr.php” du nouveau module :

il faut que la traduction fonctionne avec la nouvelle classe

- renommer chaque déclaration
$_MODULE['<{homefeatured}prestashop>homefeatured_
en
$_MODULE['<{homefeaturedbis}prestashop>homefeaturedbis_


et c'est tout :)

A+

#9
thierry_02

    PrestaShop Apprentice

  • Validating
  • PipPip
  • 486 posts
voila tout et ok , par contre le fichier tpl on ne le renome pas!!je te donne les fichiers,jete un oeuil tu verra c ok

Attached Files


I love you presta 1.4

#10
liandri

    PrestaShop Apprentice

  • Members
  • PipPip
  • 457 posts
non les fichier tpl n'ont pas besoin d'être renommé dans un aspect fonctionnel, puisqu'ils sont appelés par le code php directement, et prennent en compte le smarty "template_dir" lié à l'emplacement du module au moment où le code php du module est traité.

En revanche, pour finaliser le module dans le cas d'une personnalisation complète, si tu renommes chaque fichier tpl, il faudra aussi renommer leur déclaration dans la classe du module !

#11
Laurent_hunter

    PrestaShop Apprentice

  • Members
  • PipPip
  • 80 posts
je recois un message d'erreur dans le back office :

Erreur(s) de parsing dans le(s) module(s)

1. homefeaturedbis

j'ai fais exactement les échanges cité, connaitrais tu la source du problème stp ?