gaius57 Posted March 5, 2014 Share Posted March 5, 2014 (edited) Salut tout le monde !Me revoila avec mon module de Blog pour Prestashop, je touche le bout (ENFIN)! J'aimerai ajouté en dernière fonctionallité un accès aux articles du blog en XML/JSON de type API. J'ai mon modele Post dans le dossier /model de mon module. class Post extends ObjectModel { /** Déclaration des variables */ public $id_jbblog_post; public $author; public $date; public $description; public $title; public $excerpt; public $active; public $comment_status; public $name; public $modified; public $comment_count; public $url; protected $webserviceParameters = array(); /** * $definition : Tableau représentant la table jbblog_post. */ public static $definition = array( 'table' => 'jbblog_post', 'primary' => 'id_jbblog_post', 'multilang' => false, 'fields' => array( 'id_jbblog_post' => array('type' => self::TYPE_INT, 'required' => false), 'author' => array('type' => self::TYPE_STRING, 'required' => false), 'date' => array('type' => self::TYPE_DATE, 'required' => false), 'description' => array('type' => self::TYPE_HTML, 'lang' => false, 'validate' => 'isCleanHtml'), 'title' => array('type' => self::TYPE_STRING, 'required' => false), 'excerpt' => array('type' => self::TYPE_STRING, 'required' => false), 'active' => array('type' => self::TYPE_BOOL, 'required' => false), 'comment_status' => array('type' => self::TYPE_BOOL, 'required' => false), 'name' => array('type' => self::TYPE_STRING, 'required' => false), 'modified' => array('type' => self::TYPE_DATE, 'required' => false), 'comment_count' => array('type' => self::TYPE_INT, 'required' => false), ), ); //ajout sans formulaire public function add($autodate = true, $null_values = false) { $this->name = Tools::link_rewrite($this->title); return parent::add($autodate, true); } public static function findAll($nbPosts=null,$numPage=null) { $sql = 'select * from ' . _DB_PREFIX_ . 'jbblog_post '; if(isset($nbPosts)){ (empty($numPage))?$numPage=0:$numPage=Configuration::get('JBBLOG_POSTS_PER_PAGE')*($numPage-1);//Si pas de page renseigné, page 1 $sql = 'select * from ' . _DB_PREFIX_ . 'jbblog_post ORDER BY id_jbblog_post LIMIT '.$nbPosts.' OFFSET '.$numPage; } if ($rows = Db :: getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql)) { return ObjectModel :: hydrateCollection(__CLASS__, $rows); } return array(); } public static function findById($id) { $sql = 'select * from ' . _DB_PREFIX_ . 'jbblog_post WHERE id_jbblog_post=' . $id; if ($rows = Db :: getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql)) { return ObjectModel :: hydrateCollection(__CLASS__, $rows); } return array(); } public static function getPostTitle($id){ $sql = 'select * from ' . _DB_PREFIX_ . 'jbblog_post WHERE post_id=' . $id; if ($rows = Db :: getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql)) { return ObjectModel :: hydrateCollection(__CLASS__, $rows); } return array(); } static public function slugify($text) { $text = preg_replace('~[^\\pL\d]+~u', '-', $text); $text = trim($text, '-'); $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); $text = strtolower($text); $text = preg_replace('~[^-\w]+~', '', $text); if (empty($text)) { return 'n-a'; } return $text; } } La première idée m'étant venu est de tout simplment surcharger le Service Web intégré de Prestashop pour pouvoir y ajouter mes articles. IMPOSSIBLE ! Je me suis tordu dans tous les sens en surchargeant le WebserviceRequestCore mais impossibe. Il detecte bien mes articles dans la liste des éléments à cocher, mais ne reconnais pas l'entité une fois dans l'API.Pas grave 2nd solution ! On va faire un FrontController qui renvoi du JSON ! Héhé plus simple a dire qu'a faire... Je créer mon nouveau FrontController dans mon module, mais je ne sais pas du tout ou placer le header("Content-Type: application/json; charset=utf-8");. Si je le met dans la méthode initContent(), il me charge toute la page et du coup j'ai tout le code HTML (doctype,ect...). La solution étant de charger une page vierge sur ce controller pour que je puisse y placer mon JSON.Si vous avez des soutions pour une de ces 2 propositions je suis tout ouïe !Merci bien ! Edited March 5, 2014 by gaius57 (see edit history) Link to comment Share on other sites More sharing options...
math_php Posted March 7, 2014 Share Posted March 7, 2014 Bonjour Gaius57, Le controller cart renvoi pour des appels ajax du json. Ca peut être une piste. Sinon une bonne piste pour gérer tout du début à la fin pourrait être le code contenu dans cron_currency_rates.php ou les retours serveur à serveur des modules bancaires. Bon développement Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now