Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 12/11/2008 01:47:31

Yves
Membre
Inscription : 12/11/2008
Messages : 8

Menu d'aide + création automatique de sitemap

Bonjour à la communauté Zite,

Je viens vous soumettre le site web que j'ai crée il y a peu pour une amie psy, le voilà :

http://therapie-couple.org/V2/

Je ne suis pas un professionnel de la programmation mais j'ai fait selon mon niveau, armé de mon NotePad++. J'ai fait en sorte d'adapter Zite au maximum au site déjà existant ( http://therapie-couple.org/ ). J'utilise à quasiment 100% mon propre CSS et je dois dire que le transfert de la V1 à la V2 est plutôt transparent ! J'en ai également profité pour mettre au point un script php pour automatiser la création d'un sitemap à partir du link_list.php de Zite :

<?php
	$test = array();
	// Génération de la liste des liens
	//	$base = 'index.php?perma=';
		$base = 'index.php?z=';
		$L = '<ul>';
		$struct = unserialize(file_get_contents('zdata/structure.dta'));
		$max = count($struct);
		$p = 1;
			
	// Tableau description
	$descr = array (
/*		"Accueil" => 'Vous trouverez sur la page d\'accueil <b>les coordonnées de mon cabinet de psychothérapeute</b> (adresse, numéro de téléphone et courriel) ainsi que le nom des associations dont je suis adhérente.',
		"Curriculum Vitae" => 'Vous trouverez dans mon curriculum vitae les éléments de <b>ma formation de psychothérapeute</b> (participations à des groupes de recherche, séminaires, stages, etc.) ainsi qu\'un volet à propos de <b>mon expérience professionnelle</b>.',
		"La Therapie Analytique de Couple" => 'Il s\'agit d\'un écrit qui s\'adresse à tout le monde sur <b>la question du couple et de ses périodes de crise</b> : « Quel est l\'intérêt d\'une thérapie ? », « En quoi cela consiste ? », etc.',
		 "Le Conseil Conjugal et Familial" => 'Il s\'agit d\'un texte à propos de <b>l\'utilité des entretiens conjugaux ou familiaux</b>.',
		 "Plan du Site" => 'C\'est la page où vous vous trouvez actuellement, qui résume et permet de repérer les différentes parties du site internet <b>therapie-couple.org</b>',
		 "Blog" => 'Sur ce blog, je partage avec vous <b>mes différentes expériences au jour le jour à la façon d\'un journal de bord</b>. En lisant ce blog, vous pourrez vous faire une idée de ce qu\'implique le travail d\'un psychothérapeute.'
*/
	);
		
		for ($i=1; $i<=$max; $i++) {
			$s = $struct[$i];
			$k = str_repeat('  ',3*--$s[2]).$s[1];
			$test = array_fill (count($descr)+2,count($s)-count($descr)+1,"");
			// print_r(array_values($result));
			
		//	if ($s[4]) $L .= ",\n[\"".str_repeat('  ',3*--$s[2]).$s[1].'","'.$base.$s[$i].'"]';
			if (isset($descr[$k])) { if ($s[4]) { $L .= '<li><a href='.$base.$p.'>'.$k.'</a> – '.$descr[$k].'</li>';
			$p++;} }
			else {$L .= '<li><a href='.$base.$p.'>'.$k.'</a>'.$test[$i+1].'</li>';
			$p++;}
		}
		echo $L.'</ul>';
?>

Ce script ne fonctionne pas avec les permaliens parc'qu'il semble que j'ai des problèmes avec le htaccess sur le serveur de mon hébergeur, mais je suis sûr que ce script est facilement adaptable. Enfin ça reste quand même du bricolage et le code n'est pas très propre donc si ça vous tente de l'améliorer, n'hésitez pas smile

