ajout d'un mode :ex : plan du site dans le template

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)
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é de
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:
<?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

Réponses

  • l'explication de la méthode est interressante, masi j'ai pas trop compris a quoi sert ce mode plan...indiqué tous les articles par exemple..?
  • Le mode Plan' est dans l'archive mise en ligne dans le post :
    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 .

    ++
  • Salut gcyrillus,
    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) ?
  • exact :)

    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
Connectez-vous ou Inscrivez-vous pour répondre.