Jump to content

Apaccy

Members
  • Posts

    36
  • Joined

  • Last visited

Apaccy's Achievements

Newbie

Newbie (1/14)

1

Reputation

  1. Salut, Pour avoir eu une erreur 500 a cause d'une erreur de syntaxe (sûrement la fonction eval()) Je te propose de checker tes sources avec cette commande : find . -iname '*.php' -exec php -l '{}' \; | grep '^No syntax errors' -v Cordialement,
  2. Je n'ai pas réussit a "résoudre" mon problème, néanmoins, je vous fais part de mon avancée. J'ai crée un petit script dans le dossier admin de prestaShop : Ce fichier donne à tous les modules tiers (Administrable) la capacité de travailler en Async tout en conservant le système de sécurité de prestashop. Deux inconvénient : - création de fichiers dans le repertoir admin. - déconnection (redirection) <?php /** * file : /admin/ajax.module.php */ define('PS_ADMIN_DIR', getcwd()); include(PS_ADMIN_DIR.'/../config/config.inc.php'); /* Getting cookie or logout */ require_once(dirname(__FILE__).'/init.php'); $json_data = (object) array('status' => false, 'message' => '', 'data'=>array()); $module = empty($_GET['module']) ? null : $_GET['module']; $controller = empty($_GET['controller']) ? 'Ajax' : $_GET['controller']; $action = empty($_GET['action']) ? null : $_GET['action']; $param = empty($_GET['param']) ? null : $_GET['param']; $file = _PS_MODULE_DIR_ . '/' . $module . '/'.$controller.'.php'; if ( !empty($module) && file_exists($file) ) { require_once($file); $controller = ucfirst($controller); $ajax = new $controller(); if ( method_exists($ajax, $action) ) { try { $data = $ajax->$action($param); $json_data->status = true; $json_data->data = $data; } catch(Exception $e) { $json_data->message = $e->getMessage(); } } else { $json_data->message = "Unknow service action"; } } else { $json_data->message = "Unknow service"; } echo json_encode($json_data); public function getContent() { $html = <<<xxx <script> function submitForm() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState == 4) { if(xhr.status == 200) alert("Received:" + xhr.responseText); else alert("Error code " + xhr.status); } }; xhr.open( "POST", "ajax.module.php?module=my_module&controller=Ajax&action=save", true); ///prestashop/admin/ajax.module.php xhr.send(null); } </script> xxx; $html .= '<a href="javascript:submitForm();">send and load</a>'; return $html; } Ce n'est pas un super code, mais il est la et il pourrai intérésé des gens. @+
  3. Bonjour, Je développe un module. Lorsque je configure mon module dans le BO (back-office), j'aimerai que les enregistrements se fasse a travers des appel ajax et non depuis un bouton submit traditionnel. Ce-ci pour des raisons d'ergonomie. Le BO utilise un cookie dont le chemin est "admin". De ce fait, mon appel ajax devrai avoir une url de la forme : "/admin/*" pour conserver le fonctionnement d'identification par cookie. Ainsi, je ne pense pas pouvoir attaquer la configuration de mon module depuis l'url "/modules/" D'où ma question : comment exécuter une fonction de mon module(/modules/my_module/class.php) en ajax depuis le back-office? Merci a vous,
  4. Yop, J'ai essayer de faire un module prestashop1.4 "blockworpress". Ok, dans le header ca marche car pas de confie avec Prestashop. Par contre dans un module ca coince un peu tout ca ... Quoi qu'il en soit, voici comment j'avai tester avec prestashop 1.3.6 (puisque c'est la version que tu utilise) : > </pre> <ul> {foreach from=$annee item=article} {$article->post_title} {/foreach} </ul>
  5. Hello, Cette exemple pourrai etre une solution {if isset($css_files)} {foreach from=$css_files key=css_uri item=media} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {/foreach} {/if} {if $blockCategTree.id eq 1} <link href="/themes/.../1.css" rel="stylesheet" type="text/css" media="all" /> {elseif $blockCategTree.id eq 2} <link href="/themes/.../2.css" rel="stylesheet" type="text/css" media="all" /> {/if} @++ --- Edit : J'ai parler un peu trop vite. Je n'avais pas fait attention. Pour la version 1.4, on peut écrire dans le fichier /themes/prestashop/header.tpl: {if isset($css_files)} {foreach from=$css_files key=css_uri item=media} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {/foreach} {/if} {if $currentCategoryId eq 1} <link href="/themes/.../1.css" rel="stylesheet" type="text/css" media="all" /> {elseif $currentCategoryId eq 2} <link href="/themes/.../2.css" rel="stylesheet" type="text/css" media="all" /> {/if}
  6. Bonjour Newcomer, Peut être aurai tu un peu de code a nous montrer ? un lien serrai le top ... @++
  7. Smarty utilise le point pour acceder au clef du tableau Liste darticles: {$annee.post_title} J'avais essayer rapidement et j'obtenais un object et non pas un Array d'où mon precedent message.
  8. Hello, Liste darticles: {$annee->post_title} devrai faire l'affaire
  9. Bonjour, Patanock, ajoute l'option 'filter_type' et penses à vider les cookie ? Dans un module tiers, j'ai moi aussi voulu ajouter une colonne dont le type de filtre est un . Et ca marche sur la version 1.3.6.0 ! J'ai pris exemple sur le module /admin/AdminOrders.php Je poste ici un petit mémo technique qui se base sur un module personnel, ca peut toujours en aider certaine. /* Quiz tab for admin panel, /modules/quiz/AdminQuiz.php */ $field_type = array( 'title' => $this->l('Type'), // l'entête affiché de la colonne avec traduction 'type' => 'select', // indique qu'il faut utiliser une comboBox() pour le filtre 'select'=>array( 'poll'=> 'All Poll', // All Poll 'quiz'=> 'All Quiz',// All Quiz ), 'filter_key'=>'a!type',// 'a' représente l'alias du nom de la table, 'type' le nom de la colonne 'filter_type' => null, // valeur possible : 'date', 'datetime', 'int', 'bool', 'decimal', 'select' ); $this->fieldsDisplay = array( 'id' => array('title' => 'ID'), 'type' => $field_type, //... ); Ainsi, lors d'un filtrage, la requête deviendra par exemple : WHERE 1 AND a.`type` LIKE '%poll%' Seul les valeur autre que 'date', 'datetime', 'int', 'bool', 'decimal', 'select' de l'option 'filter_type' permet de faire une recherche sur une chaine de caractère. ( Je n'ai pas trouvé de solution existante pour obtenir un filtrage de ce type : WHERE 1 AND a.`type` = 'poll' , mais il est possible d'ajouter un peu de code dans /admin/AdminTab.php a la fin de la fonction postProcces() vers la ligne 715 pour améliorer ca ... Le hic, c'est qu'en faisant ca a chaque nouvelle mise a jour il faudra re-modifier le code prestashop
  10. Bonsoir, Voici peut être quelques pistes a prendre : 1] Faire un EXPLAIN de ta requête, (et nous montrer le résultat) 2] Optimiser la requête en évitant de les imbriquer 3] Reconstruire tes index @+
  11. Yop, Dans le doute, il y a la propriété Category->level_depth qui te permet de déterminer si une catégorie possède un parent. if( $myCategory->level_depth != 0) { echo $myCategory->name . ' est une sous categorie'; } Cdlt,
  12. Tu n'a normalement pas de requête SQL a écrire. Il faut ajouter une propriété public a ta classe et ajuster deux trois fonction comme getField() Que représente ton nouveau champ ? Doit-il être multilingue ? @+
  13. Bonjour, Pour cela, il faut adapter le model de donné et c'est la classe /prestashop/classes/Category.php qui le permet. Cdlt,
  14. Hello, Si tu es motivé pour finir ce que je n'ai pas commencé... PS : Mais je trouverai bien un peu de temps pour finir ça... blockquizz.zip
×
×
  • Create New...