Jump to content

J. Danse

Members
  • Posts

    2,563
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by J. Danse

  1. Le truc, c'est que l'association est "native" et "automatique", non ?! Elle est gérée automatiquement lorsque tu mentionnes que la classe est multilangue, et l'entrée "associations" est gérée automatiquement en mentionnant les données correspondantes (ce qui permet après à la requête d'insérer la table _lang correspondante, par exemple). En bref, tu ne l'utilises jamais directement...
  2. Oops, j'ai oublié de joindre le dit module. Malin, ça ! Voici.
  3. Bonjour, Voici une méthode qui devrait vous intéresser. Elle permet de ne pas dupliquer le module et en prime de ne pas modifier l'original. Si l'on étend la classe du module que l'on souhaite modifier, on peut traiter l'ensemble des informations qui y sont liées et en prime en rajouter. Bien entendu, tout dépend du module et il à tester si la méthode est préférable voire même acceptable. Dans mon test, ça l'était. (Tout en sachant que le module original était désactivé). En voici l'illustration (le fichier est défini comme /modules/blockpaymentlogo2/blockpaymentlogo2.php) <?php if (!defined('_PS_VERSION_')) exit; require_once(_PS_MODULE_DIR_.'blockpaymentlogo/blockpaymentlogo.php'); class BlockPaymentLogo2 extends BlockPaymentLogo { public function __construct() { parent::__construct(); $this->name = 'blockpaymentlogo2'; $this->version = '0.1'; $this->author = 'PrestaEdit'; } public function install() { if (!parent::install()) return false; if (!$this->registerHook('displayTop')) return false; return true; } /** * Returns module content * * @param array $params Parameters * @return string Content */ public function hookDisplayTop($params) { if (Configuration::get('PS_CATALOG_MODE')) return; if (!Configuration::get('PS_PAYMENT_LOGO_CMS_ID')) return; $cms = new CMS(Configuration::get('PS_PAYMENT_LOGO_CMS_ID'), $this->context->language->id); if (!Validate::isLoadedObject($cms)) return; $this->smarty->assign('cms_payement_logo', $cms); return $this->display(__FILE__, 'blockpaymentlogo.tpl'); } } Avec cet exemple, on se rend compte que j'ai accès au "getContent" de base sans en avoir déclaré un.
  4. Bonjour, Remplace ton module actuel par celui-ci (c'est le même mais en version 1.5.0.14) et qui est fonctionnel. Test et dis moi quoi
  5. Je n'ai rien dit ! C'est vrai que ça pourrait être chouette.
  6. De fait, c'est une erreur "classique". C'est pourquoi on conseille de le retirer, de toutes, dès qu'il s'agit de code purement PHP en prime,
  7. Pas de soucis. Je travaille avec la 1.5 et lorsque j'entrevois un problème, j'aime voir ce qu'il en est (je préfère le debug au développement, quasiment ! ) J'avoue que c'est pas évident, là comme ça. J'ai testé (ayant aussi un module avec ce hook) sur les deux types de formulaire et c'est fonctionnel. Est-ce que je peux te fournir un override éventuel de l'un ou l'autre fichier afin de mettre des "points d'arrêt" sur certains points ? Ainsi, on peut éventuellement essayer de trouver où ça coince...
  8. Re, Pas de soucis, c'est un define qui permet justement de faire un petit retour d'erreur bien pratique Concernant l'erreur, et après lecture, je vois qu'il ne possède aucun groupes dans lequel rechercher (ce qui provoque l'erreur de syntaxe SQL). Est-ce que je peux te demander, lorsque tu encodes ton nouveau client si celui-ci se trouve en DB (table users) et si dans la table customer_group tu peux voir une occurence de l'id du nouveau client avec un numéro de groupe (par exemple 3) ?
  9. Bonjour, $definition obtient le retour de ObjectModel::getDefinition($class). Cette méthode et sa variable associée permette donc de "définir" l'objet en indiquant le nom de cet objet et en indiquant les champs composant l'objet (ainsi que les champs d'association pour le multi langue !). La variable $definition n'est visible que dans une classe. Il s'agit d'un Array ayant trois champs: table, primary et fields. Respectivement le nom de la table associée, la clé primaire et les champs qui compose la table. Lorsque la classe comporte du multi langues, on lui donne également deux paramètres supplémentaires: multilang et multilang_shop. Respectivement le fait que la table contient du texte traduisible en plusieurs langues et que les traductions sont gérées en fonction du shop (évidemment, pour un "only shop", c'est inutile). Est-ce que cela t'aide, en soit ?
  10. Bonjour, Peux-tu voir si dans le fichier config/defines.inc.php le define _PS_MODE_DEV_ est mis à true ?
  11. Chouette ! Essaie un peu de voir avec ceci, peut-être. function install() { if (!parent::install() OR !$this->registerHook('header')) return false; Configuration::updateValue('MY_MODULE', '123456'); return true; } Par ailleurs, je réalise qu'il y avait une erreur... Je ne sais pas si il s'agit du copier/coller ou non, mais dans ton premier code il y a une erreur dans le updateValue...
  12. Normalement, pour le displayHeader il suffit de metter registerHook('displayHeader'); et pour la méthode, il s'agit de hookDisplayHeader($params). Cela dit, ça fonctionne sans soucis - actuellement - avec le header simple. Tiens, tu n'as pas plus d'informations dans le warning ?
  13. Bien ce que je me doutais... D'habitude, ce genre d'erreurs, c'est quand tu as un espace ou un echo (voir une erreur/warning/notice) avant tout autre chose. Mais j'avoue ne pas trop savoir, là comme ça, par rapport à ta solution (qui n'en est que une temporaire, bien sur). Je peux éventuellement te conseiller de faire ceci, pour tester (sans aucunes prétentions de réussite !) function install() { return (!Configuration::updateValue('MY_MODULE',123456'') OR !parent::install() OR !$this->registerHook('header')); } Et vu que l'on est en 1.5 et que les hooks sont un rien modifié (et qu'en 1.6 cela ne marchera plus, normalement), tu peux renommer ton hook en "displayHeader"
  14. Est-ce que je peux te demander si on peut avoir éventuellement une copie du module "défectueux" ou si il est tellement avancé et en travaux que tu ne préfères pas ? C'est pour effectuer les tests de suite, en "live". Sinon, je n'ai jamais eu ce soucis, actuellement.
  15. Avec plaisir ! Pour ce qui est du CHMOD, peut-être qu'une alerte au sein du module aurait pu faire l'affaire, à penser pour les développeurs du module Sinon, n'hésite pas à placer le topic en [Resolu]
  16. Le problème, c'est que ça y est... Mais la structure du module est tel que...: * nomdumodule -- view/templates/hooks/hookDisplayAdminHomeInfos.tpl J'ai d'abord fait les traductions dans le controller lui-même (car c'est une liste générée) et dans les traductions, le tout est bien traduit. Or, comme j'utilise un autre theme dans le back office (et je pense que ça vient de là), rien n'est traduis. Actuellement, j'ai mis en FR (de toutes, la boutique est purement FR et le module ne sera pas distribué), mais bon
  17. Dites, ... Si j'ai un module qui a un hook tel que DisplayAdminHomeInfos pour lequel un tpl est passé et que les données sont, normalement, traduites au sein du module (les traductions sont bien là), comment faire pour qu'elles le soient dans le tpl aussi ? Autant quand il s'agit d'un autre theme en front-office je comprends le mécanisme, autant quand il s'agit d'un autre thème au sein du back-office, non. En bref, les traductions ne sont pas prises en compte. Une idée ?
  18. Bonjour, Je viens de tester le module Sitemap, dans tout les sens, et je n'ai pas de soucis avec. Bien que cela ne t'aide pas, évidemment...
  19. Si tu veux, je veux bien que tu me fournisses par exemple les quelques fonctions pour lesquelles tu voudrais de la documentation, j'essaierai de créer une page de documentation sur mon site. J'écris aussi des articles sur PrestaShop pour un magazine, mais ils ne sont pas encore parus... Par ailleurs, n'oublie pas de dire la version (1.4 ou 1.5) car c'est différent. Je vais essayer dans mes pages (tant que la doc n'est pas sur la doc officielle) de publier quelques références
  20. Et le problème persiste ? Essaie de voir en modifiant ce fichier là, peut-être... (je crois que c'est pour ça que je le mentionne )
  21. La seule occurrence se trouve ici: http://doc.prestashop.com/display/PS15/Public+and+overloadable+methods#Publicandoverloadablemethods-ToolsCore%28Tools.php%29 Mais j'avoue que la donnée n'est pas très explicite. =)
  22. La différence, c'est que le code que je te fournis est en fait une fonction enregistrée pour Smarty par Prestashop, dans le coeur. Ce qui signifie, en clair, qu'il n'est plus nécessaire d'ajouter une variable Smarty dans les controllers éventuels et que, si trouvé dans un tpl, le code donnée ci-dessus agit en réalité comme un "Hook::exec()". Tu me suis ?
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More