<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>pages statiques — Forum de PluXml</title>
        <link>https://forum.pluxml.org/index.php?p=/</link>
        <pubDate>Mon, 18 May 2026 18:41:34 +0000</pubDate>
        <language>fr</language>
            <description>pages statiques — Forum de PluXml</description>
    <atom:link href="https://forum.pluxml.org/index.php?p=/discussions/tagged/pages-statiques/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Image d'accroche pour les pages statiques</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7862/image-daccroche-pour-les-pages-statiques</link>
        <pubDate>Tue, 15 Jul 2025 20:04:10 +0000</pubDate>
        <category>Discussions générales</category>
        <dc:creator>kroc</dc:creator>
        <guid isPermaLink="false">7862@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hello ! <br />
Je me demandais s'il existait un plugin pour permettre l'ajout d'une image d'accroche aux pages statiques, au même titre que pour les catégories.<br />
Ceci principalement pour l'intégrer aux balises Opengraph de partage (réseaux sociaux, messagerie, référencement etc.)</p>

<p>Merci !</p>
]]>
        </description>
    </item>
    <item>
        <title>[RESOLU] MAJ vers 5.8 pb &quot;accès interdit&quot; sur menu admin &quot;Pages &quot;statiques&quot;</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7717/resolu-maj-vers-5-8-pb-acces-interdit-sur-menu-admin-pages-statiques</link>
        <pubDate>Tue, 10 Sep 2024 11:53:56 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>ticanis</dc:creator>
        <guid isPermaLink="false">7717@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour,<br />
J'ai fait une maj vers version 5.8.16<br />
J'ai tout repassé en droit d'accès 0755.<br />
En admin je ne peux pas accéder à "Pages statiques", "Commentaires", "Catégories", alors que j'ai accès à "Articles", "Média" et "Profil" ???<br />
Quelqu'un a une piste de solution ??<br />
Merci</p>
]]>
        </description>
    </item>
    <item>
        <title>[plugin] module de commentaire pour pages statiques</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7602/plugin-module-de-commentaire-pour-pages-statiques</link>
        <pubDate>Mon, 05 Feb 2024 18:08:33 +0000</pubDate>
        <category>Plugins</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7602@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Le script initialement à inserer dans une page statique s'est glissé dans un plugin pour faciliter son usage aux moins codeurs d'entre nous: <a href="https://ressources.pluxopolis.net/banque-plugins/plugins/StaticComments.2.0.1.zip" rel="nofollow">https://ressources.pluxopolis.net/banque-plugins/plugins/StaticComments.2.0.1.zip</a></p>

<p>Ajoute aux pages statiques <strong>choisies</strong> le formulaire de commentaire<br />
Options:</p>

<ul>
<li>Affiche le captcha natif de PluXml.</li>
<li>formulaire désactivable pour ne garder que les commentaires.</li>
</ul>

<p>Caractéristiques:</p>

<ul>
<li>Formulaire injecté via javascript.</li>
<li>Inclus les pages générées par les plugins en se basant sur leur valeur "url" de leur configuration.</li>
<li>commentaires enregistrés au format json avec indentation, stockés aux cotés des pages statiques</li>
<li>Modération des commentaires par lot coté visiteur.</li>
<li>Pagination des commentaires</li>
<li>PHP&gt;=8.3.0 et plxMyBetterUrl</li>
</ul>

<p>script du sujet <a href="https://forum.pluxml.org/discussion/7487/page-statique-avec-commentaire" rel="nofollow">https://forum.pluxml.org/discussion/7487/page-statique-avec-commentaire</a></p>
]]>
        </description>
    </item>
    <item>
        <title>[resolu]plugins avec page en front ne fonctionnent plus - affichent une 404 .[FIXED]</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7619/resolu-plugins-avec-page-en-front-ne-fonctionnent-plus-affichent-une-404-fixed</link>
        <pubDate>Mon, 11 Mar 2024 13:44:21 +0000</pubDate>
        <category>Version en cours de développement</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7619@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour, <br />
tous les plugins insérant une page statique en front-end sont devenus inutilisables.<br />
PluXml les ignores totalement et renvoi une page 404 avec le message "Page non trouvée".<br />
voir <a href="https://github.com/pluxml/PluXml/pull/794" rel="nofollow">https://github.com/pluxml/PluXml/pull/794</a></p>

<p></p><details><summary>  ▼ Details obsolétes</summary><br />
Pour que les plugins affichent une page en front, ceux-ci créent un nouveau mode et une url du même nom .<br />
Tous basé sur un mode de fonctionnement mis en place à l'occasion de la sortie du plugin PlxMySearch (sauf erreur , il me semble que c'etait le tout premier plugin de Pluxml avec PlxMyContact) . L'url et le mode est extrait du paramètre 'url' de ces plugins.

<p>[FIX] pour la rc6 en dev actuelle (04-Mars-2024 -&gt; ?)<br />
Tous se passe dans la class plxMotor . Fichier  : core/lib/class.plx.motor.php</p>

<ol>
<li><p>ajouter une variable dans la class plxMotor prêtes à recevoir dans un tableau les valeurs des plugins ayant un parametre url.<br />
<code>public $modes = array(); # pages statiques des plugins</code></p></li>
<li><p>Dans la fonction  <code>protected function __construct($filename)</code> , aprés la ligne : <code>$this-&gt;plxPlugins-&gt;loadPlugins();</code> Ajouter le code suivant:</p></li>
</ol>

<pre><code>        # Recuperation des pages static des plugins
        foreach($this-&gt;plxPlugins-&gt;aPlugins as $class =&gt; $val) {
            $myclass=$class;
            $myPlug = new $myclass($this-&gt;aConf['default_lang']);
            $plugStatic = $myPlug-&gt;getParam('url');         
            $this-&gt;modes[]=$plugStatic;
        }
</code></pre>

<p>Ce code va stocké dans un tableau toutes les éventuelles occurrences de pages générées par un plugin (elles s'ajoutent à liste des pages statiques).<br />
3. dans la fonction <code>public function demarrage() {</code> ,  en fin de fonction et juste devant la partie de code :</p>

<pre><code>            default :
                $this-&gt;error404(L_ERR_PAGE_NOT_FOUND);
</code></pre>

<p>Ajouter le code suivant pour que les pages statiques des plugins s'affichent normalement si l'url demandée correspond à celle d'une des pages d'un plugin:</p>

<pre><code>            case (count($this-&gt;modes)&gt;0):
                if(in_array($this-&gt;mode,$this-&gt;modes)) 
                break;  
</code></pre>

<p>C'est tout, vos plugins sont à nouveaux utilisables en front.<br />
</p></details>
]]>
        </description>
    </item>
    <item>
        <title>[résolu] fonction staticInclude() semble devenue muette depuis la v  5.8.9</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7320/resolu-fonction-staticinclude-semble-devenue-muette-depuis-la-v-5-8-9</link>
        <pubDate>Wed, 14 Dec 2022 14:24:46 +0000</pubDate>
        <category>Bogues</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7320@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>En bricolant les thèmes, je viens de m'apercevoir que la fonction <code>staticInclude(x);</code> ne renvoie plus rien depuis la version 5.8.9 de PluXml.</p>

