<?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>scripts — Forum de PluXml</title>
        <link>https://forum.pluxml.org/index.php?p=/</link>
        <pubDate>Mon, 18 May 2026 19:40:26 +0000</pubDate>
        <language>fr</language>
            <description>scripts — Forum de PluXml</description>
    <atom:link href="https://forum.pluxml.org/index.php?p=/discussions/tagged/scripts/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>[script] update structure XML des fichiers articles.</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7616/script-update-structure-xml-des-fichiers-articles</link>
        <pubDate>Mon, 26 Feb 2024 18:55:49 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7616@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour,</p>

<p>J'ai remarqué à plusieurs reprise que certains champs des fichiers XML des articles ne se mettait pas à jours en migrant d'une (trés) vielle version vers une version plus récentes.</p>

<p>Jusque là je m'en sortait généralement dans notepad++ en faisant une  rechercher-&gt; remplacer par <br />
en mettant dans la portion recherche : <code>^.*(&lt;/document&gt;).*$</code> et dans remplacer par</p>

<pre><code>    &lt;title_htmltag&gt;&lt;![CDATA[]]&gt;&lt;/title_htmltag&gt;
    &lt;thumbnail&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail&gt;
    &lt;thumbnail_alt&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_alt&gt;
    &lt;thumbnail_title&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_title&gt;
    &lt;date_creation&gt;&lt;![CDATA[]]&gt;&lt;/date_creation&gt;
    &lt;date_update&gt;&lt;![CDATA[]]&gt;&lt;/date_update&gt;
&lt;/document&gt;
</code></pre>

<p>soit sans date, soit avec une date bidon et cela fait la manip sur touts les fichier dans le dossier avec une balise fermante <code>&lt;/document&gt;</code> sans autres distinctions.</p>

<p>Cette fois-ci , j'ai trouver des articles datant de 2013 à 2023 dans un pluxml arrivé en version 5.5  <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/wink.png" title=";)" alt=";)" height="18" />  La manip notepad++ n'est pas terrible, les articles récents auront des doublons vides et comme il sont déjà en ligne et qu'une MAJ vers la 5.8.9 est envisagée, l'idée de faire une maj manuelle sur quelques centaines de dossiers est impensable.</p>

<p>Dans les fichier pour les mise à jour : update/update.x.x.x.php , le test <code>if(!preg_match('/\]\]&lt;\/title_htmltag&gt;/', $data))</code> est bugué, il ajoute systématiquement la balise , qu'elle soit là ou pas <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/frown.png" title=":(" alt=":(" height="18" /> .</p>

<p><del>Je vous propose alors ce script qui va ajouter ces balises seulement si elles sont manquantes: </del><br />
<ins>Voir le script et lamethode corrigée par bazooka : <a href="https://forum.pluxml.org/discussion/comment/64833/#Comment_64833" rel="nofollow">https://forum.pluxml.org/discussion/comment/64833/#Comment_64833</a> </ins></p>

<p></p><details><summary>Code édité corrigé selon les conseils du prochain post.</summary>

<pre><code>&lt;?php
    include 'prepend.php';
    include 'top.php';
?&gt;

&lt;header class="action-bar"&gt;&lt;h1&gt;Mise à jours de structure XML des articles.&lt;/h1&gt;&lt;/header&gt;
&lt;p&gt;Il y a &lt;?= count(glob(PLX_ROOT . $plxAdmin-&gt;aConf['racine_articles'] .'*.xml')) ?&gt; fichiers XML dans le dossier.&lt;/p&gt;
&lt;p&gt;Ce script ajoute aux fichiers les balises suivantes si manquantes:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&amp;lt;title_htmltag&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;thumbnail&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;thumbnail_alt&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;thumbnail_title&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;date_creation&amp;gt;(reprend la date dans le nom de fichier.)&lt;/li&gt;
    &lt;li&gt;&amp;lt;date_update&amp;gt; (reprend la date dans le nom de fichier.)&lt;/li&gt;
&lt;/ol&gt;
&lt;?php
    $rewrite=false;
    $i=0;
    foreach(glob(PLX_ROOT . $plxAdmin-&gt;aConf['racine_articles'] .'*.xml', GLOB_NOSORT) as $file)   
    { 
        if(preg_match('#^(_?\d{4})\.((?:\d{3},|draft,)*(?:home|\d{3})(?:,\d{3})*)\.(\d{3})\.(\d{12})\.(.*)\.xml$#', basename($file), $capture)) {
            $date = $capture[4];
        }
        if(is_readable($file)) {
            $data = file_get_contents($file);
            if( strpos( $data, 'title_htmltag' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;title_htmltag&gt;&lt;![CDATA[]]&gt;&lt;/title_htmltag&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'thumbnail' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;thumbnail&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'thumbnail_alt' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;thumbnail_alt&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_alt&gt;\n&lt;/document&gt;", $data);
            $rewrite=true;
            }
            if(strpos( $data, 'thumbnail_title' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;thumbnail_title&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_title&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'date_creation' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;date_creation&gt;&lt;![CDATA[$date]]&gt;&lt;/date_creation&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'date_update' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;date_update&gt;&lt;![CDATA[$date]]&gt;&lt;/date_update&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }

            if($rewrite==true){
                ++$i;
                $file_handle = fopen($file, 'w'); 
                fwrite($file_handle, $data);
                fclose($file_handle);

            }
        }
    }  
    echo 'Mise à jour des structures XML de &lt;b style="color:tomato"&gt;'.$i.'&lt;/b&gt; fichier(s) effectuée(s).';

    include  'foot.php';
?&gt;
</code></pre>

<p>&Agrave; mettre dans un fichier **updateArticle.php** dans le repertoire **core/admin** , puis se connecter à l'admin et appeler le fichier `://votresite.com/core/admin/updateArticle.php` </p>

<p>Une fois vos articles reconstruit en mode 2024. Le script ne modifiera les fichiers qu'une seule fois et seulement au besoin</p>

<p>J’espère qu'il vous sera utile.</p>

<p></p></details>

<p><b>Par précaution, faites toujours un backup de vos fichiers avant de le lancer une routine qui va les modifier</b></p>
]]>
        </description>
    </item>
    <item>
        <title>Où trouver des Plugins pour PluXml</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7214/ou-trouver-des-plugins-pour-pluxml</link>
        <pubDate>Sat, 25 Jun 2022 10:06:36 +0000</pubDate>
        <category>Plugins</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7214@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Il y a de nombreux Plugins qui existent pour PluXml, des centaines en fait.</p>

