{"id":1005,"date":"2009-08-31T11:54:52","date_gmt":"2009-08-31T10:54:52","guid":{"rendered":"http:\/\/flaven.fr\/?p=1005"},"modified":"2013-11-27T07:07:56","modified_gmt":"2013-11-27T06:07:56","slug":"drupal-creer-un-service-sur-mesure-dans-drupal","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2009\/08\/drupal-creer-un-service-sur-mesure-dans-drupal\/","title":{"rendered":"Drupal &#8211; Cr\u00e9er un service sur mesure dans Drupal"},"content":{"rendered":"<p>\n<!-- Drupal - Cr\u00e9er un service sur mesure dans Drupal  --><br \/>\n<!--  Drupal, Module, Service, PHP, MySQL, CMS --><\/p>\n<p>Dans cet article, on va cr\u00e9er un service sur mesure au sein de Drupal. Cr\u00e9er un service peut se r\u00e9v\u00e9ler tr\u00e8s utile, car comme il est dit dans la d\u00e9finition en anglais donn\u00e9e ci-dessous, vous pourrez acc\u00e9der un ensemble de m\u00e9thodes <!--more--> permettant de connecter des applications distantes \u00e0 du contenu \u00e9manant de votre site sous Drupal. Une application distante faite sous Flex ou sous Flash par exemple. Par ailleurs, on s&#8217;approche assez pr\u00e8s alors m\u00eame que nous sommes dans un CMS, d&#8217;un d\u00e9veloppement et du vocabulaire proche d&#8217;un Framework PHP.<\/p>\n\t\t\t\t\t<div class=\"textwidget-unique text\">\n\n\t\t\t\t\t        <div class=\"textwidget-photo\">\n\t\t\t\t\t                <a href=\"https:\/\/flaven.fr\/books\/beginning-drupal-de-jacob-redding\/\" class=\"photo\" title=\"Beginning Drupal\u00ae\"><img loading=\"lazy\" decoding=\"async\" alt=\"Beginning Drupal\u00ae\" src=\"http:\/\/ecx.images-amazon.com\/images\/I\/519wFNOUHZL._SL160_.jpg\" width=\"128\" height=\"160\"><\/a>\n\t\t\t\t\t            <\/div>\n\t\t\t\t\t\t<div class=\"info half\">\n\t\t\t\t\t\t\t<h2 class=\"product-title\"><a class=\"head\" href=\"https:\/\/flaven.fr\/books\/beginning-drupal-de-jacob-redding\/\" title=\"Beginning Drupal\u00ae\">Beginning Drupal\u00ae<\/a><\/h2>\n\t\t\t\t\t\t\t\n\t\t\t\t\t        <p class=\"product-excerpt\">Un bon livre parmi l'abondante litt\u00e9rature sur Drupal, notamment qui met en avant les diff\u00e9rences entre Drupal 7 et Drupal 6. Le livre passe la totalit\u00e9 de ce qu'il faut savoir pour maitriser le CSM Drupal : l'administration, la configuration, le gestion des utilisateurs et des autorisations. Ce livre traite traite \u00e9galement de la gestion du contenu, rappelez-vous Drupal est un outil de gestion de contenu, on sait tout sur les noeuds, les utilisateurs, les blocs, le tentaculaire et insondable syst\u00e8me de taxonomie de Drupal. Bref, la totale. A noter aussi, des conseils avis\u00e9s pour faire en sorte que votre site ne ressemble pas \u00e0 un site Drupal, notamment avec des instructions sur l'extension fonctionnelle de votre site \u00e0 l'aide de modules personnalis\u00e9s.<\/p>\n\t\t\t\t\t\t\t\tGenre(s) : <a href=\"https:\/\/flaven.fr\/book-type\/agile\/\" rel=\"tag\">Agile<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/api\/\" rel=\"tag\">API<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/cms\/\" rel=\"tag\">CMS<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/development\/\" rel=\"tag\">Development<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/direction-de-projet-agile\/\" rel=\"tag\">Direction de projet<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/drupal\/\" rel=\"tag\">Drupal<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/module\/\" rel=\"tag\">Module<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/open-source-agile-developpement\/\" rel=\"tag\">Open Source<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/php\/\" rel=\"tag\">PHP<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/php-applications\/\" rel=\"tag\">PHP Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/referencement\/\" rel=\"tag\">R\u00e9f\u00e9rencement<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/seo\/\" rel=\"tag\">SEO<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/smo\/\" rel=\"tag\">SMO<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/theme-2\/\" rel=\"tag\">Theme<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/theming\/\" rel=\"tag\">Theming<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/user-stories\/\" rel=\"tag\">User stories<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/web-agile-ux\/\" rel=\"tag\">Web<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/web-apps\/\" rel=\"tag\">Web Apps<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/website\/\" rel=\"tag\">Website<\/a><br>Auteur(s) : <a href=\"https:\/\/flaven.fr\/book-author\/jacob-redding\/\" rel=\"tag\">Jacob Redding<\/a><br>Edition(s) : <a href=\"https:\/\/flaven.fr\/book-description\/john-wiley-sons\/\" rel=\"tag\">John Wiley &amp; Sons<\/a><br>\n\t\t\t\t\t<div class=\"but-wrap\"><a href=\"http:\/\/www.amazon.fr\/Beginning-Drupal%C2%AE-Jacob-Redding\/dp\/0470438525%3FSubscriptionId%3DAKIAJYB2QGGQOTHQLRPA%26tag%3Dhecubenet-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0470438525\" class=\"button\"><span><i class=\"more\"><\/i>+ d'infos<\/span><\/a><\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\n<blockquote><p>Services are collections of methods available to remote applications. They are defined in modules, and may be accessed in a number of ways through server modules.<\/p><\/blockquote>\n<p>Que vous utilisiez la version 5 et + ou la version 6  de Drupal, le fonctionnement est le m\u00eame. Il est n\u00e9cessaire d&#8217;avoir activ\u00e9 les modules suivants : <\/p>\n<ul>\n<li>le module <code>Service<\/code><\/li>\n<li>le module <code>Node Service<\/code><\/li>\n<\/ul>\n<p><b>Pour les besoins de cet article, notre environnement de travail sera une installation  de Drupal 5.14 en local.<\/b><\/p>\n<ul>\n<li>Frontend &#8211; <code>http:\/\/127.0.0.1\/DRUPAL\/drupal-5.14\/<\/code><\/li>\n<li>Backend &#8211; <code>http:\/\/127.0.0.1\/DRUPAL\/drupal-5.14\/admin\/<\/code><\/li>\n<\/ul>\n<p>Pour comprendre comment installer cet environnement PHP-MySQL, reportez-vous aux articles de ce blog&nbsp;:<\/p>\n<ul>\n<li><a href=\"http:\/\/social.hecube.net\/bruno\/2009\/04\/04\/installer-un-environnement-php-mysql-sur-mac\/\">Installer un environnement php-mysql sur Mac<\/a><\/li>\n<li><a href=\"http:\/\/social.hecube.net\/blog\/2009\/03\/14\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/\">Installer un environnement php-mysql sous Windows<\/a><\/li>\n<\/ul>\n<p>Un autre article sur Drupal qui fait r\u00e9f\u00e9rence au m\u00eame environnement.<\/p>\n<ul>\n<li><a href=\"http:\/\/social.hecube.net\/blog\/2009\/06\/09\/drupal-installation-de-drupal-6\/\">Drupal &#8211; Installation de Drupal 6<\/a><\/li>\n<\/ul>\n<p><H4>Activer les modules<\/H4><\/p>\n<p>Pour rendre effectif le service, il faut retourner dans l&#8217;administration et activer sous l&#8217;onglet &#8220;Core &#8211; required&#8221; \u00e0 l&#8217;URL suivante <code>http:\/\/127.0.0.1\/DRUPAL\/drupal-5.14\/admin\/build\/modules<\/code>, les<\/p>\n<p>&#8211; Dans l&#8217;onglet Services, le module &#8220;Services&#8221;<br \/>\n&#8211; Dans l&#8217;onglet Services &#8211; services, le module &#8220;Node Service&#8221;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_4.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_1.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>activation du module <code>Services<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_2.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>activation du module <code>Node service<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_3.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Une fois modules activ\u00e9s, votre Drupal est d\u00e9sormais en mesure de se comporter comme une v\u00e9ritable web application au m\u00eame titre que Google, Flickr, Facebook. Vous pouvez d\u00e9sormais offrir la possibilit\u00e9 \u00e0 d&#8217;autres site de publier du contenu en provenance de votre site <\/b><\/p>\n<p><H4>Voir quels sont les services activ\u00e9s<\/H4><br \/>\nUn lien &#8220;Services&#8221; appara\u00eet dans la colonne de gauche de navigation sous le lien &#8220;Modules&#8221;<\/p>\n<p>Dans la page &#8220;Services&#8221;, il faut aller dans l&#8217;onglet &#8220;Settings&#8221; et d\u00e9cocher les deux checkboxes suivantes :<\/p>\n<ul>\n<li><code>Use keys<\/code><\/li>\n<li><code>Use sessid<\/code><\/li>\n<\/ul>\n<p><b>d\u00e9sactivation de <code>Use keys<\/code> et <code>Use keys<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_5.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><H4>Cre\u00e9r un <code>Content type<\/code> nomm\u00e9 Personne<\/H4><\/p>\n<p>On va cr\u00e9er de toutes pi\u00e8ces un <code>content type<\/code> nomm\u00e9 Personne correspondant \u00e0 une entr\u00e9e dans un carnet d\u2019adresse. <b>Quel int\u00e9r\u00eat, il y a-t-il \u00e0 cr\u00e9er  un <code>Content type<\/code> me direz-vous ? Cela vous permet en autre de g\u00e9rer du contenu r\u00e9current des fiches de musique pour un site de musique, des profils d\u2019intervenants pour un site \u00e9v\u00e8nementiel,  des listes d\u2019h\u00f4tels pour un site de r\u00e9servation. Etc vous isolez \u00e0 l\u2019aide de Drupal un contenu sp\u00e9cifique que vous pourrez ensuite appeler via une API diff\u00e9rente via une datagrid sous Flex par exemple.<\/b><\/p>\n<blockquote><p>\nName * =&gt; Personne<br \/>\nType * =&gt; personne<br \/>\nDescription =&gt; C&#8217;est le contenu type d&#8217;un carnet d&#8217;adresse\n<\/p><\/blockquote>\n<p>La valeur description est optionnel, les deux autres \u00e9tant obligatoires (signal\u00e9s par une *). N\u00e9anmoins, il n&#8217;est pas inutile de commenter certains types dans la mesure o\u00f9 vous n&#8217;\u00eates pas toujours le seul administrateur du contenu, il peut donc \u00eatre utile de pr\u00e9ciser un peu la nature du contenu en question. C&#8217;est un peu la fonction du commentaire dans des lignes de code !<\/p>\n<p><b>les champs <code>Name *<\/code>, <code>Type *<\/code> et <code>Description<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_6.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<blockquote><p>\nTitle field =&gt; Nom<br \/>\nBody field =&gt; Adresse\n<\/p><\/blockquote>\n<p><b>Les autres sp\u00e9cifications restent les m\u00eames par d\u00e9faut.<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_7.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_8.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>le <code>Content type<\/code> nomm\u00e9 Personne<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_9.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><H4>Ins\u00e9rer un peu de contenu<\/H4><\/p>\n<p>On va cr\u00e9er du contenu bouchon pour les besoins de notre d\u00e9monstration&#8230;. Cela ressemble pour commencer \u00e0 un jeu de Monopoly ! A titre d&#8217;information, nous indiquons en italique et entre parenth\u00e8se la valeur <code>nid<\/code> qui nous est retourn\u00e9e par Drupal apr\u00e8s l&#8217;insertion.<\/p>\n<blockquote><p>\nPaul<br \/>\n15, rue de la paix<br \/>\n<em>(12)<\/em><\/p>\n<p>Pierre<br \/>\n2, Place du march\u00e9<br \/>\n<em>(13)<\/em><\/p>\n<p>Vanina<br \/>\n34, rue des soupirs<br \/>\n<em>(14)<\/em><\/p>\n<p>Nelson<br \/>\nImpasse Napol\u00e9on<br \/>\n<em>(15)<\/em>\n<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_10.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p>Une fois ce contenu cr\u00e9\u00e9,  on peut aller v\u00e9rifier que le contenu que nous venons d&#8217;ins\u00e9rer est bien inclus dans un noeud ou <code>node<\/code>, \u00e0 l&#8217;aide de <code>Services &gt; node.load<\/code>. Dans notre exemple, le <code>nid<\/code> pour Paul est <code>12<\/code>. On va se servir des <code>fields<\/code> pour ne retourner que l&#8217;essentiel attach\u00e9 \u00e0 une personne \u00e0 savoir : <code>nid,title,body<\/code>. <b>Attention, vous devez \u00e9crire sans espace et le nom des valeurs en anglais&#8230;<\/b><\/p>\n<h4>Pr\u00e9parer des fichiers pour notre module<\/h4>\n<p>Nous allons cr\u00e9er un r\u00e9pertoire du nom de <code>personne_service<\/code> \u00e0 l&#8217;endroit suivant <code>sites &gt; all &gt; modules &gt; personne_service<\/code>. Nous sommes sur Mac dans la r\u00e9pertoire htdocs de MAMP.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_11.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p>Il reste ensuite \u00e0 cr\u00e9er deux fichiers :  <code>personne_service.info<\/code>,  <code>personne_service.module<\/code><\/p>\n<p><b>Le fichier <code>personne_service.info<\/code><\/b><\/p>\n<pre lang=\"text\">\r\nname = Service to the personne\r\nversion = 1.0\r\ndescription = A service for address book\r\npackage = Services - services\r\ndependencies = services\r\n<\/pre>\n<p>Mieux vaut \u00e9crire les variables du fichier <code>.info<\/code> en anglais<\/p>\n<pre lang=\"text\">\r\nname = Service \u00e0 la personne\r\nversion = 1.0\r\ndescription = Un service pour ins\u00e9rer un carnet d'adresse\r\npackage = Services - services\r\ndependencies = services\r\n<\/pre>\n<p>La valeur <code>dependencies<\/code> est l\u00e0 pour rappeler que notre service <code>Personne<\/code> ne peut \u00eatre utilis\u00e9 sans l&#8217;activation du module <code>services<\/code><\/p>\n<p><b>Le service <code>Personne<\/code> est inactif<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_12.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/> <\/p>\n<p><b>Le service <code>Personne<\/code> est activ\u00e9<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_13.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Le fichier <code>personne_service.module<\/code><\/b><br \/>\nNous allons test\u00e9 dans un premier la fonction <code>personne_service_all<\/code> de notre service module <code>personne_service_service<\/code>, le nom de cette fonction se compose du nom du module <code>personne_service<\/code> auquel est ajout\u00e9e la mention <code>_service<\/code>, cette fonction retourne des tableaux multidimensionnels <code>arrays of arrays<\/code>.<\/p>\n<pre lang=\"php\">\r\n\/* un simple retour pour un besoin de test *\/\r\n\/* return \"Bonjour Hecube\"; *\/\r\n<\/pre>\n<p><b>Le fonction marche, elle retourne <code>return \"Bonjour Hecube\";<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_14.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p>Une fois d\u00e9sactiv\u00e9e et une fois compl\u00e9t\u00e9e comme dans le code ci-dessous, on aura alors les 4 n\u0153uds ou r\u00e9sultats qui seront retourn\u00e9s.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_16.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p>Dans l\u2019\u00e9criture de la requ\u00eate, mieux vaut mettre la valeur <code>{node}<\/code> car Drupal identifie la valeur automatiquement et la remplace par le nom de table correct <code>$result = db_query(\"SELECT * FROM {node} WHERE type='personne' \");<\/code>. Sinon, c&#8217;est la fonction <code>node_load<\/code> de Drupal qui va nous permettre de retourner un noeud complet.<\/p>\n<p>On va rajouter des arguments dans <code>fields<\/code> pour retourner un moins grand nombre de valeurs dans notre array.<\/p>\n<p>Ci-dessous la vesrion complete du code source de <code>personne_service.module<\/code>.<\/p>\n<h4>Le code source complet de <code>personne_service.module<\/code><\/h4>\n<pre lang=\"php\" escaped=\"true\">\r\n&lt;?php\r\n\r\n\r\nfunction personne_service_service () {\r\n\r\n\treturn array (\r\n\t\t\t\t\tarray (\r\n\t\t\t\t\t\t\/* la m\u00e9thode *\/\r\n\t\t\t\t\t\t'#method' =&gt; 'personne_all',\r\n\t\t\t\t\t\t\/* la fonction *\/\r\n\t\t\t\t\t\t'#callback' =&gt; 'personne_service_all',\r\n\t\t\t\t\t\t\/* les filtres *\/\r\n\t\t\t\t\t\t'#args' =&gt; array (\r\n\t\t\t\t\t\t array (\r\n\t\t\t\t\t\t\t\t'#name' =&gt; 'fields',\r\n\t\t\t\t\t\t\t\t'#type' =&gt; 'array',\r\n\t\t\t\t\t\t\t\t'#optional' =&gt; true,\r\n\t\t\t\t\t\t\t\t'#description' =&gt; 'Une liste de champs pour filtrer notre carnet avec les adresses'\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t),\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\/* le retour *\/\r\n\t\t\t\t\t\t'#return' =&gt; 'array',\r\n\t\t\t\t\t\t\/* description *\/\r\n\t\t\t\t\t\t'#help' =&gt; 'Retourne une liste de personne'\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t)\r\n\t\t);\r\n}\r\n\t\t\t\t\/* V00 *\/\r\n\t\t\t\tfunction personne_service_all ($fields = array() ) {\r\n\t\t\t\t\t\/* un simple retour pour un besoin de test *\/\r\n\t\t\t\t\t\/* return \"Bonjour Hecube\"; *\/\r\n\t\t\t\t\t$result = db_query(\"SELECT * FROM {node} WHERE type='personne' \");\r\n\t\t\t\t\t$nodes = array ();\r\n\t\t\t\t\t\twhile ($node = db_fetch_object($result)) {\r\n\t\t\t\t\t\t\t\t$nodes[] = node_load($node);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\treturn $nodes;\r\n\r\n\t\t\t\t}\r\n?&gt;\t\t\t\t\r\n<\/pre>\n<p><H4>Comment installer et activer les services et webservices sous Drupal 6<\/H4><\/p>\n<p>Il vous reste aussi \u00e0 t\u00e9l\u00e9charger le module <b>Services 6.x-0.15 (services-6.x-0.15.tar.gz)<\/b> \u00e0 l&#8217;adresse suivante <a href=\"http:\/\/drupal.org\/project\/services\" target=\"_blank\">http:\/\/drupal.org\/project\/services<\/a>) \u00e0 d\u00e9zipper le tout et \u00e0 l&#8217;envoyez en FTP le r\u00e9pertoire <code>services<\/code> dans <code>\/chemin_vers_drupal\/drupal_install\/modules<\/code>.<\/p>\n<p>Il vous reste \u00e0 t\u00e9l\u00e9charger le module <b>Web Services 6.x-1.02 (webservices-6.x-1.02.tar.gz)<\/b> \u00e0 l&#8217;adresse suivante <a href=\"http:\/\/drupal.org\/project\/webservices\" target=\"_blank\">http:\/\/drupal.org\/project\/webservices<\/a>) \u00e0 d\u00e9zipper le tout et \u00e0 l&#8217;envoyez en FTP le r\u00e9pertoire <code>webservices<\/code> dans <code>\/chemin_vers_drupal\/drupal_install\/modules<\/code>.<\/p>\n<p><b>Les services et webservices sous Drupal 6 sont activ\u00e9s<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_18.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/08\/drupal_create_drupal_module_19.jpg\" alt=\"Drupal - Cr\u00e9er un service sur mesure dans Drupal\" width=\"500\" height=\"265\" \/><\/p>\n<h2>Pour aller plus loin<\/h2>\n<ul>\n<li>Un article de plan\u00e8te Drupal.fr pour cr\u00e9er un module<br \/>\n\t\t<a href=\"http:\/\/planete.drupalfr.org\/node\/514\" target=\"_blank\">http:\/\/planete.drupalfr.org\/node\/514<\/a><\/li>\n<li>Une bonne mise en forme sur Drupal par drupalfr.org<br \/>\n\t\t\t\t<a href=\"http:\/\/drupalfr.org\/node\/4677\" target=\"_blank\">http:\/\/drupalfr.org\/node\/4677<\/a><\/li>\n<li>L&#8217;ensemble des modules<br \/>\n\t\t\t\t\t<a href=\"http:\/\/drupal.org\/project\/modules\" target=\"_blank\">http:\/\/drupal.org\/project\/modules<\/a><\/li>\n<li>Le tag de ce blog concernant Drupal<br \/>\n\t\t\t\t\t<a href=\"http:\/\/social.hecube.net\/blog\/tag\/drupal\/\">http:\/\/social.hecube.net\/blog\/tag\/drupal\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, on va cr\u00e9er un service sur mesure au sein de Drupal. Cr\u00e9er un service peut se r\u00e9v\u00e9ler tr\u00e8s utile, car comme il&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2009\/08\/drupal-creer-un-service-sur-mesure-dans-drupal\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Drupal &#8211; Cr\u00e9er un service sur mesure dans Drupal<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9473,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Drupal \u2013 Cr\u00e9er un service sur mesure dans Drupal. Acc\u00e9dez \u00e0 des m\u00e9thodes pour connecter des applications distantes \u00e0 votre contenu Drupal.","bf_ai_og_title":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3444,3449,3451,3435,3452],"tags":[2221,2225,238,2211,20,239],"class_list":["post-1005","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-databases","category-tutorials-how-to","category-web-design-front-end","category-web-development","category-wordpress-cms","tag-cms","tag-drupal","tag-module","tag-mysql","tag-php","tag-service"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-gd","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2010\/02\/drupal_generic_g_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=1005"}],"version-history":[{"count":2,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1005\/revisions"}],"predecessor-version":[{"id":10182,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1005\/revisions\/10182"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9473"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=1005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=1005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=1005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}