<p>tests effectués au travers d'une énième page statique avec le code suivant:</p>

<pre><code>&lt;?php
$plxShow = plxShow::getInstance();
$plxShow-&gt;staticInclude(1);
?&gt;
</code></pre>

<p>test effectué avec php7+ et php 8+ (apache/win)<br />
test okay dans v 5.8.7 et  v 5.8.8<br />
test muet dans v 5.8.9 et v 5.8.10</p>

<p>En regardant de plus prés la fonction, la seule difference se trouve sur une ligne .</p>

<p>depuis la v 5.8.9 qui n'affiche plus rien:</p>

<pre><code>        $plxGlob_stats = plxGlob::getInstance(PLX_ROOT . $this-&gt;plxMotor-&gt;aConf['racine_statiques'], true, 'statiques');
</code></pre>

<p>et antérieur à la v 5.8.9, qui affiche bien la page inclue et interprétée.</p>

<pre><code>        $plxGlob_stats = plxGlob::getInstance(PLX_ROOT . $this-&gt;plxMotor-&gt;aConf['racine_statiques']);
</code></pre>

<p>Cdt</p>
]]>
        </description>
    </item>
    <item>
        <title>[V4-Statiques] albums photos avec légendes textes</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/1153/v4-statiques-albums-photos-avec-legendes-textes</link>
        <pubDate>Mon, 06 Apr 2009 23:00:36 +0000</pubDate>
        <category>Modifications</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">1153@/index.php?p=/discussions</guid>
        <description><![CDATA[Bonjour,<br />
<br />
je suis en train de développé un petit album photo (en reprenant en partie un truc que j'avais fait pour la V3) .<br />
<br />
Toujours en manque de temps , je dépose ici une premiere version , administrable après que vous soyez logué dans l'administration .<br />
Caractéristiques :<br />
Création ou suppressions d'un ou plusieurs albums.<br />
upload et suppresions d'images<br />
descriptif/legende de l'image , html possible.<br />
test existence du repertoire Album , si non le crée avec un premier album vide .<br />
<br />
En regardant d'un peu plus prés le code , vous verrez qu'il vous est possible assez facilement de modifier le template d'affichage de l'image , ou des liens vers les Albums (template gerer par un switch ...)
<pre><code>&lt;?php
/**
 * page statique de gestion d'albums photos
 *
 * @package PLX =&gt; page statique : fonctions : création , suppession d'album d'images
 * @author	Gcyrillus , gestion d'uploads et des noms de repertoires/fichiers sur  la base de Pluxml de florent monthel
 **/

// Creation des repertoires de travail si absent 
 			$old= umask();
			umask(0); 			
			if (@mkdir('data/images/Album/',0755)) {
					mkdir('data/images/Album/Album-1',0755);
					}
			umask($old);
// fin test existence repertoire Album 
	include_once(PLX_CORE.'lib/class.plx.admin.php');
	
// reconstruction de l'url d'entrée (pour retour liste cat et formulaire
$geturl = explode(&quot;?&quot;, $_SERVER['REQUEST_URI']);
$redourl='';
for($i=1;$i &lt; count($geturl);$i++) {
$redourl .=$geturl[$i];
        }
$topurl = explode(&quot;&amp;&quot;, $redourl);	
$finalurl = $topurl[0];	

// reconstruction url pour album
$albLink=explode(&quot;&amp;&quot;, $_SERVER['REQUEST_URI']);
$albums=$alblink[0];

// admin inactif par defaut 

										


if (!empty($_POST)) {
	plxUtils::unSlash($_POST);
}
if (!empty($_GET)) {
	plxUtils::unSlash($_GET);
}	

// test si logger en administrateur 
# On démarre la session
session_start();

# Creation de l'objet principal et premier traitement
$plxAdmin = &amp; new plxAdmin(PLX_CONF);
$pwd = $plxAdmin-&gt;getPasswd(PLX_ROOT.$plxAdmin-&gt;aConf['passwords']);

# Test sur l'identification
if (@!$auth_page AND (empty($_SESSION['admin']) OR empty($pwd[ $_SESSION['author'] ]) OR $pwd[ $_SESSION['author'] ] !== $_SESSION['pass'])) {$mode_admin='InActif';}
else {
$mode_admin='Actif';
// form du choix d'edition 
echo '&lt;div id=&quot;admin&quot;&gt;
	&lt;h1&gt;MODE ADMINISTRATEUR&lt;/h1&gt;
	&lt;p&gt;&lt;i&gt;(supression d\'album vide uniquement possible.)&lt;/i&gt;&lt;/p&gt;

';
////////////////////////////////////


# Variables pour le redimensionnement
$width = 200;
$height = 100;
$quality = 80;
if (isset($_GET['galerie'])) {
$album= preg_replace('/[\.\%\&amp;\&quot;\s\'\:\/\[\],_|#*$£=`\+]+/',' ',$_GET['galerie']);
}
# Récupération des images du dossier
$dirImg = 'data/images/Album/'.$album.'/';

$plxImg = &amp; new plxGlob($dirImg);

$aImg = $plxImg-&gt;query('/(.+).(gif|jpg|jpeg|png|swf|swc|psd|tiff|bmp|iff|jp2|jpx|jb2|jpc|xbm|wbmp)$/i');
# Suppression d'une image
if(isset($_GET['del']) AND !empty($_GET['hash']) AND $_GET['hash'] == $_SESSION['hash'] AND isset($aImg[ $_GET['del'] ]) AND file_exists($dirImg.$aImg[ $_GET['del'] ])) {
	# On supprime l'image et sa miniature
	if(!@unlink($dirImg.$aImg[ $_GET['del'] ])) # Erreur de suppression
		$msg = 'Impossible de supprimer l\'image (problème d\'écriture dans le dossier '.$dirImg.')';
	else # Ok
		$msg = 'Image supprimée à '.date('H:m:s');
	@unlink($dirImg.$aImg[ $_GET['del'] ].'.tb');
		@unlink($dirImg.$aImg[ $_GET['del'] ].'.txt');
		if(!isset($_GET['oki'])) {
	header('Location:'.$_SERVER['REQUEST_URI'].'&amp;msg='.urlencode($msg).'&amp;oki=duck');
	exit;
}
}

#MISE AJOUR D'UNE DESCRIPTION


if(isset($_GET['txt']))
			{
			$id=$_GET['txt'];
			$fichier_legend=$dirImg.$id.'.txt';
			$poster=explode('.',$id);
			$postlegend ='desc'.$poster[0];
			$f_legende=stripslashes($_POST[$postlegend]);
				$flegende=fopen(&quot;$fichier_legend&quot;,&quot;w+&quot;);
				fputs($flegende,$f_legende); 
				fclose($flegende);
				$msg .= '&lt;br /&gt;Descriptif mis a jour';
		if(!isset($_GET['oki'])) {
	header('Location:'.$_SERVER['REQUEST_URI'].'&amp;msg='.urlencode($msg).'&amp;oki=duck');
	exit;
				}
				}

				
# Envoi d'une image
if(!empty($_FILES) AND !empty($_FILES['img']['name'])) {
	# On teste l'existence de l'image et on formate le nom du fichier
	$i = 0;
	$upFile = $dirImg.plxUtils::title2filename(plxUtils::unSlash(basename($_FILES['img']['name'])));
	while(file_exists($upFile)) {
		$upFile = $dirImg.$i.plxUtils::title2filename(plxUtils::unSlash(basename($_FILES['img']['name'])));
		$i++;
	}
	if(getimagesize($_FILES['img']['tmp_name'])) { # C'est une image
		if(!@move_uploaded_file($_FILES['img']['tmp_name'],$upFile)) { # Erreur de copie
			$msg = 'Impossible d\'envoyer l\'image (problème d\'écriture dans le dossier '.$dirImg.')';
		} else { # Ok
			@plxUtils::makeThumb($upFile, $upFile.'.tb',$width,$height,$quality);
			$msg = 'Image envoyée à '.date('H:m:s');
						if(!empty($_POST['descriptif'])){
							$fichier_legend =$upFile.&quot;.txt&quot;;
							$f_legende=fopen(&quot;$fichier_legend&quot;,&quot;w+&quot;);
							fputs($f_legende,stripslashes($_POST['descriptif'])); 
							fclose($f_legende);
							$msg .= ' et descriptif enregistré';
						}
		}
	} else { # Ce n'est pas une image
		$msg = 'Le fichier n\'est pas une image';
	}
		header('Location:'.$_SERVER['REQUEST_URI'].'&amp;msg='.urlencode($msg));
	exit;

}

/////////////////////////////////
?&gt;
&lt;?php
if (!$album =='') { ?&gt;
&lt;h2&gt;Uploader et gérer les images pour : &lt;?php echo $album ; ?&gt;&lt;/h2&gt;
	&lt;p&gt;&lt;?php (!empty($_GET['msg']))?plxUtils::showMsg(plxUtils::unSlash(urldecode(trim($_GET['msg'])))):''; ?&gt;&lt;/p&gt;
	&lt;?php if(!empty($_GET['img']) AND file_exists($dirImg.plxUtils::unSlash(rawurldecode($_GET['img'])))) { # Image particulière ?&gt;

		&lt;img src=&quot;&lt;?php echo $dirImg.plxUtils::unSlash(rawurldecode($_GET['img'])); ?&gt;&quot; alt=&quot;&quot; /&gt;
	&lt;?php } else { # Galerie ?&gt;
		&lt;form enctype=&quot;multipart/form-data&quot; action=&quot;&quot; method=&quot;post&quot;&gt;
			&lt;fieldset class=&quot;withlabel&quot;&gt;
				&lt;legend&gt;Upload d'images&lt;/legend&gt;
				&lt;p&gt;&lt;input name=&quot;img&quot; type=&quot;file&quot; /&gt;&lt;/p&gt;
				&lt;p&gt;&lt;label for=&quot;descriptif&quot;&gt;Légende de l'image&lt;/label&gt;
				&lt;textarea name=&quot;descriptif&quot; id=&quot;descriptif&quot; /&gt;Descrition de l'image ...&lt;/textarea&gt;&lt;/p&gt;
				&lt;input type=&quot;submit&quot; value=&quot;envoyer&quot; /&gt;&lt;/p&gt;
			&lt;/fieldset&gt;
		&lt;/form&gt;
		&lt;h2&gt;Album editable : &lt;big&gt;&lt;?php echo $album; ?&gt;&lt;/big&gt;&lt;/h2&gt;
		&lt;?php
			if (!$aImg) { # Aucune image
				echo 'Aucune image';
			} else { # On affiche les images
				$nb = count($aImg);
				for($i=0; $i &lt; $nb; $i++) {
					echo '&lt;div class=&quot;album&quot;&gt;&lt;div class=&quot;tampon&quot;&gt;&lt;p class=&quot;thumb&quot;&gt;';
					$name = str_replace($dirImg, '',$aImg[$i]);
					if(file_exists($dirImg.$aImg[$i].'.tb')) # On a une miniature
						echo '&lt;img src=&quot;'.$dirImg.$aImg[$i].'.tb'.'&quot; alt=&quot;'.$name.'&quot;/&gt;&lt;br /&gt;';
					else # Pas de miniatures
						echo '&lt;span&gt;'.$name.'&lt;/span&gt;&lt;br /&gt;';
					# On affiche les différents liens
					echo '&lt;/p&gt;';
					echo '&lt;p class=&quot;thumb_link&quot;&gt;';
					echo '&lt;a href=&quot;'.$_SERVER['REQUEST_URI'].'&amp;img='.rawurlencode($name).'&quot;&gt;&lt;img src=&quot;core/admin/img/eye.png&quot; alt=&quot;Voir&quot; title=&quot;Voir l\'image&quot; /&gt;&lt;/a&gt; ';
					
					
					echo '&lt;a href=&quot;'.$_SERVER['REQUEST_URI'].'&amp;del='.$i.'&amp;hash='.$_SESSION['hash'].'&quot; title=&quot;Supprimer l\'image&quot; onclick=&quot;Check=confirm(\'Supprimer cette image ?\');if(Check==false) return false;&quot;&gt;&lt;img src=&quot;core/admin/img/delete.png&quot; alt=&quot;Supprimer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
					&lt;form method=&quot;post&quot; action=&quot;'.$_SERVER['REQUEST_URI'].'&amp;txt='.$name.'&quot;&gt;&lt;p&gt;descriptif&lt;/p&gt;';
					$lequel=explode('.',$name);
					$leg=$lequel[0];
					echo '&lt;p&gt;&lt;textarea id=&quot;desc'.$leg.'&quot; name=&quot;desc'.$leg.'&quot;&gt;';
					@include($dirImg.$aImg[$i].'.txt');
					echo '&lt;/textarea&gt;&lt;/p&gt;
					&lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;MAJ&quot;/&gt;&lt;/p&gt;
					&lt;/form&gt;
					'
					;
					echo '&lt;/div&gt;&lt;/div&gt;'.&quot;\n&quot;;
				}
			}
		?&gt;
	&lt;?php } # Fin else galerie 
	
} # FIN si !$album 
else {

///////////////////////////////////////////
# Suppression d'un repertoire
$dirImg='data/images/Album/';
if(isset($_GET['delrep']) AND !empty($_GET['hash']) AND $_GET['hash'] == $_SESSION['hash'] ) {
	# On supprime le repertoire
	if(!@rmdir($dirImg.trim($_GET['delrep']) )) # Erreur de suppression
		$msg = 'Impossible de supprimer cet Album (problème d\'écriture dans le dossier '.$dirImg.$_GET['delrep'].' , ou cet album n\'est pas vide)';
	else # Ok
		$msg = 'Album supprimée à '.date('H:m:s');
		if(!isset($_GET['oki'])) {
	header('Location:'.$_SERVER['REQUEST_URI'].'&amp;msg='.urlencode($msg).'&amp;oki=duck');
	exit;
}
}
///////////////////////////////////////////
echo '&lt;h2&gt; Crée un  Album &lt;/h2&gt;
	&lt;p&gt;';
	(!empty($_GET['msg']))?plxUtils::showMsg(plxUtils::unSlash(urldecode(trim($_GET['msg'])))):''; echo '&lt;/p&gt;';
echo '&lt;form method=&quot;post&quot; action=&quot;&quot; &gt;
&lt;p&gt;&lt;label for=&quot;new_album&quot;&gt;Nom de l\'album a créer&lt;/label&gt;
&lt;input type=&quot;text&quot; id=&quot;new_album&quot; name=&quot;new_album&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;créer&quot; /&gt;&lt;/p&gt;
&lt;/form&gt;
';
if (isset($_POST['new_album'])) {
			$dirDest=trim(plxUtils::title2filename(plxUtils::unSlash($_POST['new_album'])));
 			$old= umask();
			umask(0); 			
			mkdir('data/images/Album/'.$dirDest,0755);
			umask($old);
			$msg = 'Album  : '.$dirDest.' créer .';
		header('Location:'.$_SERVER['REQUEST_URI'].'&amp;msg='.urlencode($msg));
	exit;
			}
}
/////////////////////////////////
echo '&lt;/div&gt;
';
}

// fin test log admin

						// class  dir recursive .
class dirRecursif{
var $dir;
var $browsed;


function 	dirRecursif($dir) {

										$this-&gt;listee($dir);
									}
									
function 	listee($dir ) 	{
										if (is_dir($dir))
										{
										
										$hdir = opendir($dir);
										
										$album=0;
										  while ( $item = readdir($hdir) ) 
										  {
										  
										  	if($item==&quot;.&quot; | $item==&quot;..&quot;) continue;
											
											if ( !is_dir( $dir.'/'.$item ) ) 
													{
													#tri sur extension 
													$ext = array_reverse(explode(&quot;.&quot;, $item));
													$extfile= $ext[0];
														if (($extfile =='jpg' || $extfile =='JPG' || $extfile=='gif' || $extfile=='GIF' || $extfile=='png' || $extfile=='PNG'  ))
														{	
														$album++;
														$this-&gt;album_num=$album;
														
															// Répertoire =&gt; récursion
														  $this-&gt;browsed['file'][][$dir] = $item ;
														  $this-&gt;browsed['file'][][$dir]['num']=$album;
															// echo   '&lt;p&gt;'.$dir.'/'.$item.'&lt;/p&gt;';
														   $this-&gt;listee( $dir.'/'.$item );
														  
														}
													}
											else 	{
											$this-&gt;browsed['dir'][][$dir] = $dir.$item ;
											//echo   '&lt;p&gt;'.$dir.'/'.$item.'&lt;/p&gt;';
											$this-&gt;listee( $dir.$item );
													} 
											}
												closedir( $hdir );
										}
										return $this-&gt;browsed;
										}
										
function 	triliste($dir,$tri='file') {

					$this-&gt;browsed=$this-&gt;browsed[$tri];
					return $this-&gt;browsed;
			} //fin triliste()	
									
function  	liste_Tpl($dir,$tri='file',$tpl='link',$item) {
	#variable raccourcies pour relecture aisée
	$target=$this-&gt;browsed[$item][key($this-&gt;browsed[$item])];
//echo '&lt;pre&gt;';
//var_dump($this-&gt;browsed[$item+1][key($this-&gt;browsed[$item])]['num']);
//echo '&lt;/pre&gt;';
		if ($tri=='file') {
					$way=key($this-&gt;browsed[$item]).'/'; 
					$alb_num=$this-&gt;browsed[$item+1][key($this-&gt;browsed[$item])]['num'];
					$em='&lt;em style=&quot;display:block;font-size:.5em;&quot;&gt;'.$way.'&lt;/em&gt;';
				#filtre sur extension de fichier
					$filext = array_reverse(explode(&quot;.&quot;, $target));
					$extfile= $filext[0];
						if ($extfile =='jpg' || $extfile =='gif' ||  $extfile =='png')
							{
							$tpl=$tpl;	
							}
						else 
							{
							$tpl='skip';
							}
					
				}
		else 	{
					$way='';
					$em='';
				}

	#switch , choix du template d'affichage des résultats
	switch($tpl)
	            {
					case 'skip':
					break;
					
					case 'album':
					$legende=$way.$target.'.txt';
					echo '
					&lt;div class=&quot;album&quot;&gt;&lt;div class=&quot;tampon&quot;&gt;
						&lt;h2&gt;
							&lt;a href=&quot;'.$way.$target.'&quot; title=&quot;acceder à :'.$way.$target.'&quot;  &gt;
							&lt;img src=&quot;'.$way.$target.'.tb&quot; alt=&quot;illustration N° '.$alb_num.'&quot; longdesc=&quot;'.$_SERVER['REQUEST_URI'].'#ill'.$alb_num.'&quot; style=&quot;background:url('.$way.$target.');&quot;  rel=&quot;'.$way.$target.'&quot; /&gt;&lt;/a&gt;&lt;/h2&gt;
						&lt;div id=&quot;ill'.$alb_num.'&quot; &gt;';
						
						if(@!include($legende)) {echo 'images sans legende';}
						echo '&lt;/div&gt;
					&lt;/div&gt;&lt;/div&gt;';
					break;
	                case 'link' :
	                echo '&lt;p&gt;&lt;a href=&quot;'.$way.$target.'&quot; title=&quot;acceder à :'.$way.$target.'&quot;  &gt;'.$target.'&lt;/a&gt;&lt;/p&gt;';
	                break;
	                case 'linkdir' :
					$albLink=explode(&quot;&amp;&quot;, $_SERVER['REQUEST_URI']);
					$al=$albLink[0];
					
					$gal = array_reverse(explode(&quot;/&quot;, $target));
	                echo '&lt;p class=&quot;link_album&quot;&gt;&lt;span class=&quot;tampon&quot;&gt;&lt;a href=&quot;'.$al.'&amp;galerie='.$gal[0].'&quot; title=&quot;acceder à l\'Album  :'.$gal[0].'&quot;  &gt;'.$gal[0].'&lt;/a&gt;';
					if ($this-&gt;mode_admin =='Actif') {echo' &lt;a class=&quot;deleterep&quot; href=&quot;'.$al.'&amp;delrep='.$gal[0].'&amp;hash='.$_SESSION['hash'].'&quot; title=&quot;Supprimer l\'Album : '.$gal[0].'&quot; onclick=&quot;Check=confirm(\'Supprimer cet Album ?\');if(Check==false) return false;&quot;&gt;&lt;img src=&quot;core/admin/img/delete.png&quot; alt=&quot;Supprimer&quot; /&gt;&lt;/a&gt;';}
					echo '&lt;/span&gt;&lt;/p&gt;';
	                break;

	                default :
	                echo '&lt;p&gt;'.$way.$target.'&lt;/p&gt;';
	                break;
	            }// fin switch

}	// fin liste_Tpl()

function 	showliste($dir,$tri='file',$tpl='link',$mode_admin) 	{
	$this-&gt;mode_admin=$mode_admin;
	$this-&gt;triliste($dir,$tri);

	$ct=count($this-&gt;browsed);
	if ( ($ct&gt;0) || (is_array($this-&gt;browsed))) {
		for ($i=0;$i&lt;$ct;$i++)
			{
					$this-&gt;liste_Tpl($dir,$tri,$tpl,$i);
			}
		}
	else {
		echo '&lt;p&gt;Désolé, Aucun fichiers ou répertoire trouvé .&lt;/p&gt;';
		}
		
}	// fin showliste();								
										
#########										
}// fin class 


if (isset($_GET['galerie'])) {

$album= preg_replace('/[\.\%\&amp;\&quot;\s\'\:\/\[\],_|#*$£=`\+]+/',' ',$_GET['galerie']);
$browse= new dirRecursif('data/images/Album/'.$album);
if ($mode_admin !='Actif') {
echo '&lt;h3&gt;Album :'.$album.' &lt;/h3&gt;
&lt;p&gt;'.$browse-&gt;album_num .' Image(s) dans cet Album .&lt;/p&gt;
&lt;div class=&quot;post&quot;&gt;';


$browse-&gt;showliste('data/images/Album/'.$album,'file','album',$mode_admin);
echo '&lt;/div&gt;';
}
}
?&gt;
&lt;h3&gt;Les Albums photos disponibles .&lt;/h3&gt;
&lt;div class=&quot;post&quot;&gt;&lt;?php
$browse2= new dirRecursif('data/images/Album/');
$browse2-&gt;showliste('data/images/Album/','dir','linkdir',$mode_admin);

?&gt;
&lt;/div&gt;
</code></pre>
Cette page statique est devellobicolé  sous une des première version de pluxml V4 que j'utilise en multiblog (<a href="http://gcyrillux.gcyrillus.com/?static3/album-photos" rel="nofollow">http://gcyrillux.gcyrillus.com/?static3/album-photos</a>) .<br />
<br />
Peut-être que certaines fonctions de la dernière version de pluxml ont changé de nom (capital en minuscule ou vice versa dans la class plxutils )<br />
<br />
<br />
Si vous voulez tester ou participer a l'amélioration de cette page statique , ne vous gênez pas <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /><br />
<br />
Bon Web <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /><br />
<br />
GC]]>
        </description>
    </item>
    <item>
        <title>[script] paginer le contenu d'une page statique [PHP]</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7388/script-paginer-le-contenu-dune-page-statique-php</link>
        <pubDate>Sat, 04 Mar 2023 23:37:34 +0000</pubDate>
        <category>Vos créations</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7388@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Voici un script PHP permettant de paginer le contenu d'une page statique.</p>

<pre><code>&lt;style&gt;:where(.page-item.page-link.active) { text-decoration:underline;font-weight:bold; padding:0.3em 2em;}.pagination.text-center.center.bordered{border-radius: 5px;width:max-content;  margin:auto;  border:solid 1px;display:flex;align-items: center;list-style:none;gap:0.5em}&lt;/style&gt;&lt;?php
# $this is $plxShow
    #########################################
    #configuration 
    #########################################
    # nombre de bloc à afficher par page
    $bypage = 1;

    $intermediaire = false; //mettre true au lieu de false pour afficher les liens de chaque page
    #########################################
    # FIN configuration
    #########################################

    ############################# 
    # extraction et maj variables
    ############################# 

    # extraction de l'url
    $url = 'static'.$this-&gt;staticId().'/'.$this-&gt;plxMotor-&gt;aStats[$this-&gt;plxMotor-&gt;cible]['url'];

    # generation du lien
    $link = $this-&gt;plxMotor-&gt;urlRewrite($url."/?page");

    # extraction du numéro de page dans l'URL 
    $currentPage = preg_match('#\bpage(\d*)#',$_SERVER['REQUEST_URI'], $capture) ? intval($capture[1]) : 1;

    # indice de début, premier article à afficher
    $start = ($currentPage - 1) * $bypage;


    #################################################
    # stockage des blocs de contenus dans un tableau
    # tableau defini dans array(). chaque bloc stocké
    # entre deux apostrophe ' 
    # separé par une virgule ,
    # si un bloc contient une apostrophe '
    # celle-ci doit-être préceder d'un \\
    # depuis l'administration de PluXml, 
    # Il faut doubler ce signe en \\\\
    # exemple: l\\'exemple. C\\'est obligatoire.
    #################################################

$blocks = array(
'&lt;div&gt; A - un div dans la boucle, c\\'est le premier.&lt;/div&gt;',

'&lt;div&gt; B - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; C - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; D - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; E - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; F - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; G - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; H - un div dans la boucle&lt;/div&gt;',

'&lt;div&gt; I - un div dans la boucle, c\\'est le dernier&lt;/div&gt;')
;

// Calcul du 1er article de la page
$premier = ($currentPage * $bypage) - $bypage;

// On calcule le nombre de pages total
$nbr = count($blocks);
$pages = ceil( $nbr / $bypage);


$blocks = array_slice($blocks, $premier, $bypage);
?&gt;
&lt;!-- affichage des blocs selon le nombre à afficher par pages dans la variable $bypage --&gt;
&lt;div class="my_articles"&gt;
&lt;?php
    # boucle pour l'affichage
    foreach ($blocks as $key) {

 echo $key;
    }
?&gt;
&lt;/div&gt;
&lt;!-- fin affichage des blocs --&gt;


&lt;!-- Affichage de la pagination --&gt;

&lt;?php
    ############################
    # Affichage de la pagination
    ############################
?&gt;
&lt;nav&gt;
    &lt;ul class="pagination text-center center bordered"&gt;
        &lt;!-- Lien vers la page précédente (si on ne se trouve pas sur la 1ère page) --&gt;
        &lt;?= ($currentPage &gt; 1)  ? "&lt;li class=\\"page-item\\" &gt;&lt;a href=\\"".$link . $currentPage - 1 ."\\" class=\\"page-link\\"&gt;".L_PAGINATION_PREVIOUS."&lt;/a&gt;&lt;/li&gt;" : "" ?&gt;

        &lt;?php if($intermediaire == true)  {
        for($page = 1; $page &lt;= $pages; $page++) {
          # Lien vers chacune des pages (activé si on se trouve sur la page correspondante)
          echo '&lt;li class="page-item ';
          if($currentPage == $page)  echo 'active';
          echo '"&gt;&lt;a href="'.$link.$page .'" class="page-link"&gt;'.$page.'&lt;/a&gt;&lt;/li&gt;';
            }
        }
        else {
         echo "&lt;li class=\\"page-item page-link  active \\"&gt;
                ".$currentPage." / ". $nbr."
            &lt;/li&gt;"; 

        }   ?&gt;
          &lt;!-- Lien vers la page suivante (si on ne se trouve pas sur la dernière page) --&gt;
         &lt;?= ($currentPage &lt; $pages) ? " &lt;li class=\\"page-item\\"&gt;&lt;a href=\\"".$link.$currentPage + 1 ."\\" class=\\"page-link\\"&gt;".L_PAGINATION_NEXT."&lt;/a&gt;&lt;/li&gt;" : "" ?&gt;

    &lt;/ul&gt;
&lt;/nav&gt;
</code></pre>

<p>Script à copier/coller dans une page statique depuis l'administration de PluXml .<br />
Les symboles &#92;  sont doublés pour  être préservés à l'enregistrement.</p>

<p>Aspect de la barre de pagination selon la configuration choisie (dans le thème par défaut): <img src="https://pluxopolis.net/data/pagination.jpg" alt="" title="" /></p>

<p>Les contenus à paginer sont à inclure dans un tableau (voir et remplacer l'exemple inclus), c'est la seule difficulté qu'il peut y avoir. attention aux typos et a doubler / échapper les &#92; avant enregistrement pour les préserver.</p>

<p>Compatible avec  la réécriture d'URL  et  le plugin MyBetterUrl .</p>
]]>
        </description>
    </item>
    <item>
        <title>[RESOLU]intégration plugin comme page statique bénéficiant de la variable $format</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7134/resolu-integration-plugin-comme-page-statique-beneficiant-de-la-variable-format</link>
        <pubDate>Wed, 09 Feb 2022 22:09:50 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7134@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour,</p>

<p>De nombreux plugin se servent du hook <code>plxShowStaticListEnd</code> pour injecter une page .</p>

<p>Cela fonctionne bien mais reste rigide car cela ne permet pas d'appliquer la variable $format de façon a ce que l'affichage soit cohérent avec celui des autres liens de pages statique si l'on veut coller a un thème spécifique ou l’intégrer ailleurs que dans le menu. Le seul <em>format</em> affichage possible est celui que l'on met en dur dans le hook a dans le deuxiéme <em>echo</em>  : <br />
</p><details>

<p><summary> &gt;exemple du code de Stephane F. dans  mySearch $lt; <strong>cliquer pour voir le code</strong> </summary></p>

<pre><code>    /**
     * 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-&gt;getParam('mnuDisplay')) {
            echo "&lt;?php \$status = \$this-&gt;plxMotor-&gt;mode=='".$this-&gt;url."'?'active':'noactive'; ?&gt;";
            echo "&lt;?php array_splice(\$menus, ".($this-&gt;getParam('mnuPos')-1).", 0, '&lt;li class=\"static menu '.\$status.'\" id=\"static-search\"&gt;&lt;a href=\"'.\$this-&gt;plxMotor-&gt;urlRewrite('?".$this-&gt;lang.$this-&gt;url."').'\" title=\"".$this-&gt;getParam('mnuName_'.$this-&gt;default_lang)."\"&gt;".$this-&gt;getParam('mnuName_'.$this-&gt;default_lang)."&lt;/a&gt;&lt;/li&gt;'); ?&gt;";
        }
    }

</code></pre>

<p></p></details>

<p>Si l'on veut un autre affichage , (pas de list , insérer une class, une icône, autre,... )  il faut modifier cette partie directement dans le plugin.</p>

<p>J'ai donc tenter d'ajouter cette page en amont à partir du hook <code>plxShowStaticListBegin</code>.</p>

<p>Avec une petite astuce <sup><sub>( <code>../</code></sub></sup> , cela fonctionne ...sauf que ... <strong>uniquement si l'urlrwriting est activé</strong>.</p>

<p>Voici en la fonction que j'utilise pour ajouter une page statique à la liste:<br />
</p><details> <br />
<summary> &gt;hook plxShowStaticListBegin&lt; <strong>cliquer pour voir le code</strong> </summary>

<pre><code>public function plxShowStaticListBegin() {
        #ajout de la page du plugin dans la liste des pages statiques
        // TODO  voir si  boucle pour enlever stats inactive est necessaire pour correspondre totalement à la position configurée
        # Si affichage requis 
        if($this-&gt;getParam('mnuDisplay')) { 
            global $plxMotor;
            // on lui donne un numéros compatible avec ceux existants des pages satiques déjà referencées
            $max = max(array_keys($plxMotor-&gt;aStats));
            $max++;
            $max= str_pad($max, 3, "0", STR_PAD_LEFT);
            // on alimente les données spécifiques à cette nouvelle page statique.
            $newStats[$max]['group'] = '';// pas de groupe // maybe todo voir si option ajout à groupe existant est pertinent
            $newStats[$max]['name'] = $this-&gt;getParam('mnuName');
            if($plxAdmin-&gt;aConf['urlrewriting']=='oui') {
            $newStats[$max]['url'] = '../'.$this-&gt;getParam('url'); // gestion URL spécifique.
            }
            else { // pas d'url rewriting
            $newStats[$max]['url'] = $this-&gt;getParam('url'); // gestion URL spécifique.     
                       // c'est ici que ça coince, car l'url générée n'est pas compatible. 
                       // + en tapant l'url compatible à la main, le  fichier du plugin du plugin est introuvable 
            }
            $newStats[$max]['active'] = '1';
            $newStats[$max]['menu'] = 'oui';
            $newStats[$max]['ordre'] = $this-&gt;getParam('mnuPos') - 1;
            $newStats[$max]['template'] = $this-&gt;getParam('template');
            $newStats[$max]['title_htmltag'] = $this-&gt;getParam('mnuName');
            $newStats[$max]['meta_description'] = 'plug plug';
            $newStats[$max]['meta_keywords'] = 'eplug';
            $newStats[$max]['date_creation'] = date('YmdHi');
            $newStats[$max]['date_update'] = date('YmdHi');
            array_splice($plxMotor-&gt;aStats,$this-&gt;getParam('mnuPos') - 1,0,$newStats);          
        }       
    }

</code></pre>

<p></p></details>

<p>Je tente alors de voir, à partir du hook initial éprouvé de Stéphane, si il y a moyen encore d’accéder à la variable $format . Je n'y arrive pas et j'ai le droit à  <strong><code>&lt;b&gt;Notice&lt;/b&gt;:  Undefined variable: format in</code></strong> . <br />
L'idée était de tenter de se servir de cette variable pour reconstruire le lien à injecter au format par défaut ou celui demandé à partir du thème avec <code>$plxShow-&gt;catList()</code> .</p>

<p>Je coince et je ne sais plus quelle approche avoir,</p>

<ul>
<li>l'idée d'inclure une page a aStats est une fausse bonne idée car on ne peut pas modifier l'url finale a ce stade du script.</li>
<li>Surtout, je n'arrive pas a comprendre comment récupérer  $format au niveau du second HOOK pour le preserver et l'appliquer aussi aux liens des pages ajoutées.</li>
</ul>

<p>Quelqu'un peut-il m'orienter ?</p>
]]>
        </description>
    </item>
    <item>
        <title>inclusion statique dans fichier xml/html avec ob_start();  et Apache sans décrocher...</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7106/inclusion-statique-dans-fichier-xml-html-avec-ob-start-et-apache-sans-decrocher</link>
        <pubDate>Fri, 10 Dec 2021 21:44:51 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7106@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Je suis en train tester la conversion du contenu d'un site PluXml en un fichier Epub.</p>

<p>Je rencontre bien sur  plusieurs difficultés n'étant pas programmeur. L'une d'entre elle est de récupérer ce qui parvient à l'affichage d'une page statique .</p>

<p>Inspirer de la fonction <code>staticContent()</code>de plxshow, je n'arrive pas à concrétiser (serveur apache).</p>

<p>Voici un morceau qui peut être intégré dans une page statique à des fins de test pour mettre en evidence le défaut:</p>

<p>la boucle ne redémarre pas après avoir trouvé un premier fichier contenant du php, celui-ci est bien interprété et le retour HTML bien  enregistrer aussi.</p>

<p>A prioiri apache bug, le script de la  boucle (foreach) semble vouloir  redémarrer depuis le fichier  de la page statique parsée et pas depuis son propre fichier (en passant, bug qui ressemble à une drôle de faille si exploitable de l'extérieur) . Je ne vois pas trop comment faire en sorte pour que le serveur ne s’emmêle pas les pinceaux entre la page du script et la page que l'ont met dans un buffer pour en récupérer le contenu au lieu de pointer dessus et l'afficher.</p>

<p><em>Note , les <strong>&#92;</strong> sont doublés/échappés dans le code à copier/coller dans une page statique , pensez à les echapper à nouveaux avant chaque réenregistrement de votre page statique <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/wink.png" title=";)" alt=";)" height="18" /> .</em></p>

<pre><code><br />&lt;?php
global $plxMotor;

$xhtml ='&lt;!DOCTYPE html&gt;&lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="'.$plxMotor-&gt;aConf['default_lang'].'" lang="'.$plxMotor-&gt;aConf['default_lang'].'"&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;&lt;link rel="stylesheet" type="text/css" href="CSS/epub.css" /&gt;&lt;script src="JS/script.js"&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;'; 

$annexe="0";
     foreach ($this-&gt;plxMotor-&gt;aStats as $k =&gt; $v) {
           if ($v['active'] == 1 and $v['menu'] == 'oui' /* &amp;&amp;   $k !== '004'  */ ) {// en testant , n'oublier pas de filtrer et exclure  le numéro de cette page statique pour ne pas partir en orbite !!!!!!

         $annexe++;

                // inscription opf ici , retiré pour la question            


                $pageAnnexe = new DOMDocument('1.0', 'utf-8'); // parceque prévue d'être stocké dans un fichier epub
                $pageAnnexe-&gt;preserveWhiteSpace = false; 
                $pageAnnexe-&gt;formatOutput = true; 
                $pageAnnexe-&gt;loadHTML(mb_convert_encoding($xhtml, 'HTML-ENTITIES', 'UTF-8'));

                $title = $pageAnnexe-&gt;createElement('title', $v['name'] );
                // ajout du titre 
                $xpath = new DOMXPath($pageAnnexe);    
                $results = $xpath-&gt;query('/html/head');   
                $head = $results-&gt;item(0);
                $head-&gt;appendChild($title);
                //ajout contenu    
                $results = $xpath-&gt;query('/html/body');
                $body=$results-&gt;item(0); 
                $section= $pageAnnexe-&gt;createElement('section');

                $h1=$pageAnnexe-&gt;createElement('h1',$v['name'] );
                $section-&gt;appendChild($h1);
                $pagestat=  PLX_ROOT .$plxMotor-&gt;aConf['racine_statiques'].$k.'.'.$v['url'].'.php';

                // ce que j'utilise pour le moment et par depis
                /*$output =  file_get_contents($pagestat);
                $output = preg_replace('#\\&lt;\\?php(.*?)\\?\\&gt;#is', '', $output);*/

               // ce que j'aimerais faire sans comprendre ou se trouve les subtilités pour que cela fonctionne

               ob_start();
                require $pagestat;
               // je sais pas trop lequel est le plus opportun là, suggestion appréciée
               // $output = ob_get_clean();   
               // $output = ob_get_contents();  
                $output = ob_get_flush();


                // premiere statique avec php interpréte : okay
                $divite=$pageAnnexe-&gt;createCDATASection('&lt;div&gt;'.$output.'&lt;/div&gt;' );

                $section-&gt;appendChild($divite);

                $body-&gt;appendChild($section);
                $pageA= $pageAnnexe-&gt;saveXML();

           //insertion dans un fichier pour l'exemple 


               $myStatique = fopen("stat-".$annexe.".xhtml", "w") or die("Impossible d'ouvrir le fichier");
               fwrite($myStatique, $pageA);
               fclose($myStatique);

    // La boucle s’arrête ici dés qu’une page statique contient du PHP, son contenu HTML est sauvegardé avant que l'on soit  rediriger vers la dite page 
     }
}   

