Jump to content

Gestion des modules plein de bug


Recommended Posts

bonjour j'ai voulu gerer l'emplacement des modules les suprimer pr les inserer ailleurs. Je l'ai fait tout c'est bien passer en back office sauf que sur la boutique il n'y apparaisse pas nul part alors que ds l'admin tout semble etre normal Bug général ou seulement chez moi ?

Autre question les modules sont en anglais c'est modifiable ou il faut aller ds le code ? car moi et le php ca fait 4

Link to comment
Share on other sites

Bonjour,

 

Comme répété souvent, il faut une fonction dans le module pour chaque hook (emplacement).

 

Par exemple, de base, le blockcategorie est greffé sur le hook menu de gauche, donc il y a une fonction sur le menu de gauche dans le module qui va s'exécuter sur ce hook. Maintenant, si vous greffez le module en haut de la page (hook top), mais que vous n'avez pas créé de fonction associée, alors il ne se passera rien.

 

Donc oui, il faut tripaturer un peu le code du module PHP.

Link to comment
Share on other sites

Bonjour Philippe,

 

Est-t-il possible d'avoir un petit tuto (un exemple) qui expliquerait la manip ?

 

Je pense que beaucoup de personnes non programmeur seraient intérréssés par celà.

 

Salutations.

 

+1

Link to comment
Share on other sites

Bonjour,

 

Juste une petite explication car ce n'est vraiment pas compliqué :

 

les modules sont dans le dossier /modules/.

Un modules se compose au minimum d'un fichier /modules/mon_module/mon_module.php

il faut modifier ce fichier.

 

prenons l'exemple du module BlockCurrencies

le fichier /modules/blockcurrencies/blockcurrencies.php est

<?php

class BlockCurrencies extends Module
{
function __construct()
{
	$this->name = 'blockcurrencies';
	$this->tab = 'Blocks';
	$this->version = 0.1;

	parent::__construct(); // The parent construct is required for translations

	$this->page = basename(__FILE__, '.php');
	$this->displayName = $this->l('Currency block');
	$this->description = $this->l('Adds a block for selecting a currency');
}

function install()
{
	if (!parent::install())
		return false;
	if (!$this->registerHook('top'))
		return false;
	return true;
}

/**
* Returns module content for header
*
* @param array $params Parameters
* @return string Content
*/
function hookTop($params)
{
	global $smarty;
	$currencies = Currency::getCurrencies();
	if (!sizeof($currencies))
		return '';
	$smarty->assign('currencies', $currencies);
	return $this->display(__FILE__, 'blockcurrencies.tpl');
}

}

?>

 

on voit une méthode hookTop (function hookTop($params)), c'est elle qui gère l'affichage dans le Hook Top (haut de page)

 

il y a 8 méthodes qui peuvent gérer l'affichage :


  • [li]hookTop : haut de page[/li]
    [li]hookHeader : entête de page <head>[/li]
    [li]hookRightColumn : colonne de droite[/li]
    [li]hookLeftColumn : colonne de gauche[/li]
    [li]hookFooter : pied de page[/li]
    [li]hookHome : centre de la page d'accueil[/li]
    [li]hookExtra : page produit en dessous du bouton Ajouter au panier[/li]
    [li]hookProductfooter : page produit au dessus de En savoir plus[/li]

 

si on veux afficher le block blockcurrencies dans la colonne de droite, pour l'instant ça ne marche pas car la méthode hookRightColumn n'est pas définie. Donc on la rajoute.

 

<?php

class BlockCurrencies extends Module
{
function __construct()
{
	$this->name = 'blockcurrencies';
	$this->tab = 'Blocks';
	$this->version = 0.1;

	parent::__construct(); // The parent construct is required for translations

	$this->page = basename(__FILE__, '.php');
	$this->displayName = $this->l('Currency block');
	$this->description = $this->l('Adds a block for selecting a currency');
}

function install()
{
	if (!parent::install())
		return false;
	if (!$this->registerHook('top'))
		return false;
	return true;
}

/**
* Returns module content for header
*
* @param array $params Parameters
* @return string Content
*/
function hookTop($params)
{
	global $smarty;
	$currencies = Currency::getCurrencies();
	if (!sizeof($currencies))
		return '';
	$smarty->assign('currencies', $currencies);
	return $this->display(__FILE__, 'blockcurrencies.tpl');
}

/**
* Returns module content for right column
*
* @param array $params Parameters
* @return string Content
*/
function hookRightColumn($params)
{
	return $this->hookTop($params);
}

}

?>

 

la nouvelle méthode ne fait que rappeler la méthode hookTop mais ça suffit pour ce qu'on veut faire.

 

Et voila, normalement ça marche.

Link to comment
Share on other sites

  • 2 months later...
De rien  :D .

 

Tant qu'a faire je relance ce sujet "Ajout de la méthode "hookDefault" pour les modules" qui éviterai de faire ces manipulations qui ne font pas très "produit fini".

 

L'utilisateur final ne devrait pas avoir à toucher le code.


Le lien du topic n'est plus valide, mais si effectivement il existe une méthode pour que le module puisse être placé où l'utilisateur le souhaite, je pense que ça serait bien de faire passer le message.
j'utilise PS depuis peu avec bcp de plaisir et cette histoire d'impossibilité de placer des bloc où je souhaite vient de générer ma première frustration....
J'espère que les prochaines versions n'auront pas ce problème :)

PS : si un modo veut bien éditer le post contenant le tuto afin de le rendre lisible (probablement un pb de tag non fermé), ça serait très appréciable :)
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...