<p>Je n'ai encore découvert aucune page qui les recenses tous (ou presque tous) et qui soit régulièrement mise à jour.</p>

<p><strong>Je vous propose donc de contribuer à cette liste et mises à jours au cours de vos trouvailles</strong>. Ci-dessous une première liste:</p>

<p>Je tente de regrouper aux mieux tous ceux que je trouve sur le premier de la liste:<br />
Le chiffre comptabilise inclus les différentes version disponible d'un plugin.</p>

<ul>
<li><a href="https://ressources.pluxopolis.net/banque-plugins/" rel="nofollow">https://ressources.pluxopolis.net/banque-plugins/</a>  (05/10/23  485 )</li>
<li><a href="https://ressources.pluxml.org/plugins" rel="nofollow">https://ressources.pluxml.org/plugins</a>  (32)</li>
<li><p><a href="https://wiki.pluxml.org/docs/miscellaneous/plugins.html" rel="nofollow">https://wiki.pluxml.org/docs/miscellaneous/plugins.html</a> (XXX)<br />
</p><details> pages plugins pluxopolis par auteurs &gt;

<blockquote><div>
  <p>les plugins de jerryWham   <a href="https://ressources.pluxopolis.net/ecyseo" rel="nofollow">https://ressources.pluxopolis.net/ecyseo</a> (21) (que l'on aussi retrouver dans un moteur de recherche en faisant  le tri sur son github <code>site:https://github.com/jerrywham pluxml</code> )<br />
  <a href="https://ressources.pluxopolis.net/pluginsjpb" rel="nofollow">https://ressources.pluxopolis.net/pluginsjpb</a><br />
  <a href="https://ressources.pluxopolis.net/pluginsbronco" rel="nofollow">https://ressources.pluxopolis.net/pluginsbronco</a><br />
  <a href="https://ressources.pluxopolis.net/pluginsspx" rel="nofollow">https://ressources.pluxopolis.net/pluginsspx</a><br />
  <a href="https://ressources.pluxopolis.net/stephane" rel="nofollow">https://ressources.pluxopolis.net/stephane</a><br />
  <a href="https://ressources.pluxopolis.net/Hamtaro" rel="nofollow">https://ressources.pluxopolis.net/Hamtaro</a></p></div>
</blockquote>

<p></p></details></li>
<li><p><a href="https://www.kazimentou.fr/repo/index.php" rel="nofollow">https://www.kazimentou.fr/repo/index.php</a> (51)</p></li>
<li><a href="https://github.com/gcyrillus?tab=repositories" rel="nofollow">https://github.com/gcyrillus?tab=repositories</a> (15)</li>
<li><a href="https://petitpouyo.fr/repo/index.php" rel="nofollow">https://petitpouyo.fr/repo/index.php</a> (24) / <a href="https://pluxgins.com/" rel="nofollow">https://pluxgins.com/</a>  (27)</li>
<li><strong>ceux que vous allez aussi partager</strong> <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/wink.png" title=";)" alt=";)" height="18" />

<ul>
<li>il y a donc parmis ceux récolter sur le forum</li>
<li><a href="http://thepoulpe.net/index.php?tag/plugin" rel="nofollow">http://thepoulpe.net/index.php?tag/plugin</a></li>
</ul></li>
</ul>

<p>restera encore la difficulté de la compatibilité de certains  plugins avec les dernières versions de PluXml ou script/fonctions qu'ils intègrent dépendant d'un framework ou d'une API tierce , le forum peut toujours aidé à la mise à jour d'un plugin si cela est possible.</p>

<p>cdt</p>

<p><strong>edit</strong>, ce sujet pourrait-être accompagner de deux autres :</p>

<ul>
<li>Où trouver des thèmes pour PluXml</li>
<li>Où trouver des scripts et astuces pour PluXml ?</li>
</ul>

<hr />

<p>Pour les scripts et astuces:</p>

<ul>
<li><a href="https://kazimentou.fr/static8/download" rel="nofollow">https://kazimentou.fr/static8/download</a></li>
<li><a href="https://pluxopolis.net/bout-de-code.html" rel="nofollow">https://pluxopolis.net/bout-de-code.html</a></li>
<li><a href="https://re7net.com/article/donnees-structurees-json-ld" rel="nofollow">https://re7net.com/article/donnees-structurees-json-ld</a>  (à insérer dans les fichiers de vos thèmes )</li>
</ul>

<hr />

<p>Pour les thèmes:</p>

<ul>
<li><a href="https://kazimentou.fr/repo/index.php?page=themes" rel="nofollow">https://kazimentou.fr/repo/index.php?page=themes</a></li>
<li><a href="https://pluxthemes.com" rel="nofollow">https://pluxthemes.com</a></li>
<li>...</li>
</ul>
]]>
        </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>
   </channel>
</rss>
