Jump to content

Positon des blocs


hoplageiss

Recommended Posts

Bonjour,

Oui c'est effectivement envisageable, mais avec un minimum de "recodage".

Les classes des modules blokcurrencies et blocklanguages sont par défaut initialisé pour être intégrer au hook (emplacement en gros) "header" soit le Top de la page.

Il faut donc savoir exactement où tu souhaites les placer, pour définir l'accrochage hook à configurer dans la classe des modules pour ensuite les activer et les rendre visible sur ta boutique.

Il peut y avoir des changements de style css à faire aussi.

Bonne continuation

Link to comment
Share on other sites

Bonjour Liandri,

je viens de voir ton post qui correspond à mon problème.. je souhaite changer l'emplacement de certains modules notamment le blockcurrencies.. donc suivant le tuto d'installation, j'ai modifié l'accrochage dans le back. j'ai supprimé le module currencies dans le top et l'ai ensuite installé dans le rightColumn. Je suis allé dans le dossier blockcurrencies pour modifier dans le fichier php l'emplacement du bloc par défaut .`
function install()
{
if (!parent::install())
return false;
if (!$this->registerHook('rightColumn'))
return false;
return true;
}
A ce moment j'ai visualisé sur le navigateur, rien de rien... le bloc currencies à bien disparu du top, mais rien dans la col de droite.
Dans les css, j'ai modifié la div parents de la div currencies :
à l'origine : #header #currencies_block_top pour faire #right_column #currencies_block_top .
apparement ca ne suffit pas car je n'ai rien à l'affichage du site... que manque t il?

Dernière question?
Je souhaite continuer à modifier la structure du site, j'ai remarqué que certains blocs sont ainsi positionner par défaut, je suppose qu'il me faudra faire la meme chose pour ces blocs?

merci d'avance
Fabien

Link to comment
Share on other sites


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

Cette modification ne marche que pour la phase d'installation du module, mais même si elle est bien inscrite dans l'accrochage (registerHook) il reste tout de même la fonction en elle même à créer, et qui n'existe pas par défaut pour ce block !
Voilà ce qui fera ton affaire :

<?php



class BlockCurrencies extends Module

{

   function __construct()

   {

       $this->name = 'blockcurrencies';

       $this->tab = 'Blocks';

       $this->version = 0.1;



       parent::__construct();



       $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;

       if (!$this->registerHook('rightColumn'))

           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');

   }



   function hookRightColumn($params)

   {

       return $this->hookTop($params);

   }

}



?>



PS : Pense à modifier des style css, et le fichier blockcurrencies.tpl

De plus la meilleure des méthodes est de dupliquer le module pour l'appeler autrement et travailler avec, et désactiver l'ancien, comme ça tu garde une trace de l'original.


Dernière question?
Je souhaite continuer à modifier la structure du site, j'ai remarqué que certains blocs sont ainsi positionner par défaut, je suppose qu'il me faudra faire la meme chose pour ces blocs?

affirmatif

Bonne continuation
Link to comment
Share on other sites

Eh bien, dans le BO, puis onglet puis permet de greffer un module à une position choisi dans la liste proposé.

A mon avis; le problème est qu'il y a conflit entre le module que tu greffes et l'emplacement ou tu le mets qui contient déjà qq chose ..

Je ne puis vous en dire davantage, je suis depuis peu sous prestashop.

Olivier

Link to comment
Share on other sites

merci liandri pour le tuyau.

la fonction php, je la place dans le fichier blockcurrencies.php, je suppose et après avoir modifié le nom des css, je modifie le fichier tpl du genre : <!-- Block currencies module -->
[removed][removed]


<form id="setCurrency" action="{$request_uri}" method="post">

?
je me doutais que c'était l'usine à gaz... existe t il un moyen de se former moins empiriquement?
merci
Fabien

Link to comment
Share on other sites

