Une class sitemap pour afficher l'arborescence de votre site.

Soyez le premier à donner votre avis sur cette source.

Vue 10 018 fois - Téléchargée 987 fois

Description

Cette source permet d'afficher l'arborescence de votre site sous forme de lien et d'afficher une barre de navigation du type :
"home -> page 1 -> page actuelle"

La source de donnée est un fichier XML que j'ai appelé web.sitemap (...).

Source / Exemple :


<?php 
	// instanciation
	$oSiteMap = new Sitemap();
	
	// personnalisation
	$oSiteMap->setSeparatorImg("./images/puce2.gif");
	$oSiteMap->setPageImg("./images/design/filesystem/file_other.gif");
	$oSiteMap->setSiteMapCss("border-left:dashed 1px #cecece;");
		
	// chargement du fichier
	$oSiteMap->loadXmlFile("Web.sitemap");
		
	// affichage du chemins
	echo "<div style=\"margin-top:10px;\">\n";
	$oSiteMap->print_path($_SERVER['PHP_SELF']);
	echo "</div>\n";
		
	// affichage de la structure du site
	$oSiteMap->print_sitemap();
?>

Conclusion :


Merci de me transmettre vos critiques.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Ben... Dans le cas d'un site web, c'est surtout le CSS, surtout si le XHTML est bien pensé. C'est justement dans cette direction que portent les travaux du W3C sur XHTML et CSS3.
Je te conseille donc de ne pas t'occuper des CSS.
Tes classes peuvent produire des données brutes (des tableaux, des itérateurs, etc). Des classes spécialisées peuvent ensuite mettre en forme ces données, dans ton cas, tu t'occuperas du XHTML. Tu mets les données en forme selon un format de présentation des données.
Les CSS c'est juste pour embellir.
waterw72
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
-
Oui, juste une petite question la Vue, c'est l'interface donc du HTML CSS, ect mais une classe? si?
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Tout dépend de ce que toi tu veux faire.
MVC n'est qu'un design pattern, que tu es libre de respecter ou non.
Il semble effectivement que ASP.net ne respecte pas tellement MVC. Je dis "semble", parce que je ne connais pas du tout ASP.net. Cependant, il semble manifeste qu'il permet d'aller carrément à l'encontre de MVC (libre à chacun j'imagine d'utiliser les méthodes fournies ou d'autres de son choix).

Une méthode setCssClass() de la classe oSiteMap est manifestement contraire à MVC : tu mélanges dans ce cas le modèle (ou le contrôleur) et la vue.
Ce ne doit pas être à cette classe de gérer les CSS. La raison est simple : ça implique trop de changements lors de l'intégration.
Si le développeur qui veut intégrer ta classe dans son site souhaite modifier ses CSS (ce qui est tout à fait légitime...) il devra en plus se fader la méthode setCssClass de ta classe. Si tout le monde fait pareil, il devra faire pareil pour TOUTES les classes qui produisent un affichage. On en revient à un développement mal pensé où pour modifier une couleur on doit faire 250 modifications, dans toutes les sources intégrées pour les mettre en adéquation graphique avec son site.

Un classe du modèle doit fournir des données brutes et rien d'autre. Pas de mise en forme, ce n'est pas son travail.
Les données brutes doivent pouvoir être facilement mises en pages par l'utilisateur. Pour cela, on peut imaginer une classe pour chaque type d'affichage (XML, XHTML, PDF, PNG, LaTeX, Texte brut, etc). Dans ton cas, tu n'en implémenterais qu'une : celle dont tu as besoin ; mais l'utilisateur pourrait facilement la réécrire (en écrire une autre) qui lui permettrait de produire du HTML 3.2 avec des tableaux (beurk), du XML, ou autre.
A toi de penser suffisament bien les données produites pour qu'elles puissent être mises en page facilement.
Concrètement, un ID pour le bloc de plus haut niveau. Les autres éléments que celui-ci contient peuvent alors être accédés depuis celui-ci :
#site_map ul li

Est-ce que c'est plus clair ?
waterw72
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
-
Pour ma seconde question.
Apparemment, tu as considéré ma classe faisant partie du modèle dans un concept de développement MVC (Modèle Vue Contrôleur).

Moi, j'avais considéré ma classe comme un composant que l'on pourrait comparer avec un composant ASP.Net tel qu'un label.
Le composant label possède des méthodes qui permettent de traiter les données (ex : la propriété .Text) et des attributs qui permettent de modifier l'apparence (ex : .Forecolor pour la couleur du text).

rmq : Je ne pense pas que ASP.Net soi respecte la logique MVC.

Enfin, pour en venir à ma question, pourquoi ma classe ne pourrait-elle pas être considérée comme un composant avec des attributs (d'affichage) et des méthodes au même titre que le label d'ASP.Net?

___
Pour ne pas utiliser les templates, que je ne maîtrise pas encore, serait-il correct de faire une classe sitemap.class.php (sans HTML) et un controller sitemap.controler.php (avec HTML, CSS)qui aurait des propriétés tel que : image de séparation, class css, ... ect

le controler hériterait de la class?

je sais que dans ce cas, le php serait tout de même dans le html mais de cette manière :
$oSiteMap = new SiteMap_controler();
$oSiteMap->setImageUrl = "";
$oSiteMap->setCssClass = "";
$oSiteMap->setSecurity = "";
$oSIteMap->printSitemap();
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Salut,

Je suis pas certain d'avoir bien compris ta question... Alors je ne me risquerai pas à y répondre... ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.