D'ailleurs, je voudrais aller plus loin dans la customization de Zite. Mon amie propriétaire du site n'y connait absolument rien en informatique. Je voudrais implémenter dans la zone admin/webmaster une section/un lien "aide" (accessible uniquement après l'authentification) et également ajouter du texte au dessus du panneau d'administation, du page editor et du config editor. Je voudrais également modifier le contenu du config editor. Un truc tout bête : comment centrer la zone d'authentification sur la page de login ? Mais je ne sais pas comment m'y prendre. J'ai trifouillé les fichiers index.php, template.php et zite.php mais impossible de parvenir à mes fins, je n'ai pas trouvé ce que je cherchais.

Voilà, bonne continuation au créateur !

Dernière modification par Yves (15/11/2008 15:50:51)

Hors ligne

#2 12/11/2008 08:32:38

Kreasite
Membre
Inscription : 14/09/2007
Messages : 62

Re : Menu d'aide + création automatique de sitemap

Très beao résultat.
BRAVO

DAV

Hors ligne

#3 13/11/2008 20:31:31

Riku Asakura
Membre
Lieu : Amiens
Inscription : 13/11/2008
Messages : 8
Site Web

Re : Menu d'aide + création automatique de sitemap

Hello.
En effet, très transparent, belle imitation du skin précédent wink

Pour t'aider à centrer la zone identification, il faut aller chercher ça dans le fichier messages.ini du dossier zdata.
En l'ouvrant avec Notepadd++ tu devrais vite repérer cette ligne :

login_form = "<h1>Identification</ h1><form name='login_form' method='post' action='?z=login'><input name='id' type='text' />Votre identifiant <br /><input name='pass' type='password' />Votre mot de passe<br /><input type='submit' name='Submit' value='Envoyer' /></form>"

Je pense qu'en mettant ce qui se trouve entre guillemets dans une div, lui appliquant un ID et styler l'ID via la feuille style.css tu devrais arriver à centrer le tout wink

login_form = "<div id="form_admin"><h1>Identification</ h1><form name='login_form' method='post' action='?z=login'><input name='id' type='text' />Votre identifiant <br /><input name='pass' type='password' />Votre mot de passe<br /><input type='submit' name='Submit' value='Envoyer' /></form></div>"

Bon courage dans ton custom

Dernière modification par Riku Asakura (13/11/2008 20:35:09)

Hors ligne

#4 14/11/2008 00:28:02

Yves
Membre
Inscription : 12/11/2008
Messages : 8

Re : Menu d'aide + création automatique de sitemap

Merci Riku,
Il m'a fallu un certain temps pour comprendre le fonctionnement de zite.php mais quelque temps après avoir posté mon message j'ai trouvé les deux fichiers .ini que je n'avais pas osé toucher et là, bingo!

Finalement, j'ai opté pour ce code pour respecter les règles CSS de mon site :

; Formulaire pour l'identification
login_form = "<div id=dialog><h2>Identification</h2><form name='login_form' method='post' action='?z=login'>Votre identifiant : <br /><input name='id' type='text' /><br />Votre mot de passe : <br /><input name='pass' type='password' /><br /><input type='submit' name='Submit' value='Envoyer' /></form></div>"

Puis je me suis amusé à faire un lien login/logout dans l'interface admin :

; Message de login
login = "[Identifiez-vous]" 
; Message de logout
logout = "[Déconnexion]"

Pour que ça marche, il faut placer ceci dans le template.php :

	<div id="user">	
<?php
if ($_SESSION['zite_admin'] == 0) // Affiche un message invitant à s'identifier si aucune session webmaster ou user n'est ouverte
{echo '<a href="'.$this->base.'login">'.$this->get_message('login').'</a>';};
if ($_SESSION['zite_admin'] == 1 || $_SESSION['zite_admin'] == 2) // Affiche un message invitant à se déconnecter si une session webmaster ou user est ouverte
{echo '<a href="'.$this->base.'logout">'.$this->get_message('logout').'</a>';};
?>
	</div>

Et ça dans zite.php en début de la function page_login() :

$_SESSION['zite_admin'] = 0;

Euh voilà, je sais pas si c'est très secure mais comme mon hébergeur interdit les .htaccess, je suis plus à ça près... D'ailleurs, si vous avez une idée pour l'URL rewriting sans htaccess, je suis largement preneur !

Sinon, je suis en train de mettre au point une aide à l'utilisation de Zite mais je ne sais pas trop comment m'y prendre. J'ai crée une nouvelle entrée dans messages.ini :

; Aide
files_help = "[Aide]"

Et dans config.ini :

files_help = "aide/index.php"

Et j'ai ajouté la chose au menu d'administration dans zite.php, function adminbar()  :

		$out .= ' <a href="'.$this->get_data('files_help').'" target=_blank>'.$this->get_message('files_help').'</a>'; // Lien pour l'aide

Voilà, maintenant je sais pas comment réserver l'accès à "/aide/" uniquement à l'utilisateur identifié, sans qu'il ait besoin de se réidentifier pour accèder à l'aide.

Au passage, j'ai amélioré le script pour créer un plan du site automatiquement. Cependant, ce script va quand même afficher les pages censées être non publiées :

		<h2>Plan du Site</h2>
		<?php
	$path = 'index.php?z='; // Chemin standard des liens
	$display = "<ul> <!-- Liens et descriptions -->\n"; // HTML - Balise d'ouverture de la liste (Variable pour afficher le résultat du script)
	$j = 1; // Equivalent de $i mais incrémentation indépendante de la boucle

	$structure = unserialize(file_get_contents('zdata/structure.dta')); // Génération de la liste des liens
	$max = count($structure); // Comptage du nombre de liens à partir de $structure

	$description = array ( // Tableau de description des liens
		"Accueil" =>
		'Vous trouverez sur la page d\'accueil <b>les coordonnées de mon cabinet de psychothérapeute</b> (adresse, numéro de téléphone et courriel) ainsi que le nom des associations dont je suis adhérente.',
		"Curriculum Vitae" =>
		'Vous trouverez dans mon curriculum vitae les éléments de <b>ma formation de psychothérapeute</b> (participations à des groupes de recherche, séminaires, stages, etc.) ainsi qu\'un volet à propos de <b>mon expérience professionnelle</b>.',
		"La Therapie Analytique de Couple" =>
		'Il s\'agit d\'un écrit qui s\'adresse à tout le monde sur <b>la question du couple et de ses périodes de crise</b> : « Quel est l\'intérêt d\'une thérapie ? », « En quoi cela consiste ? », etc.',
		"Le Conseil Conjugal et Familial" =>
		'Il s\'agit d\'un texte à propos de <b>l\'utilité des entretiens conjugaux ou familiaux</b>.',
"Plan du Site" => 'C\'est la page où vous vous trouvez actuellement, qui résume et permet de repérer les différentes parties du site internet <b>therapie-couple.org</b>',
		"Blog" =>
		'Sur ce blog, je partage avec vous <b>mes différentes expériences au jour le jour à la façon d\'un journal de bord</b>. En lisant ce blog, vous pourrez vous faire une idée de ce qu\'implique le travail d\'un psychothérapeute.',
	);
	$nodescription = array(); // Tableu pour les liens sans description

	for ($i=1; $i<=$max; $i++) { // Boucle
		$s = $structure[$i]; // Séparation du lien
		$name = str_repeat('  ',3*--$s[2]).$s[1]; // Extraction du nom du lien
		$nodescription = array_fill (count($description)+2,count($s)-count($description)+1,""); // Remplissage du tableau en cas de liens sans description
		
		if (isset($description[$name])) { // Si il existe une description dans le tableau
			if ($s[4]) {
			$display .= "\t\t\t".'<li><a href='.$path.$j.'>'.$name."</a>\n\t\t\t – ".$description[$name]."</li>\n"; $j++; // HTML - Création de l'élement de la liste
			}
		}
		else { // Si il n'existe pas de description
		$display .= "\t\t\t".'<li><a href='.$path.$j.'>'.$name.'</a>'.$nodescription[$i+1]."</li>\n"; $j++; // HTML - Création de l'élement de la liste
		}
	}
	$display.="\t\t</ul>"; //  // HTML - Balise de fermeture de la liste
	echo $display; // Affichage du résultat du script
		?>

Dernière modification par Yves (14/11/2008 02:09:39)

Hors ligne

#5 14/11/2008 17:40:12

Riku Asakura
Membre
Lieu : Amiens
Inscription : 13/11/2008
Messages : 8
Site Web

Re : Menu d'aide + création automatique de sitemap

Wahou !
Merci du partage tongue

Hum... pour l'aide, tu dis que ton problème c'est qu'il te demande à nouveau de t'identifier même si tu l'es déjà ?
N'y aurait-il pas un petit manque du côté de la superglob. SESSION ?
Enfin, je dis ça mais je n'ai que de maigres connaissances en php... juste de quoi faire joujou XD

Ce que je vais faire c'est essayer de tripatouiller aussi le code dans ton sens, car j'aurais aussi besoin de rajouter une telle section d'aide... dès que j'ai un semblant de quelque chose je te fais signe wink

Au plaisir.

Hors ligne

#6 15/11/2008 15:28:06

Yves
Membre
Inscription : 12/11/2008
Messages : 8

Re : Menu d'aide + création automatique de sitemap

De rien, j'espère que c'est utile.

En fait, en ce qui concerne le "menu" d'aide, à force de tripatouillage, de tripatouillage et encore de tripatouillage, j'ai trouvé l'astuce des "fonctions-pages" (ce sont les page_login(), page_logout(), page_admin(), page_source_editor(), etc. qui produisent des index.php?z=login et autres index.php?z=admin) :

Il s'agit de la function zite($caller, $cs=false) dans zite.php.
* Le premier intéret de zite() c'est qu'on peut contrôler le chemin d'accès des principaux dossiers/fichiers ("/zdata", "/zfiles", "config.ini", etc.)
* Mais ce qui nous intéresse, c'est ceci :

		$this->syspages = array('login', 'logout', 'admin', 'config_editor', 'page_editor', 'source_editor', 'delete', 'files', 'sitemap','help'); // Création de pages à partir de index.php (sous la forme index.php?z=page)
		session_start();

Comparé au code original, j'ai rajouté "help" dans l'array $syspages.

Pour que ça fonctionne correctement, il faut ajouter une function page_help() dans laquelle vous pouvez faire quelque chose du genre :
   

function page_help() { // Aide
	$out = "<h1>Bienvenue dans le menu d'aide</h1>";
	$out .= "<p>Bla bla bla</p>";
	return $out;
	}

Ne pas oublier d'écrire ceci dans config.ini (je n'ai pas trouvé d'autres moyens pour l'instant) :

