Semi pro
Inscrit: 05/04/2003 19:03
|
Bonjour, ça en fait des infos à transmettre, tout ça Pour toutes celles et ceux qui nous lisent, je vous conseille, lorsque vous trouvez une info qui vous intéresse vraiment de la conserver sur votre disque dur en faisant une sauvegarde de la page affichée. Parenthèse mise à part, voilà, Bioskop, ce que j'ai pu retrouver sur on disque: 1- D'après Philou sur Xoops-Thèmes en 2003: Citation : Un début de réponse....
+ Un nouveau dossier a été ajoute dans l'arborescence de notre module : template + Les fonctions OpenTable() et CloseTable() n'existent plus. + Dans le fichier xoops_version.php, vous pouvez ajouter ces lignes à la fin si vous avez créé des templates : // Templates ici un modèle pour la page index.php du module.
$modversion['templates'][1]['file'] = 'myinfos_index.html'; $modversion['templates'][1]['description'] = 'Afficher le texte se trouvant dans la base';
et si nous avions un autre fichier, exemple : ajouter_commentaire.php, on aurait pu ajouter un nouveau modèle :
$modversion['templates'][2]['file'] = 'myinfos_ajouter_commentaire.html'; $modversion['templates'][2]['description'] = '';
+ Integration des templates par le fichier index.php de votre module. (avant le fichier header principal (*)(celui qui se trouve à la racine de votre site)
$xoopsOption['template_used'] = array('myinfos_index.html'); $xoopsOption['template_main'] = 'myinfos_index.html'; if($xoopsConfig['startpage'] == "myinfos"){ $xoopsOption['show_rblock'] =1; include(XOOPS_ROOT_PATH."/header.php"); /// (*) make_cblock(); echo "<br />"; }else{ $xoopsOption['show_rblock'] =0; include(XOOPS_ROOT_PATH."/header.php"); }
+ On déclare des variables qui seront utilisées par le template. Constantes qui ont été définies auparavant dans le fichier main.php du dossier language/french/. Ex : Les deux variables $title et $lastinfo pourront être affichées par la suite dans le template.
$xoopsTpl->assign('title', _MD_TITLE); $xoopsTpl->assign('lastinfo', _MD_LAST_INFOS); $result=$xoopsDB->query("SELECT * FROM ".$xoopsDB->prefix("myinfos")."") or die("Error");
+ Stockage des infos dans un tableau $info
$info = array(); $myts =& MyTextSanitizer::getInstance(); list($informations, $nohtml, $nosmiley, $noxcode) = $xoopsDB->fetchRow($result); $html = !empty($nohtml) ? 0 :1; $smiley = !empty($nosmiley) ? 0 :1; $xcode = !empty($noxcode) ? 0 :1;
Ici on stocke notre texte dans le tableau $infos, on pourra par la suite y accéder de cette façon :
$info.texte $info['texte'] = $myts->makeTareaData4Show($informations, $html, $smiley, $xcode);
Pour envoyer le tableau au template, n'oubliez pas cette ligne
$xoopsTpl->append('infos', $info); include_once(XOOPS_ROOT_PATH."/footer.php"); ?>
+ le template (HTML + appels de variables)
<table width="100%" cellpadding="4" cellspacing="0" border="0"> <tr class="bg3"> <td colspan="2" align="center"> // affichage de la variable $title definie dans index.php // syntaxe d'affichage : <{$variable}> <span class="fg2"><b><{$title}></b></span></td> </tr> <tr> <td class="bg3"><p> </p> // on lit le tableau (ici une seule ligne mais ce serait identique) <{foreach item=info from=$infos}> <{$info.texte}> <{/foreach}> </td> </tr> <tr> <td class="bg3" align=center> // On peut afficher un autre texte en fin de template <br><span class="fg2"><b><{$lastinfo}></b></span> </td> </tr> </table>
RAPPEL : si vous modifiez un template il est imperatif de faire une MAJ du module considéré (le template est stocke dans la base) admin/index.php (du module modifie)
OpenTable() et CloseTable() retirées. fonctions de gestion du cache retirées . (xoopsfaq_write_contss() par exemple)
modification des requetes
$sql = "DELETE FROM ".$xoopsDB->prefix("xoopsfaq_categories")." WHERE category_id=".$cat_id."";
devient
$sql = sprintf("DELETE FROM %s WHERE category_id = %u", $xoopsDB->prefix("xoopsfaq_categories"), $cat_id);
+ gestion des messages utilisateurs
echo "<div align='center'>"; echo "<h4 style='color:#ff0000'>"._XD_RUSURECAT."</h4>"; echo "<table><tr><td>n"; echo myTextForm("index.php?op=delcat&cat_id=".$cat_id."&ok=1'" , _YES); echo "</td><td>n"; echo myTextForm("index.php?op=listcat", _NO); echo "</td></tr></table>n"; echo "</div>";
devient
xoops_confirm(array('op' => 'delcat', 'cat_id' => $cat_id, 'ok' => 1), 'index.php', _XD_RUSURECAT);
index.php (du module modifie)
Nous n'allons nous intéresser qu'au code qui interroge la base afin de récuperer les éléments affichées sur la page du module. Dans cette partie là, tout le code a été revu, les données sont stockées dans un tableau associatif $category, ainsi que l'envoi des informations vers le template intitulé : xoopsfaq_index.html On assigne au template quelques variables
$xoopsTpl->assign('lang_faq', _XD_DOCS); $xoopsTpl->assign('lang_categories', _XD_CATEGORIES); On interroge la base pour récupérer les catégories de la FAQ $result = $xoopsDB->query('SELECT category_id, category_title FROM '.$xoopsDB->prefix('xoopsfaq_categories').' ORDER BY category_order ASC');
On liste les données récupérées.
while (list($id, $name) = $xoopsDB->fetchRow($result)) {
On créé un tableau associatif pour stocker ces données.
$category = array();
les variables NAME et ID sont stockées dans le tableau
$category['name'] = $myts->makeTboxData4Show($name); $category['id'] = $id;
On récupère les questions et réponses en fonction des catégories
$sql = 'SELECT contents_id, contents_title FROM '.$xoopsDB->prefix('xoopsfaq_contents').' WHERE contents_visible=1 AND category_id='.$id.' ORDER BY contents_order ASC'; $result2 = $xoopsDB->query($sql);
Pour chaque questions-réponses on stocke le titre et l'id de la réponse
while ($myrow = $xoopsDB->fetchArray($result2)) { $category['questions'][] = array('id' => $myrow['contents_id'], 'title' => $myts->makeTboxData4Show($myrow['contents_title'])); }
On envoie au template le tableau d'une manière bien étrange
(append_by_ref) $xoopsTpl->append_by_ref('categories', $category);
On détruit la variable
unset($category);
templates/xoopsfaq_index.html Le template qui est appelé par le module XoopsFaq pour afficher les questions-réponses. Tout comme le template du module Myinfos, voici du code html avec l'affichage de variables code]<h4 style="text-align:left;"><{$lang_faq}></h4> <table width="100%" cellpadding="4" cellspacing="0" border="0"> <tr> <td><b><{$lang_categories}></b></td> </tr> <tr> <td>[/code] Là, il est question de boucler afin d'afficher toutes les questions et réponses stockées dans la base. Noter bien la syntaxe foreach item=.. from=...)
<!-- start category loop --> <{foreach item=category from=$categories}>
<img src="<{$xoops_url}>/modules/xoopsfaq/images/folder.gif" width="14" height="14" border="0" alt="" /> <a
Pour accéder aux données du tableau on écrit comme ça :
$category.id href="index.php?cat_id=<{$category.id}>"><{$category.name}></a> <ul style="list-style-image:url(images/question.gif);">
<!-- start question loop --> <{foreach item=question from=$category.questions}>
<li><a href="index.php?cat_id=<{$category.id}>#q<{$question.id}>"> <{$question.title}></a></li> <{/foreach}> <!-- end question loop --> </ul> <{/foreach}> <!-- end category loop --> </td> </tr> </table> <h4 style="text-align:left;"><{$lang_faq}></h4>
Ce document s'appuie sur le module FAQ (pour sa simplicité) et s'inpire d'un article de xoops-quebec (adapté car c'était pour la V2RC1)
2- Pas d'info pour le moment. Désolé 3- D'après Inconnue Team: Citation :Alors je vais essayé de vous expliqué vite fait comment creer un module vite fait bien fait:
1:Trouver quelque chose pour faire un module (script php,bout de script, code etcetc) 2:Creer les bases du module avec un dossier que l'on nommera dans l'exemple "mon module" 3:Creer avec l'aide de phpedit le xoops_version.php c'est le fichier neccésaire pour faire fonctionné votre module, dedans il y a dans notre exemple:
$modversion['name'] = "mon module"; <----Nom du module $modversion['version'] = 0.1;<----Version du module $modversion['description'] = "Mon 1er module";<---description du module $modversion['credits'] = "";<---Si il y a des crédits $modversion['author'] = "Xoopsé by Inconnueteam ( http://www.inconnueteam.net )";<---Auteur du module $modversion['help'] = "";<---Fichier d'aide s'il y a $modversion['license'] = "";<---Nom de la license s'il y a $modversion['official'] = 0;<----Official ou non! $modversion['image'] = "mon module.gif";<----Image du module(pour l'admin) $modversion['dirname'] = "mon module";<---Nom du module qui sera affiché dans le menu!
// Menu $modversion['hasMain'] = 1;<----Si le module doit etre affiché dans le bloc menu!!
Voilà une fois ceci fait nous allons passé à l'étape suivante faire la base du module. Dedans le + généralement vous devez mettre ses bases pour que le module puisse fonctionné corectement: Creer un fichier index.php et mettez ce code dedans: Au debut du fichier:
include("../../mainfile.php"); include($xoopsConfig['root_path']."header.php"); $xoopsOption['show_rblock'] =0;<---Si mettre 1 les blocks de droites seront affichés OpenTable();
En fin de fichiers:
CloseTable(); include ("../../footer.php"); ?>
Et au milieu vous insérez votre code et c'est tout ,dans la prochaine partie nous verrons comment rajoutez des defines et autres base sql si vous avez une... Inséré in fichier sql Alors voilà vous avez un script à modularisé et flûte vous avez un sql à ajouté horreur et danmation (lol ça s'écrit comme ça???) Alors voilà la méthode à suivre :::
Ouvrez votre xoops_version.php et insérez ceci :: //SQL $modversion['sqlfile']['mysql'] = "sql/sql.sql"; <==ceci est le chemin ou est stocké votre fichier sql -Ouvrez votre fichier sql de votre script et comptez le nombre de tables que vous avez. - Allez dans votre xoops_version et insérez vos tables de la manière suivante::
$modversion['tables'][0] = "table_1"; $modversion['tables'][1] = "table_2"; $modversion['tables'][2] = "table_3";
Toujours commencé par le chiffre zéro car c'est mieux Si vous avez d'autres tables insérez d'autres lignes... Voilà j'espère que cela vous aideras bonne adapte
Posté le : 09/10/2005 08:04
|