Eh bien, dans le BO, puis onglet puis permet de greffer un module à une position choisi dans la liste proposé.

A mon avis; le problème est qu'il y a conflit entre le module que tu greffes et l'emplacement ou tu le mets qui contient déjà qq chose ..

Je ne puis vous en dire davantage, je suis depuis peu sous prestashop.

Olivier


En fait la personnalisation de module ne s'arrête malheureusement pas par un simple enregistrement dans le système de greffe de module. Ce dernier n'est que volatile, et permet simplement de faire dans le backoffice ce qui aurai été oublié de le code de la class du module, c'est à dire à l'initialisation de la fonction d'installation :
   function install()
{...}



Cette fonction install() permet entre autre d'enregistrer un module à une accroche par une déclaration à l'aide de la fonction registerHook()
Si celle ci n'est pas présente, alors le module à l'installation et la réinstallation, n'aura pas l'accroche souhaitée. Mais cette étape,
bleuindigo l'a déjà créée.

L'accroche étant effective, il faut pouvoir ensuite donner un contenu qui sera traité et affiché lors de son appel par le code.
Comme tu le dis hoplageiss, il te manque alors un élément : le contenu. La phase d'accroche étant présente, le traitement va donc aller chercher le contenu à afficher pour cette accroche. Ce sous-traitement ne peux se faire qu'après avoir initialisé son contenu dans la class du module par les fonctions (par exemple) :

   function hookTop($params)  {...} // pour l'accroche au top
   function hookRightColumn($params)  {...} // pour l'accroche en colonne de droite
   function hookLeftColumn($params)  {...} // pour l'accroche en colonne de gauche

ETC ...


Et c'est cela qui manquait à bleuindigo pour entamer sa personnalisation

Bonne continuation

Link to comment
Share on other sites

bonjour à tous

suite et (fin peut etre??).
Pour résumé : j'ai collé le code de liandri dans le fichier blockcurrencies.php du dossier module blockcurrencies.
j'ai rajouté la partie function hooktop, function hookrightcolumn etc.. dans le meme fichier.
j'ai reouvert mon site et là rien.... une page blanche et dans le backoffice: sur l'onglet module : erreur de parsing sur blockcurrencies....
Etant donné que mon niveau en php n'est pas à la hauteur... comment puis je résoudre ce problème?
merci d'avance pour votre aide

Fabien

Link to comment
Share on other sites

Bonjour,

Peux-tu m'envoyer ton fichier stp , je vais y regarder de plus près ;)

PS : Dans mon code y'avait un ";" en trop :


   function hookRightColumn($params)

   {

       return $this->hookTop($params);

   }


et non plus


   function hookRightColumn($params)

   {

       return $this->hookTop($params);;

   }

Link to comment
Share on other sites

aaaaaaaaaaaaaaiiiiiiiiooooooooooiiiiiiiiiiiiiiooooooooooooooiiiiiiiiiooooooooooiiiiiiiiiiiiiiiiaaaaaaaaaaaaaaaaa
ça c'est le cri de tarzoonet... le roi de l'internet....

Faisant fi de mon complexe php, je me suis jeté dans le code et j'ai tout repris proprement.. (liandri tu avais mis deux points virgules de suite vers function hookRightColumn...) et pis ben ca marche.... j'ai meme réussi à le placer sur la gauche... donc maintenant je me sens bien mieux.
Un grand merci à Liandri pour ce gros tuyau..

Fabien

Link to comment
Share on other sites

  • 1 month later...

Bonjour Liandri
Je me permet de relancer ce post
car malgré les démarche que vous donnez, je n'obtiens pas le rendu désiré
(voir screen ci-joint)

Je pense que j'ai pas attribuer un code dans le header.tpl ,si j'ai cette incident !

Si vous pouvez éclairer ma lanterne
Je vous remercie d'avance

Cordialement,

19624_i3PuJc8osaMGqu2ySP9b_t

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