Diverses modifs sur les pages statiques
SapinTremblant
Member
Bonsoir,
pour un développement j'ai eu besoin de modifier le core et l'admin des pages statiques pour :
dans l'admin:
- ajouter les META keyword et description par page
- ajouter un sous-titre
- choisir si OUI ou NON la page doit être lister dans le menu
L'interêt ?
- les META sont plus précis car entrés par page
- Le sous-titre m'a permis de faire des titres sur 2 lignes avec des tailles et style de texte différents
- lister dans le menu ? Je me suis suis rendu compte qu'il était possible de faire des include de page statiques dans d'autres pages. Ce qui permet de faire des blocs (diaporama par ex.) inclus en page d'accueil gérables facilement dans l'admin. De la, j'ai souhaité ajouter, dans le footer, un lien vers une page statique (mon site ne fonctionne qu'avec des pages statiques donc le menu liste toutes les pages "actives") il m'a donc fallu ajouter l'option MENU => OUI/NON
et voila. j'espère que c'est clair pour vous et que cela vous servira.
VOILA LE CODE.
fichier /core/lib/class.plx.motor.php
line 167
vous remplacer par :
vous remplacer tout par :
line 223
vous remplacer par :
line 790
vous remplacer par :
Ah si, pour afficher les META il faut mettre
pour un développement j'ai eu besoin de modifier le core et l'admin des pages statiques pour :
dans l'admin:
- ajouter les META keyword et description par page
- ajouter un sous-titre
- choisir si OUI ou NON la page doit être lister dans le menu
L'interêt ?
- les META sont plus précis car entrés par page
- Le sous-titre m'a permis de faire des titres sur 2 lignes avec des tailles et style de texte différents
- lister dans le menu ? Je me suis suis rendu compte qu'il était possible de faire des include de page statiques dans d'autres pages. Ce qui permet de faire des blocs (diaporama par ex.) inclus en page d'accueil gérables facilement dans l'admin. De la, j'ai souhaité ajouter, dans le footer, un lien vers une page statique (mon site ne fonctionne qu'avec des pages statiques donc le menu liste toutes les pages "actives") il m'a donc fallu ajouter l'option MENU => OUI/NON
et voila. j'espère que c'est clair pour vous et que cela vous servira.
VOILA LE CODE.
fichier /core/lib/class.plx.motor.php
line 167
vous remplacer par :
/**
* Méthode qui parse le fichier des pages statiques et alimente
* le tableau aStats
*
* @param filename emplacement du fichier XML des pages statiques
* @return null
* @author Florent MONTHEL
**/
function getStatiques($filename) {
if(!is_readable($filename)) return;
# Mise en place du parseur XML
$data = implode('',file($filename));
$parser = xml_parser_create(PLX_CHARSET);
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,$values,$iTags);
xml_parser_free($parser);
# On verifie qu'il existe des tags "statique"
if(isset($iTags['statique'])) {
# On compte le nombre de tags "statique"
$nb = sizeof($iTags['statique']);
# On boucle sur $nb
for($i = 0; $i < $nb; $i++) {
# Recuperation du nom de la page statique
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['name']
= $values[ $iTags['statique'][$i] ]['value'];
# Recuperation de l'url de la page statique
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['url']
= strtolower($values[ $iTags['statique'][$i] ]['attributes']['url']);
# Recuperation du sous titre de la page statique
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['sstitre']
= strtolower($values[ $iTags['statique'][$i] ]['attributes']['sstitre']);
# Recuperation des mots clés de la page statique
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['motcles']
= strtolower($values[ $iTags['statique'][$i] ]['attributes']['motcles']);
# Recuperation de la description de la page statique
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['description']
= strtolower($values[ $iTags['statique'][$i] ]['attributes']['description']);
# Recuperation de l'etat de la page
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['active']
= intval($values[ $iTags['statique'][$i] ]['attributes']['active']);
# Recuperation de l'etat du menu de la page
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['menu']
= intval($values[ $iTags['statique'][$i] ]['attributes']['menu']);
# On verifie que la page statique existe bien
$file = PLX_ROOT.$this->aConf['racine_statiques'].$values[ $iTags['statique'][$i] ]['attributes']['number'];
$file .= '.'.$values[ $iTags['statique'][$i] ]['attributes']['url'].'.php';
if(is_readable($file)) # Le fichier existe
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['readable'] = 1;
else # Le fichier est illisible
$this->aStats[ $values[ $iTags['statique'][$i] ]['attributes']['number'] ]['readable'] = 0;
}
}
}
fichier /core/admin/statiques.phpvous remplacer tout par :
<?php
/**
* Edition des pages statiques
*
* @package PLX
* @author Stephane F et Florent MONTHEL
**/
include(dirname(__FILE__).'/prepend.php');
# On édite les pages statiques
if(!empty($_POST)) {
$msg = $plxAdmin->editStatiques($_POST);
header('Location: statiques.php?msg='.urlencode($msg));
exit;
}
# On inclut le header
include(dirname(__FILE__).'/top.php');
?>
<h2>Création et édition des pages statiques</h2>
<form action="statiques.php" method="post" id="change-static-file">
<fieldset>
<table class="table">
<tr>
<td><strong>Identifiant</strong> :</td>
<td><strong>Menu</strong> :</td>
<td><strong>Url</strong> :</td>
<td><strong>SS Titre</strong> :</td>
<td><strong>Active</strong> :</td>
<td><strong>Ordre</strong> :</td>
<td> </td>
</tr>
<?php
# Initialisation de l'ordre
$num = 0;
# Si on a des pages statiques
if($plxAdmin->aStats) {
foreach($plxAdmin->aStats as $k=>$v) { # Pour chaque page statique
echo '<tr><td><label>Page '.$k.'</label></td><td>';
plxUtils::printInput($k, plxUtils::strCheck($v['name']), 'text', '25-50');
echo '</td><td>';
plxUtils::printInput($k.'_url', $v['url'], 'text', '15-50');
echo '</td><td>';
plxUtils::printInput($k.'_sstitre', $v['sstitre'], 'text', '25-50');
echo '</td><td>';
plxUtils::printSelect($k.'_active', array('1'=>'Oui','0'=>'Non'), $v['active']);
echo '</td><td>';
plxUtils::printInput($k.'_ordre', ++$num, 'text', '3-3');
echo '</td><td>';
echo '<a href="statique.php?p='.$k.'" title="Editer le code source de cette page">Éditer</a>';
echo '</td></tr>';
echo '<tr><td></td><td style="text-align:center; font-weight:bold">Mot clés :</td><td colspan="3">';
plxUtils::printInput($k.'_motcles', $v['motcles'], 'text', '50-50');
echo '</td><td>Menu</td></tr>';
echo '<tr><td></td><td style="text-align:center; font-weight:bold">Description :</td><td colspan="3">';
plxUtils::printInput($k.'_description', $v['description'], 'text', '50-50');
echo '</td><td>';
plxUtils::printSelect($k.'_menu', array('1'=>'Oui','0'=>'Non'), $v['menu']);
echo '</td></tr>';
echo '<tr><td colspan="7"><br /><br /></td></tr>';
}
# On récupère le dernier identifiant
$a = array_keys($plxAdmin->aStats);
rsort($a);
} else {
$a['0'] = 0;
}
?>
<tr>
<td>Nouvelle page</td><td>
<?php
plxUtils::printInput(str_pad($a['0']+1, 3, '0', STR_PAD_LEFT), '', 'text', '25-50');
echo '</td><td></td><td></td><td>';
plxUtils::printSelect(str_pad($a['0']+1, 3, '0', STR_PAD_LEFT).'_active', array('1'=>'Oui','0'=>'Non'), '1');
echo '</td><td>';
plxUtils::printInput(str_pad($a['0']+1, 3, '0', STR_PAD_LEFT).'_ordre', ++$num, 'text', '3-3');
echo '</td></tr>';
?>
</table>
<p class="center"><input type="submit" value="Modifier les pages statiques" /></p>
</fieldset>
</form>
<div class="help">
<h3>Ajouter une page statique</h3>
<p>Pour créer une nouvelle page statique remplissez la ligne "Nouvelle page" en renseignant :</p>
<ul>
<li>le nom de cette dernière (code html interdit)</li>
<li>l'état actif ou non de la page</li>
</ul>
<p>Le numéro d'ordre est pré-rempli de façon à ajouter la nouvelle page statique à la fin.</p>
<p>Une fois la page crée, vous pouvez mettre en place le code source de la page en cliquant sur le lien "éditer le code source".</p>
<h3>Modifier une page statique</h3>
<p>Il suffit de modifier les différents champs de la page en question puis de cliquer sur le bouton "Modifier les pages statiques".</p>
<p>Vous pouvez modifier le code source de la page en cliquant sur le lien "éditer le code source".</p>
<h3>Supprimer une page statique</h3>
<p>Il suffit de vider le champ qui comporte le nom de la page en question.</p>
<h3>A propos des URLs</h3>
<p>L'utilisation d'urls dites significatives (ex : statique1/contact) nécessite d'avoir un champ renseignant l'URL de chaque page. Ce champ est automatiquement rempli à la création mais ne l'est pas en cas de modification pour garder par défaut une compatibilité des adresses.</p>
</div>
<?php
# On inclut le footer
include(dirname(__FILE__).'/foot.php');
?>
fichier /core/lib/class.plx.admin.phpline 223
vous remplacer par :
/**
* Méthode qui édite le fichier XML des pages statiques selon le tableau $content
*
* @param content tableau multidimensionnel des pages statiques
* @return string
* @author Stephane F. et Florent MONTHEL
**/
function editStatiques($content) {
# Début du fichier XML
$xml = "<?xml version=\"1.0\" encoding=\"".PLX_CHARSET."\"?>\n";
$xml .= "<document>\n";
# On va trier les clés selon l'ordre choisi
foreach($content as $k=>$v) {
if(is_numeric($k))
$array[$k] = $content[$k.'_ordre'];
}
asort($array);
# On va générer l'entrée XML pour chaque page statique
foreach($array as $k=>$v) {
$stat_num = $k;
$stat_name = trim($content[$k]);
if($stat_name != '') {
$stat_sstitre = (isset($content[$k.'_sstitre']))?trim($content[$k.'_sstitre']):'';
$stat_motcles = (isset($content[$k.'_motcles']))?trim($content[$k.'_motcles']):'';
$stat_description = (isset($content[$k.'_description']))?trim($content[$k.'_description']):'';
$stat_url = (isset($content[$k.'_url']))?trim($content[$k.'_url']):'';
$stat_active = intval($content[$k.'_active']);
$stat_menu = intval($content[$k.'_menu']);
if($stat_url != '')
$stat_url = plxUtils::title2url($stat_url);
else
$stat_url = plxUtils::title2url($stat_name);
# URL vide après le passage de la fonction ;)
if($stat_url == '') $stat_url = 'nouvelle-page-statique';
# On va vérifier si on a besoin de renommer la page statique
if(isset($this->aStats[ $stat_num ]) AND $this->aStats[ $stat_num ]['url'] != $stat_url) {
if(file_exists(PLX_ROOT.$this->aConf['racine_statiques'].$stat_num.'.'.$this->aStats[ $stat_num ]['url'].'.php'))
@rename(PLX_ROOT.$this->aConf['racine_statiques'].$stat_num.'.'.$this->aStats[ $stat_num ]['url'].'.php',PLX_ROOT.$this->aConf['racine_statiques'].$stat_num.'.'.$stat_url.'.php');
}
# On génère notre ligne
$xml .= "\t<statique number=\"".$stat_num."\" active=\"".$stat_active."\" menu=\"".$stat_menu."\" url=\"".$stat_url."\" sstitre=\"".$stat_sstitre."\" motcles=\"".$stat_motcles."\" description=\"".$stat_description."\"><![CDATA[".$stat_name."]]></statique>\n";
} else { # On supprime la ligne donc le fichier de la page statique
if(isset($this->aStats[ $stat_num ]) AND file_exists(PLX_ROOT.$this->aConf['racine_statiques'].$stat_num.'.'.$this->aStats[ $stat_num ]['url'].'.php'))
@unlink(PLX_ROOT.$this->aConf['racine_statiques'].$stat_num.'.'.$this->aStats[ $stat_num ]['url'].'.php');
}
}
$xml .= "</document>";
# On écrit le fichier
if(plxUtils::write($xml,PLX_ROOT.$this->aConf['statiques']))
return 'Pages statiques modifiées à '.@date('H:i:s');
else
return 'Erreur dans la modification du fichier '.PLX_ROOT.$this->aConf['statiques'];
}
fichier /core/lib/class.plx.show.phpline 790
vous remplacer par :
/**
* Méthode qui affiche la liste des pages statiques.
* Si la variable $extra est renseignée, un lien vers la
* page d'accueil (nommé $extra) sera mis en place en première position
*
* @param extra nom du lien vers la page d'accueil
* @return stdout
* @author Florent MONTHEL, Stephane F.
**/
function staticList($extra='') {
# Si on a la variable extra, on affiche un lien vers la page d'accueil
if($extra != '') {
$title = plxUtils::strCheck($this->plxMotor->aConf['title']);
if($this->plxMotor->mode == 'home' AND $this->plxMotor->cible == '')
echo '<li id="static-home" class="active"><a class="'.$title.'" href="./" title="'.$title.'">'.$extra.'</a></li>';
else
echo '<li id="static-home"><a class="'.$title.'" href="./" title="'.$title.'">'.$extra.'</a></li>';
}
# On verifie qu'il y a des pages statiques
if($this->plxMotor->aStats) {
foreach($this->plxMotor->aStats as $k=>$v) {
if($v['readable'] == 1 AND $v['active'] == 1 AND $v['menu'] == 1) { # La page existe bien et elle est active
$name = plxUtils::strCheck($v['name']);
$sstitre = $v['sstitre'];
$url = './?static'.intval($k).'/'.$v['url'];
if($this->plxMotor->mode == 'static' AND $this->plxMotor->cible == $k)
echo '<li id="static-'.intval($k).'" class="active"><a class="static-'.intval($k).'" href="'.$url.'" title="'.$name.'">'.$name.'</a></li>';
else
echo '<li id="static-'.intval($k).'"><a class="static-'.intval($k).'" href="'.$url.'" title="'.$name.'">'.$name.'</a></li>';
}
} # Fin du while
}
}
/**
* Méthode qui affiche le soustitre des pages static
*
* @return stdout
* @author Anthony GUÉRIN et Florent MONTHEL
**/
function pageSousTitle() {
if($this->plxMotor->mode == 'static') {
echo plxUtils::strCheck($this->plxMotor->aStats[ $this->plxMotor->cible ]['sstitre']);
return;
}
}
/**
* Méthode qui affiche les META mot cles des pages static
*
* @return stdout
* @author Anthony GUÉRIN et Florent MONTHEL
**/
function metaMotcleStatic() {
if($this->plxMotor->mode == 'static') {
echo plxUtils::strCheck($this->plxMotor->aStats[ $this->plxMotor->cible ]['motcles']);
return;
}
}
/**
* Méthode qui affiche le META description des pages static
*
* @return stdout
* @author Anthony GUÉRIN et Florent MONTHEL
**/
function metaDescriptionStatic() {
if($this->plxMotor->mode == 'static') {
echo plxUtils::strCheck($this->plxMotor->aStats[ $this->plxMotor->cible ]['description']);
return;
}
}
Je pense ne rien avoir oublié.Ah si, pour afficher les META il faut mettre
<meta name="description" content="<?php $plxShow->metaDescriptionStatic(); ?>" />
<meta name="keywords" content="<?php $plxShow->metaMotcleStatic(); ?>" />
dans header.php Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce qui serais bien ca serais aussi de pouvoir inclure des fichiers php dans les pages statiques dédié au dossier du thème.
Exemple pour la page contact, on pourrais l'afficher sur plusieurs styles différents ayant chacun leur propre class et mise en page donc.
Édite: Comment et ou s'affiche les Sous-Titres stp ?
Ai-je répondu à ton questionnement ?
Si on prends exemple de la page contact fournie dans le Wiki, celle ci est à intégrer dans une page statique avec tout le code php. Le problème et que si on a un sélecteur de style la mise en page seras identique pour tout les thèmes.
Je pense qu'il serais bien d'avoir le choix entre insérer le code php de la page statique ou utiliser le fichier php (personnalisé) qui auras le même nom que le titre de la page ou faire un simple includes (impossible actuellement) de ce fichier contact.php qui se trouverais dans le dossier du theme.
En gros cela permettrais différent affichage de cette page suivant le thème.
Je c'est pas si c'est bien clair ^^
Et voici par screen le problème d'une page statique unique pour tout les thèmes (ici 2)
Je vais regarder de mon coté pour ton histoire de style sur le formulaire de contact. en fait, tu voudrais que les champs du formulaire soient stylés c'est ça ? Pas que la page, mais le fond des champs, le bouton etc... en fait pour cela il faut récupérer l' ID du style actuel et le passer en class="monstyleactuel" dans la div qui contient le formulaire. Après quoi tu peux styler en CSS chaque formulaire en fonction du style.
Affaire à suivre.
Si on peux faire ça avec l'id du thème oui ca serais encore mieux, cela éviteras de charger pluxml de page inutile.
Là j'ai pris exemple pour la page contact, mais ca peux être n'importe quelle page
dans class.plx.show.php tu ajoutes à la fin, avant la dernière "}"
ensuite dans la page header.php de tous tes thèmes tu modifies <body> par
ensuite il ne te reste qu'à styler tes formulaires.
voila.
Pour éviter de modifier la classe plxShow tu peux directement utiliser l'instruction suivante à la place de définir une nouvelle fonction leStyle()
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
page blanche systematique
quequ'un a une solution pour les meta description ?