files_help = "index.php?z=help"

(Note : Si ça ne marche pas, aller voir mon post précédent)

C'est sympa, on arrive à ce qu'on veut, mais l'incrustation de HTML "brut" n'est pas super pratique si on veut vouloir modifier le texte affiché ultérieurement.

C'est donc là que c'est encore plus fort : j'ai mis au point l'utilisation d'un fichier help.ini à la façon de messages.ini. Pour se faire, il faut aller voir function get_message($key) dans zite.php :
   

function get_message($key) { // Affichage de messages génériques (messages d'erreur, d'échec/succès, etc.)
		if (!$this->messages) $this->messages = @parse_ini_file($this->cpath.'/messages.ini', true);
		return array_key_exists($key, $this->messages) ? $this->messages[$key] : "[$key : Message non défini (messages.ini)]";
	}

Et faire une function get_help($key) très ressemblante :
   

function get_help($key) { // Affichage de messages d'aide
		if (!$this->help) $this->help = @parse_ini_file($this->cpath.'/help.ini', true);
		return array_key_exists($key, $this->help) ? $this->help[$key] : "[$key : Aide non définie (help.ini)]";
	}

Il ne faut pas oublier d'ajouter "$help;" à la liste des var de la class zite et "$this->help = $this->truepage = false;" dans function zite()