?&gt;

</code></pre>

<p><em>Pour les curieux qui voudraient bien voir où j'en suis pour le moment , le dernier epub générer à tester se trouve là et rempli grâce au plugin "les fables de la fontaine" : <a href="http://gcyrillus.alwaysdata.net/Lesfablesdel.epub" rel="nofollow">http://gcyrillus.alwaysdata.net/Lesfablesdel.epub</a>  l'avancement est aléatoire en fonction des test et modifications répétées selon le temps libre que j'y accorde.  Pour le moment, il est apparement ouvrable avec SiGil, Calibre et  quelques lecteur d'epub gratuit android, aucune idées en ce qui concerne les tablettes ni  les machin qui se prennent pour la Pomme.</em></p>
]]>
        </description>
    </item>
    <item>
        <title>[plugin] timixml: TinyMCE 4 community, codemirror et insert médias natif</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/6498/plugin-timixml-tinymce-4-community-codemirror-et-insert-medias-natif</link>
        <pubDate>Wed, 12 Jun 2019 20:52:17 +0000</pubDate>
        <category>Plugins</category>
        <dc:creator>Sudwebdesign</dc:creator>
        <guid isPermaLink="false">6498@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>A l&#39;instar de <a href="https://forum.pluxml.org/discussion/6435/" rel="nofollow"><strong>Cmixml</strong></a> voici (presque) la m&ecirc;me mais avec Tiny ou MCE selon qui en parle...</p><p>&Eacute;diteur wysiwyg + gestionnaire de fichier natif de PluXml + TinyMCE 4.9.8 + codemirror 5.56.0 (en plein &eacute;cran ou non depuis la v4.9.2.01)</p><p>Il permet d&#39;&eacute;diter les articles, pages statiques, commentaires, les produits de plxMyShop...</p><p><a href="http://sudwebdesign.free.fr/index.php?telecharger&amp;artid=0037&amp;file=emlwcy90aW1peG1sL3RpbWl4bWwtNC45LjguMDIuemlwKjkxNTdiMQ,," rel="nofollow"><strong>T&eacute;l&eacute;chargement direct ici</strong></a> et bien sur ds <a href="http://sudwebdesign.free.fr/depot.php#timixml" rel="nofollow">le d&eacute;p&ocirc;t</a>.</p><p>Plus d&#39;info sur <a href="http://sudwebdesign.free.fr/index.php?article37/" rel="nofollow">mon site</a></p><div>
    <div>
        <a href="https://forum.pluxml.org/uploads/750/CMIR50P5PVHA.png" rel="nofollow noopener" target="_blank">
            <img src="https://forum.pluxml.org/uploads/750/CMIR50P5PVHA.png" alt="timixml-4.9.2_visu.png" />
        </a>
    </div>
