extension HTML pour les pages statiques générées par un Plugin ?
Bonjour, j'ai (encore) une question bête mais je vais essayer de faire court !
Les plugins MyContact et MySiteMap, me génère des pages comme "https://monsiteweb.com/contact" ou "https://monsiteweb.com/sitemap", et c'est bien mais... j'aimerais que ces pages soient reconnues et indexées ainsi : "https://monsiteweb.com/contact.html" et "https://monsiteweb.com/sitemap.html". alors question : comment faire ?
0
Connectez-vous ou Inscrivez-vous pour répondre.

Réponses
Bonsoir,
Il te faudrait ajouter cette extension en dur à toutes les parties du code du plugin qui génére et traite l'url de la page "front" de ton plugin.
Par exemple, pour le plugin plxMysearch, l'ajout de l'extension serait à faire sur les fonctions et lignes suivantes :
la class patché devient :
<?php /** * Plugin plxMySearch * @author Stephane F **/ class plxMySearch extends plxPlugin { private $url = ''; # parametre de l'url pour accèder à la page de recherche public $lang = ''; /** * Constructeur de la classe * * @param default_lang langue par défaut * @return stdio * @author Stephane F **/ public function __construct($default_lang) { # gestion du multilingue plxMyMultiLingue //if(preg_match('/([a-z]{2})\/(.*)/i', plxUtils::getGets(), $capture)) { // $this->lang = $capture[1].'/'; //} # gestion du multilingue plxMyMultiLingue $this->lang=''; if(defined('PLX_MYMULTILINGUE')) { $lang = plxMyMultiLingue::_Lang(); if(!empty($lang)) { if(isset($_SESSION['default_lang']) AND $_SESSION['default_lang']!=$lang) { $this->lang = $lang.'/'; } } } # appel du constructeur de la classe plxPlugin (obligatoire) parent::__construct($default_lang); $this->url = $this->getParam('url')=='' ? 'search' : $this->getParam('url'); # droits pour accèder à la page config.php du plugin $this->setConfigProfil(PROFIL_ADMIN); # droites pour accèder à la page admin.php du plugin if($this->getParam('savesearch')) $this->setAdminProfil(PROFIL_ADMIN); # déclaration des hooks $this->addHook('AdminTopEndHead', 'AdminTopEndHead'); $this->addHook('AdminTopBottom', 'AdminTopBottom'); $this->addHook('plxAdminHtaccess', 'plxAdminHtaccess'); # Si le fichier de langue existe on peut mettre en place la partie visiteur if(file_exists(PLX_PLUGINS.$this->plug['name'].'/lang/'.$default_lang.'.php')) { $this->addHook('plxShowConstruct', 'plxShowConstruct'); $this->addHook('plxMotorPreChauffageBegin', 'plxMotorPreChauffageBegin'); $this->addHook('plxShowStaticListEnd', 'plxShowStaticListEnd'); $this->addHook('plxShowPageTitle', 'plxShowPageTitle'); $this->addHook('SitemapStatics', 'SitemapStatics'); $this->addHook('MySearchForm', 'form'); if(defined('PLX_MYMULTILINGUE')) { $this->addHook('ThemeEndHead', 'ThemeEndHead'); } } } /** * Méthode qui mets à jour le fichier .htaccess du site pour prendre en charge $_GET dans le traitement du formulaire * * @return stdio * @author Stephane F **/ public function plxAdminHtaccess() { echo '<?php $htaccess = str_replace("[L]", "[QSA,L]", $htaccess); ?>'; } /** * Méthode qui charge le code css nécessaire à la gestion de onglet dans l'écran de configuration du plugin * * @return stdio * @author Stephane F **/ public function AdminTopEndHead() { if(basename($_SERVER['SCRIPT_NAME'])=='parametres_plugin.php') { echo '<link href="'.PLX_PLUGINS.$this->plug['name'].'/tabs/style.css" rel="stylesheet" type="text/css" />'."\n"; } } /** * Méthode qui affiche un message si le plugin n'a pas la langue du site dans sa traduction * * @return stdio * @author Stephane F **/ public function AdminTopBottom() { echo '<?php $file = PLX_PLUGINS."'.$this->plug['name'].'/lang/".$plxAdmin->aConf["default_lang"].".php"; if(!file_exists($file)) { echo "<p class=\"warning\">Plugin MySearch<br />".sprintf("'.$this->getLang('L_LANG_UNAVAILABLE').'", $file)."</p>"; plxMsg::Display(); } ?>'; } /** * Méthode de traitement du hook plxShowConstruct * * @return stdio * @author Stephane F **/ public function plxShowConstruct() { # infos sur la page statique $string = "if(\$this->plxMotor->mode=='".$this->url.".html') {"; $string .= " \$array = array();"; $string .= " \$array[\$this->plxMotor->cible] = array( 'name' => '".$this->getParam('mnuName_'.$this->default_lang)."', 'menu' => '', 'url' => 'search', 'readable' => 1, 'active' => 1, 'group' => '' );"; $string .= " \$this->plxMotor->aStats = array_merge(\$this->plxMotor->aStats, \$array);"; $string .= "}"; echo "<?php ".$string." ?>"; } /** * Méthode de traitement du hook plxMotorPreChauffageBegin * * @return stdio * @author Stephane F **/ public function plxMotorPreChauffageBegin() { $template = $this->getParam('template')==''?'static.php':$this->getParam('template'); $string = " if(\$this->get && preg_match('/^".$this->url.".html\/?/',\$this->get)) { \$this->mode = '".$this->url.".html'; \$prefix = str_repeat('../', substr_count(trim(PLX_ROOT.\$this->aConf['racine_statiques'], '/'), '/')); \$this->cible = \$prefix.\$this->aConf['racine_plugins'].'plxMySearch/form'; \$this->template = '".$template."'; return true; } "; echo "<?php ".$string." ?>"; } /** * Méthode de traitement du hook plxShowStaticListEnd * * @return stdio * @author Stephane F **/ public function plxShowStaticListEnd() { # ajout du menu pour accèder à la page de recherche if($this->getParam('mnuDisplay')) { echo "<?php \$status = \$this->plxMotor->mode=='".$this->url.".html'?'active':'noactive'; ?>"; echo "<?php array_splice(\$menus, ".($this->getParam('mnuPos')-1).", 0, '<li class=\"static menu '.\$status.'\" id=\"static-search\"><a href=\"'.\$this->plxMotor->urlRewrite('?".$this->lang.$this->url.".html').'\" title=\"".$this->getParam('mnuName_'.$this->default_lang)."\">".$this->getParam('mnuName_'.$this->default_lang)."</a></li>'); ?>"; } } /** * Méthode qui renseigne le titre de la page dans la balise html <title> * * @return stdio * @author Stephane F **/ public function plxShowPageTitle() { echo '<?php if($this->plxMotor->mode == "'.$this->url.'.html") { $this->plxMotor->plxPlugins->aPlugins["plxMySearch"]->lang("L_PAGE_TITLE"); return true; } ?>'; } /** * Méthode qui référence la page de recherche dans le sitemap * * @return stdio * @author Stephane F **/ public function SitemapStatics() { echo '<?php echo "\n"; echo "\t<url>\n"; echo "\t\t<loc>".$plxMotor->urlRewrite("?'.$this->lang.$this->url.'.html")."</loc>\n"; echo "\t\t<changefreq>monthly</changefreq>\n"; echo "\t\t<priority>0.8</priority>\n"; echo "\t</url>\n"; ?>'; } /** * Méthode statique qui affiche le formulaire de recherche * * @parm title affiche le titre du formulaire si vrai * @return stdio * @author Stephane F **/ public static function form($title=false) { $placeholder = ''; # récupération d'une instance de plxMotor $plxMotor = plxMotor::getInstance(); $plxPlugin = $plxMotor->plxPlugins->getInstance('plxMySearch'); $searchword = ''; $method = $plxPlugin->getParam('method') == 'get' ? $_GET : $_POST; $frmMethod = $plxPlugin->getParam('method') == 'get' ? 'get' : 'post'; if(!empty($method['searchfield'])) { $searchword = plxUtils::strCheck(plxUtils::unSlash($method['searchfield'])); } if($plxPlugin->getParam('placeholder_'.$plxPlugin->default_lang)!='') { $placeholder=' placeholder="'.$plxPlugin->getParam('placeholder_'.$plxPlugin->default_lang).'"'; } ?> <div class="searchform"> <form action="<?php echo $plxMotor->urlRewrite('?'.$plxPlugin->lang.$plxPlugin->getParam('url').'.html') ?>" method="<?php echo $frmMethod ?>"> <?php if($title) : ?> <h3 class="searchtitle"> <?php if($plxPlugin->getParam('checkboxes_'.$plxPlugin->default_lang)=='') $plxPlugin->lang('L_FORM_SEARCHFIELD'); else $plxPlugin->lang('L_FORM_SEARCHFIELD_2'); ?> : </h3> <?php endif; ?> <div class="searchfields"> <?php if($plxPlugin->getParam('checkboxes_'.$plxPlugin->default_lang)!='') { if($chk = explode(';', $plxPlugin->getParam('checkboxes_'.$plxPlugin->default_lang))) { echo '<ul>'; foreach($chk as $k => $v) { $c = plxUtils::title2url(trim($v)); $sel = ""; if(isset($method['searchcheckboxes'])) { foreach($method['searchcheckboxes'] as $s) { if($s==$c) { $sel = ' checked="checked"'; } } } echo '<li><input'.$sel.' class="searchcheckboxes" type="checkbox" name="searchcheckboxes[]" id="id_searchcheckboxes[]" value="'.$c.'" /> '.plxUtils::strCheck($v).'</li>'; } echo '</ul>'; } } ?> <p> <input type="text"<?php echo $placeholder ?> class="searchfield" name="searchfield" value="<?php echo $searchword ?>" /> <input type="submit" class="searchbutton" value="<?php echo $plxPlugin->getParam('frmLibButton_'.$plxPlugin->default_lang) ?>" /> </p> </div> </form> </div> <?php } /** * * Méthode d'ajout des <link rel="alternate"... sur les pages des plugins qui gèrent le multilingue * * @return stdio * @author WorldBot * **/ public function ThemeEndHead() { if(defined('PLX_MYMULTILINGUE')) { $plxMML = is_array(PLX_MYMULTILINGUE) ? PLX_MYMULTILINGUE : unserialize(PLX_MYMULTILINGUE); $langues = empty($plxMML['langs']) ? array() : explode(',', $plxMML['langs']); $string = ''; foreach($langues as $k=>$v) { $url_lang=""; if($_SESSION['default_lang'] != $v) $url_lang = $v.'/'; $string .= 'echo "\t<link rel=\"alternate\" hreflang=\"'.$v.'\" href=\"".$plxMotor->urlRewrite("?'.$url_lang.$this->getParam('url').'")."\" />\n";'; } echo '<?php if($plxMotor->mode=="'.$this->getParam('url').'") { '.$string.'} ?>'; } } } ?>La methode qui insere les pages "front" des plugins en les faisant squattées le tableau des statiques est la même pour chaque plugins, il te suffit de repeter/modifier l'url produite par le plugin dans chacunes de ces fonctions.
Note, que c'est un paramètre qui pourrait être ajouté via la page de configuration de façon à être plus permissive et surtout , optionnelle
Cdt
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Merci.... c'est Cool, Joli travail ! ...j'ai retrouvé toutes les correspondances que tu donnes pour le plugin plxMysearch !
Ensuite j'ai voulu essayer avec MySiteMap, mais par contre ce ne sont pas les mêmes références...
on trouve le mot "sitemap" à 17 reprises mais mes modifs pas à pas en "sitemap.html" font tout planter !
Après coup, il me semble avoir déceler un "url rewriting" dans le code... et dans le navigateur si on ajoute l'extension ".html" la page s'affiche très bien (le coup de bol)
Donc "monsite.com/sitemap" ou "monsite.com/sitemap.html", c'est pareil.
à suivre...
Petit retour... en fait, j'ai créé ce sujet un peu trop vite (la fatigue certainement)
l'url rewrtting je suppose, fait que... pour les pages "/contact" et "/search", si je rajoute l'extension ".html" et que je la soumet à google, pas de soucis c'est pris en compte !
Le seul soucis c'est avec le plugin MySiteMap (/sitemap.html) que google ne veut pas, car il a déjà référencé /sitemap.php
C'est con, j'aurais aimé changer "/sitemap" en "plan-du-site.html" tout simplement mais je ne trouve pas de solution
@NonoM Il me semble que tu peut soumettre un nouveau sitemap (autre URI) et mettre dans le htaccess une redirection permanente de l'ancien vers le nouveau. après il faut être patient ....
j'ai vu passer des URLS de ma première version de site encore plus de 10 ans après qu'elle n'existaient plus et avec une période de quelques années ou le domaine aussi n'existait plus
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Salut @gcyrillus-nomade , bon... à force de fouiller, j'ai résolu le problème... j'ai tout simplement dégagé le plugin MySiteMap !
car pour créer un Plan de Site qui soit bien référencé en tant que page, il y a plus pratique :
Créer une page statique avec le code qui va bien !!!
https://dev.yom.li/blog/pluxml-faire-un-plan-de-site
@NonoM
Quelle version de Pluxml utilises tu ? car tu as déjà le fichier sitemap.php à la racine qui fonctionne bien ?
par exemple http://gcyrillus.free.fr/new/sitemap.php version 5.8.7 de pluxml ou bien il ne convient pas ?
Notes que si tu n'utilises pas ce fichier pour ton sitemap, l'onglet sitemap du plugin extra_SEO n'aura aucun effet si tu veut filtré quelquechose.
edit, le code que tu site peut-etre réecrit sans le
global $plxShow;Pages statiques
<?php $this->staticList('Accueil','- #static_name
'); ?>
Catégories
<?php $this->catList('','- #cat_name
'); ?>
Articles
<?php $plx_arts = array(); $plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$this->plxMotor->aConf['racine_articles']); $aFiles = $plxGlob_arts->query('/[0-9]{4}.[home|0-9,]*'.$catList.'[0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort',0,false,'before'); $aCatList = explode('|', $catList); if(is_array($aFiles)) { # On a des fichiers while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers $temp = $this->plxMotor->parseArticle(PLX_ROOT.$this->plxMotor->aConf['racine_articles'].$v); $cats = explode(',', $temp['categorie']); foreach($cats as $cat) { if($catList=='' OR in_array($cat, $aCatList)) { if(!isset($plx_arts[$cat])) $plx_arts[$cat][] = $temp; elseif(intval(sizeof($plx_arts[$cat])) < $artsByCategory OR $artsByCategory == 0) $plx_arts[$cat][] = $temp; } } } if($plx_arts) { # On a des articles # tri en fonction de l'ordre d'affiche des catégories uksort($plx_arts, create_function('$a, $b', ' return strcmp(array_search($a, array_keys($this->plxMotor->aCats)), array_search($b, array_keys($this->plxMotor->aCats)));')); # On boucle sur nos articles foreach ($plx_arts as $k => $v) { $cat_num = $k; # on trie en fonction de l'ordre d'affichage des articles dans la catégorie if($cat_num=='home') { if ($this->plxMotor->aConf['tri']=='asc') usort($v, create_function('$a, $b', 'return strcmp($a["date"], $b["date"]);')); else usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);')); echo 'plxMotor->aConf['racine'].'">Accueil
'; } elseif(!isset($this->plxMotor->aCats[$cat_num])) { if ($this->plxMotor->aConf['tri']=='asc') usort($v, create_function('$a, $b', 'return strcmp($a["date"], $b["date"]);')); else usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);')); echo 'Non classé
'; } else { if ($this->plxMotor->aCats[$cat_num]['tri'] == 'asc') usort($v, create_function('$a, $b', 'return strcmp($a["date"], $b["date"]);')); else usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);')); $cat_name = plxUtils::strCheck($this->plxMotor->aCats[ $cat_num ]['name']); $cat_url = $this->plxMotor->aCats[ $cat_num ]['url']; echo ''; } echo "".$cat_name."
"; # On boucle sur les articles de la categories while(list($null, $art) = each($v)) { $art_num = intval($art['numero']); $art_url = plxUtils::strCheck(($art['url'])); $art_title = plxUtils::strCheck(($art['title'])); $art_date = plxDate::formatDate($art['date'], $format_date); echo '- '.$art_date.' : plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title.'
';
}
echo "
"; } } } ?> ```Mais cela fait un plan de site, pas un sitemap utile à google ? ou bien j'ai compris de travers en court de route ?
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
@gcyrillus-nomade , Oui j'ai bien déjà le fichier sitemap.php qui a été soumis à google, pas de soucis...
le truc, c'est qu'en suivant un de tes liens qui parle de ce foutu google alerte (qui me prend bien la tête au passage), il est dit quelque part que les liens "internes" sont importants, alors j'ai voulu créer un plan de site (sitemap) avec les liens de tous les articles mais je ne suis sur de rien... ni de l'impact que cela peut donner dans les alertes de google.
edit : Merci pour la correction du code !!! ;-)
edit N°2 : malheureusement, sans le global $plxShow; c'est cassé... on obtient une page blanche...
pas grave, je reviens au code d'origine ! ;-)