ajout d'un mode :ex : plan du site dans le template
gcyrillus
Member
dans Modifications
Je propose ce "plugin" dans une archive toute faites parmis d'autre modification , et il est peut-etre interessant pour certains de pouvoir seulement recupéré cette options ou de connaitre une maniere d'inserer une nouveau 'mode' a pluxml (version blog php4 et +).
Fonctionnement et principe :
Pluxml , gere ces modes et contenu par l'url , c'est donc par l'url que j'ai pris l'option de déclaré l'usage d'un plugin.
1. je donne un nom ici Plan .
2. pour appeler le plugin , je forme une url : index.php?Plan=Plan
(notes : attention a ne pas ecrire plan avec une minuscule comme ceci : ?plan=Plan Cela souleve un bug dans IE qui ne peut pas atteindre la page.
3 Dans le fichier index.php , je teste $_GET existe et a une valeur, si le teste est positif , je met la variable $pluxml->mode =='Plan' ; le teste ne reagit que si une valeur quelconque est passer en paramètre , Plan est gardé pour la clarté mais pourrait être : ?Plan=1 si ?Plan= sans paramètre , on reste en mode home (acceuil)
<a href="index.php?Plan=Plan" title="plan du site" >Plan du site</a>
Pause pour l'instant on est juste en mesure de tester que l'on peut faire basculer pluxml dans un autre mode que ceux definis dans la version originale.
6. Reste a injecter les scripts et fonctions php necessaire pour retourner les infos que l'on veut .
Toutes les choix restent possibles , on ajoute des fonctions au fichiers functions.php , des objets dans class_pluxml.php , une extension de la class principale , on ajoute des fichiers , .. ou on colle le code complet directement dans le mode du template ou dans un include. Bref chacun fait a son niveau et comme il peut .
A savoir , que les fonctions specifique a ce nouveau mode n'ont besoin d'etre chargé que lorsque celui-ci est solicité , donc par economie , il est peut-etre judiceux de n'inclure les modif qu' a cette occasion.
7. Les modifications apporté au bon fonctionnement de ce nouveau mode sont :
dans class.pluxml.php
function parseArticle($filename)
(il etait aussi possible de modifier cette fonction avec un parametre supplementaire et une condition pour ne retourner que le titre )
pour les autres ajout , je les ai mis dans le template , je fait appel directement a la class pluxml dans une serie de condition et je reforme les urls des articles trié avec une regex:
Pour develloper vos plugins ou integrer vos scripts a pluxml , cette façon de faire reste assez aisée sommes toutes .
faux débutants (mais vrai quand-même )en php , je reste toutes ouies et sensibles aux critiques ou conseils que les uns et les autres plus eclairé que moi pourraient fournir a la communauté .
GC
Fonctionnement et principe :
Pluxml , gere ces modes et contenu par l'url , c'est donc par l'url que j'ai pris l'option de déclaré l'usage d'un plugin.
1. je donne un nom ici Plan .
2. pour appeler le plugin , je forme une url : index.php?Plan=Plan
(notes : attention a ne pas ecrire plan avec une minuscule comme ceci : ?plan=Plan Cela souleve un bug dans IE qui ne peut pas atteindre la page.
3 Dans le fichier index.php , je teste $_GET existe et a une valeur, si le teste est positif , je met la variable $pluxml->mode =='Plan' ; le teste ne reagit que si une valeur quelconque est passer en paramètre , Plan est gardé pour la clarté mais pourrait être : ?Plan=1 si ?Plan= sans paramètre , on reste en mode home (acceuil)
if (!empty($_GET['Plan'])) {
$pluxml->mode= 'plan' ;
}
4. j'ajoute dans le template , la portion de code qui sera activé pour cette valeur attribué a $pluxml->mode (tout comme pour le mode home (accueil) ou categorie
<?php #en mode plan #?>
<?php if ($pluxml->mode=="plan"): ?>
<p>ici le code html du template et le<?php echo 'code php ' ?> a afficher et executé dans cette configuration.</p>
<?php endif; ?>
<?php # fin mode plan?>
5 j'ajoute aussi le lien dans le template qui va activer ce mode :<a href="index.php?Plan=Plan" title="plan du site" >Plan du site</a>
Pause pour l'instant on est juste en mesure de tester que l'on peut faire basculer pluxml dans un autre mode que ceux definis dans la version originale.
6. Reste a injecter les scripts et fonctions php necessaire pour retourner les infos que l'on veut .
Toutes les choix restent possibles , on ajoute des fonctions au fichiers functions.php , des objets dans class_pluxml.php , une extension de la class principale , on ajoute des fichiers , .. ou on colle le code complet directement dans le mode du template ou dans un include. Bref chacun fait a son niveau et comme il peut .
A savoir , que les fonctions specifique a ce nouveau mode n'ont besoin d'etre chargé que lorsque celui-ci est solicité , donc par economie , il est peut-etre judiceux de n'inclure les modif qu' a cette occasion.
7. Les modifications apporté au bon fonctionnement de ce nouveau mode sont :
dans class.pluxml.php
function parseArticleforname($filename){
$data = implode("",file($filename));
$parser = xml_parser_create('ISO-8859-1');
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
xml_parse_into_struct($parser,$data,$valeurs,$index_tags);
xml_parser_free($parser);
$publication['title'] = $valeurs[$index_tags['title']['0']]['value'];
return $publication['title'] ;
}
qui est un clone simplifié defunction parseArticle($filename)
(il etait aussi possible de modifier cette fonction avec un parametre supplementaire et une condition pour ne retourner que le titre )
pour les autres ajout , je les ai mis dans le template , je fait appel directement a la class pluxml dans une serie de condition et je reforme les urls des articles trié avec une regex:
<?php //debut plan du site
?>
<div id="content">
<div class="post">
<h2 class="ulplan">Plan du site : <b> <?php __('maintitle'); echo '</b><em> - ';__('subtitle'); ?></em></h2>
<h2>index</h2>
<ul class="ulplan">
<li>liens principaux
<?php # on remet le lien vers la page d'acceuil et ceux des eventuels plugin ou mode embarqué ?>
<ul>
<li><?php __('maintitle', 'link'); ?></li>
<li><a href="?contact=contact" title="formulaire de contact">Contacter Nous </a></li>
<?php // si vous faites usage du plugin/modife ' page statique' de fightsoul , inserer le script d'affichage de celles-ci pour les inserer au plan (voir forum de pluxml pour en savoir plus ) attention au code html produit . ?>
</ul>
</li>
<li>accueil
<ul>
<?php
$kekchose='0';// declaration et initialisation de variable
$cat_num='accueil';
$motif= '/^[0-9]{4}.'.$cat_num.'(.[a-z0-9-]*)*.xml$/';
foreach($pluxml->aFiles as $file_num => $file_info) {
if(!preg_match($motif,$file_info))
{ // on affiche rien si la categorie acceuil est inutilisé , sinon on passe au else pour afficher les articles de cette catégorie }
else
{
$kekchose++;
$nomdufichier = explode('.',$file_info);
$nmfile = $nomdufichier[2];
$nmcatfile = $nomdufichier[0];
$nmcatfile =preg_replace('[^000|00|0]', '', $nmcatfile);
$nom_article = $pluxml->parseArticleforname('core/xml/'.$file_info);
echo '<li><a href="?'.$nmcatfile.'-'.$nmfile.'">'.$nom_article. '</a> </li>';
}
}
// si la catégorie acceuil n'est pas utilisé , alors on extrait les liens des articles present en page d'acceuil , on reprend la fonction du mode par defaut en se limitant au titre et liens des articles
if ($kekchose <=0 ) {
while($pluxml->result->loop()):?>
<li><?php __('title', 'link'); ?></li>
<?php endwhile;
}
echo'</ul></li>';
// maintenant que l'on a mis dans le plan , le contenu de la page d'acceuil , ou de la ribrique accueil , on passe aux autres , jusqu'a epuisement du stock.
?>
</ul>
<h2>Rubriques</h2>
<ul class="ulplan">
<?php
foreach($pluxml->uCats as $cat_num => $cat_info) {
echo '<li><!--<a href="?'.$cat_num.'/'.$cat_info['url'].'" class="ulplan">-->'.$cat_info['name'].'<!--</a>--><ul>';
$motif= '/^[0-9]{4}.'.$cat_num.'(.[a-z0-9-]*)*.xml$/';
foreach($pluxml->aFiles as $file_num => $file_info) {
if(!preg_match($motif,$file_info))
{/*on n'affiche rien */}
else
{
$nomdufichier = explode('.',$file_info);
$nmfile = $nomdufichier[2];
$nmcatfile = $nomdufichier[0];
$nmcatfile =preg_replace('[^000|00|0]', '', $nmcatfile);// on reforme l'url de pluxml
$nom_article = $pluxml->parseArticleforname('core/xml/'.$file_info);
echo '<li><a href="?'.$nmcatfile.'-'.$nmfile.'">'.$nom_article. '</a> </li>';
}
}
echo'</ul></li>';
}
?>
<ul>
</div>
</div>
Cette portion de code est a placé dans le mode 'plan' ajouter au template precedement ou en include .Pour develloper vos plugins ou integrer vos scripts a pluxml , cette façon de faire reste assez aisée sommes toutes .
faux débutants (mais vrai quand-même )en php , je reste toutes ouies et sensibles aux critiques ou conseils que les uns et les autres plus eclairé que moi pourraient fournir a la communauté .
GC
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://forum.pluxml.org/viewtopic.php?id=800
exemple d'application : http://re7net.hostarea.org/index.php?Plan=plan
Le plan du site est est extrait a la demande .
++
petite observation, ta variable $cat_num devrait pas être $cat_num='home'; au lieux de $cat_num='accueil'; si tu veux que ça marche avec un pluxml normal (étant donnée que les article en page d'accueil sont sous la forme 001.home.title.xml) ?
J'ai renommé ce mode en 'français' . La variable mode sert aussi dans mes bidouilles , a apparaitre dans le title de la page , qui autrement , reste vide dans les modes 'greffer' .
J'ai extrait ce code sans prendre garde a cette modification ! Merci pour les autres
GC