Au final, on peut donc faire une function page_help() de ce genre :

	function page_help() { // Aide
	$display = $this->get_help('title_main');
	$display .= $this->get_help('main_welcome');
	return $display;
	}

En ayant un help.ini comme ceci :

;TITRE
title_main = "<h2>Aide</h2>"

; PAGE D'ACCUEIL DU MENU D'AIDE
main_welcome = "<p>Bienvenue dans l'aide à l'utilisation de Zite CMS.</p>"

Voili, voilou, c'est tout pour aujourd'hui !

Tu as une idée pour faire de l'URL rewriting sans .htaccess ? C'est la misère.

Dernière modification par Yves (15/11/2008 16:00:22)

Hors ligne

#7 15/11/2008 16:34:12

Renaud
Membre
Inscription : 30/01/2007
Messages : 306

Re : Menu d'aide + création automatique de sitemap

Merci pour tout ça !


Ubuntu Rocks

Hors ligne

#8 17/11/2008 09:38:52

michael79
Membre
Lieu : Bruxelles, Belgique
Inscription : 23/07/2008
Messages : 422

Re : Menu d'aide + création automatique de sitemap

Très bien réalisé. C'est bien de voir des sites avec un look différent ce qui
démontre bien la souplesse de Zite. Beau boulot.


ZiteCMS rocks !

Hors ligne

#9 06/12/2008 02:17:16

Riku Asakura
Membre
Lieu : Amiens
Inscription : 13/11/2008
Messages : 8
Site Web

Re : Menu d'aide + création automatique de sitemap

Yves... chapeau !
J'ai suivi le début... j'ai lâché en cours de route (*regarde l'heure*)
Mais ça me semble bien tripatouillé tout ça... je regarderai ça de plus prêt prochainement...

J'ai moi-même pas eu trop le temps de bien fouiller les fichiers ces derniers temps, j'ai eu plus de taff que je ne l'aurais pensé...

Pour le .htaccess hélas je ne vois pas du tout... j'ai toujours eu du mal à passer outre cette utilisation.

Enfin dés que je peux y accorder du temps je le ferais wink

Encore bravo pour tes modifs wink

Hors ligne

Pied de page des forums