</div>
<p><br /></p>]]>
        </description>
    </item>
    <item>
        <title>Page statique, afficher des options dans static.php</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/6689/page-statique-afficher-des-options-dans-static-php</link>
        <pubDate>Wed, 01 Apr 2020 22:41:55 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>bastien</dc:creator>
        <guid isPermaLink="false">6689@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonsoir,</p><p>Quelqu&#39;un aurait-il une astuce pour afficher des options sur une page statique (static.php) ? ( avec des codes d&#39;appel &agrave; la donn&eacute;e)</p><p>Exemple: (les options sous l&quot;&eacute;diteur de texte dans une page statique cot&eacute; admin)</p><p>&nbsp;le contenu balise title</p><p>Contenu de la balise meta &quot;description&quot; pour cette page statique (option)&nbsp;:</p><p>Contenu de la balise meta &quot;keywords&quot; pour cette page statique (option)&nbsp;:</p><p>Date de cr&eacute;ation et date de mise a jour</p><ul><li>Les options ci-dessus rempli, les afficher dans une page statique cot&eacute; client.</li></ul><p>Merci par avance</p>]]>
        </description>
    </item>
    <item>
        <title>Visual Wizard : La version 2.8.0 vient de sortir !</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/6501/visual-wizard-la-version-2-8-0-vient-de-sortir</link>
        <pubDate>Sat, 15 Jun 2019 17:04:21 +0000</pubDate>
        <category>Echanges</category>
        <dc:creator>je-evrard</dc:creator>
        <guid isPermaLink="false">6501@/index.php?p=/discussions</guid>
        <description><![CDATA[<div>
    <div>
        <a href="https://forum.pluxml.org/uploads/884/M9J7RUBJJLKY.jpg" rel="nofollow noopener" target="_blank">
            <img src="https://forum.pluxml.org/uploads/884/M9J7RUBJJLKY.jpg" alt="vw-version-2.8.0.jpg" />
        </a>
    </div>
</div>
<p><strong>Voici les deux principales nouveaut&eacute;s de cette version :</strong></p><p><strong>Un moteur de th&egrave;me</strong></p><ul><li>Permet de customiser son th&egrave;me</li><li>Preview temps r&eacute;el</li><li>Simple, rapide et efficace dans la veine des widgets de Visual Wizard</li><li>Premier th&egrave;me &agrave; venir : Ph&eacute;nom&eacute;na !</li></ul><div>
    <div>
        <a href="https://forum.pluxml.org/uploads/881/QS03SQM5DIYQ.jpg" rel="nofollow noopener" target="_blank">
            <img src="https://forum.pluxml.org/uploads/881/QS03SQM5DIYQ.jpg" alt="admin-theme.jpg" />
        </a>
    </div>
</div>
<div>
    <div>
        <a href="https://forum.pluxml.org/uploads/254/NNS65NEHPAWA.jpg" rel="nofollow noopener" target="_blank">
            <img src="https://forum.pluxml.org/uploads/254/NNS65NEHPAWA.jpg" alt="admain-theme-popup.jpg" />
        </a>
    </div>
</div>
<div>
    <div>
        <a href="https://forum.pluxml.org/uploads/042/0HZY41CS6LPK.jpg" rel="nofollow noopener" target="_blank">
            <img src="https://forum.pluxml.org/uploads/042/0HZY41CS6LPK.jpg" alt="admain-theme-popup2.jpg" />
        </a>
    </div>
</div>
<p><br /></p><p><strong>Le plan de travail</strong></p><ul><li>Outil indispensable qui permet de d&#39;administrer vos sections</li><li>Drag and drop</li><li>Duplication</li><li>Suppression</li><li>Montrer et cacher les sections pour une meilleure gestion de votre travail en cours</li><li>Rajout de sections</li><li>Comment on faisait avant ?</li></ul><div>
    <div>
        <a href="https://forum.pluxml.org/uploads/976/SXERCZX45U2Q.png" rel="nofollow noopener" target="_blank">
            <img src="https://forum.pluxml.org/uploads/976/SXERCZX45U2Q.png" alt="plan-de-travail.png" />
        </a>
    </div>
</div>
<p><br /></p><p><strong>De nombreuses corrections ont &eacute;t&eacute; apport&eacute;es comme :</strong></p><ul><li>forcer vw en premi&egrave;re position dans la liste des plugins</li><li>Animate version 3.7.0</li><li>R&eacute;organisation des widgets par usage</li><li>Edition des articles, cat&eacute;gories en bouton pleine &eacute;cran</li><li>Rajout du titre de la page et de son lien dans l&#39;espace de travail</li></ul><p><strong>Des corrections diverses :</strong></p><ul><li>widget prism affichage en php</li><li>et bien d&#39;autres choses...</li></ul><p>Blog :&nbsp;<a href="http://www.justeasy.org/visualwizardpro/sortie-visual-wizard-pro-2-8-0.htm" rel="nofollow">sortie-visual-wizard-pro-2-8-0.htm</a></p><p>D&eacute;mo en ligne : <a href="http://www.justeasy.org/visualwizardpro/demo.htm" rel="nofollow">demo.htm</a></p><p>Infos et t&eacute;l&eacute;chargement sur&nbsp;<a href="http://www.justeasy.org/" rel="nofollow">justeasy.org</a></p><p>Cordialement,</p><p>j&eacute;r&ocirc;me</p>]]>
        </description>
    </item>
    <item>
        <title>Position du menu et espace entre les articles sur la page d'accueil</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/6472/position-du-menu-et-espace-entre-les-articles-sur-la-page-daccueil</link>
        <pubDate>Wed, 22 May 2019 18:24:44 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>costello22</dc:creator>
        <guid isPermaLink="false">6472@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour &agrave; tous, je suis nouveau sur PluXml. Je tente de migrer mon site actuellement sous Word press. Je rencontre deux difficult&eacute;s principales.</p><ul><li>Le menu qui affiche les groupes de pages statiques est visiblement mal positionn&eacute; et n&#39;affiche de plus que deux pages dans le groupe ?</li><li>Je souhaiterais d&eacute;finir pr&eacute;cis&eacute;ment la taille de l&#39;aper&ccedil;u des articles (le chapo) sur la plage d&#39;accueil afin que l&#39;image d&#39;accroche, le titre et le chapo soient clairement d&eacute;limit&eacute;s par rapport &agrave; l&#39;article suivant</li></ul><p>Je ne sais pas si mes demandes sont tr&egrave;s claires mais je suis preneur de toute aide dans la r&eacute;solution de ces probl&egrave;mes...</p><p>Merci d&#39;avance</p><p><a href="http://vantheman.raidghost.com/" rel="nofollow">http://vantheman.raidghost.com/</a></p>]]>
        </description>
    </item>
   </channel>
</rss>
