<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[L'Agora sur Chronica – L'énigme du Plugin Personnel]]></title>
	<link rel="self" href="https://agora.chauvigne.info/extern.php?action=feed&amp;tid=578&amp;type=atom" />
	<updated>2026-01-24T11:02:48Z</updated>
	<generator>PunBB</generator>
	<id>https://agora.chauvigne.info/viewtopic.php?id=578</id>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3934#p3934" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>add_event_handler(&#039;loc_end_page_header&#039;, &#039;scroll_to_top&#039;);

function scroll_to_top()
{
  global $template;
  $template-&gt;set_prefilter(&#039;header&#039;, &#039;scroll_to_top_pref&#039;, 100);
}

function scroll_to_top_pref($content)
{
  $search = &#039;&lt;body id=&quot;{$BODY_ID}&quot; class=&quot;{foreach from=$BODY_CLASSES item=class}{$class} {/foreach}&quot;  data-infos=\&#039;{$BODY_DATA}\&#039;&gt;&#039;;
  $scroll = &#039;
{html_style}{literal}
.scrollup {
    width:48px; height:48px; opacity:0.7; position:fixed; border-radius:24px;
    bottom:50px; right:50px; display:none; text-indent:-9999px;
    background: rgba(255,255,255,0.8) url(&quot;https://beauxvoyages.fr/photos/img/down.png&quot;) no-repeat;
    z-index:1000; border:none !important; text-decoration:none !important;
}
.scrollup:hover { opacity:1; }
{/literal}{/html_style}
{footer_script}{literal}
jQuery(window).scroll(function(){
    if (jQuery(this).scrollTop() &gt; 100) {
        jQuery(&quot;.scrollup&quot;).fadeIn();
    } else {
        jQuery(&quot;.scrollup&quot;).fadeOut();
    }
});
jQuery(&quot;.scrollup&quot;).click(function(){
    jQuery(&quot;html, body&quot;).animate({ scrollTop: 0 }, 600);
    return false;
});
{/literal}{/footer_script}
&lt;a href=&quot;#&quot; class=&quot;scrollup&quot;&gt;Scroll&lt;/a&gt;&#039;;
  
  return str_replace($search, $search.$scroll, $content);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T11:02:48Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3934#p3934</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3933#p3933" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>add_event_handler(&#039;loc_begin_page_header&#039;, &#039;changeAppIconFilter&#039; );
function changeAppIconFilter() {
 global $template;
 $template-&gt;set_prefilter(&#039;header&#039;, &#039;changeAppIcon&#039;);
}

function changeAppIcon($content, &amp;$smarty) {
 $search = &#039;#themes/bootstrap_darkroom/img/logo.png#&#039;;

 $replacement = &#039;local/favicon.ico&#039;;  /* &lt;-- Set your logo path/name here */

 return preg_replace($search, $replacement, $content);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T10:07:49Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3933#p3933</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3932#p3932" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>add_event_handler(&#039;loc_end_page_tail&#039;, &#039;removecontact&#039;);
function removecontact() {
  global $template;
   
  $template-&gt;clear_assign(&#039;CONTACT_MAIL&#039;);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T09:57:38Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3932#p3932</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3931#p3931" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>add_event_handler(&#039;loc_end_page_header&#039;, &#039;Change_Title_home&#039;);
function Change_Title_home(){
  global $template, $page, $conf;  
  if ((isset($page[&#039;section&#039;]) and $page[&#039;section&#039;] == &#039;categories&#039; and empty($page[&#039;category&#039;][&#039;id&#039;])))
    {
    $template-&gt;assign(&#039;PAGE_TITLE3&#039;,&quot;Albums de la galerie&quot; );
    }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T09:56:32Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3931#p3931</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3930#p3930" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>add_event_handler(&#039;loc_begin_index&#039;, &#039;add_album_name&#039;);
function add_album_name() {
  global $template, $page;
  if (!empty($page[&#039;category&#039;][&#039;id&#039;])) {
    $query = &#039;SELECT name FROM &#039; . CATEGORIES_TABLE . &#039; WHERE id = \&#039;&#039; . $page[&#039;category&#039;][&#039;id&#039;] . &#039;\&#039;;&#039;;
    $result = pwg_query($query);
    $row = pwg_db_fetch_assoc($result);
    $namealbum = trigger_change(&#039;AP_render_content&#039;, $row[&#039;name&#039;]);
    if (!empty($namealbum) &amp;&amp; !empty($page[&#039;category&#039;][&#039;id&#039;])) {
      $template-&gt;assign(&#039;PAGE_TITLE3&#039;,$namealbum);
    }
  }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T09:54:46Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3930#p3930</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3929#p3929" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>/** thumbnails.tpl **/
add_event_handler(&#039;get_thumbnail_title&#039;, &#039;MYthumbnail_title&#039;);
function MYthumbnail_title()
{
  return &#039;&#039;;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T09:53:20Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3929#p3929</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3928#p3928" />
			<content type="html"><![CDATA[<p>Je cherchais un moyen de changer de façon aléatoire l&#039;ordre des albums de premier niveau sur ma page d&#039;accueil. Pas l&#039;ordre des sous-albums. Pour que l&#039;apparence de cette page d&#039;accueil change à chaque rechargement de page.</p><p>J&#039;ai trouvé la solution. Voyez mon site : <a href="https://album.chauvigne.info/" target="_blank" rel="noopener noreferrer nofollow">https://album.chauvigne.info/</a><br />Non, j&#039;ai menti : j&#039;ai bien la recette et c&#039;est GBO qui me l&#039;a donnée. Un grand merci à lui. Et même avec 2 variantes, l&#039;une crée un ordre aléatoire pour les albums de 1er niveau (chez moi, la page d&#039;accueil), l&#039;autre ajoute aussi l&#039;aléa d&#039;affichage sur tous les sous-albums :</p><p>Les plugins Local Files Editor et Plugin personnel étant activés, dans l&#039;onglet Plugin personnel de Local files Editor, mettre :</p><div class="codebox"><pre><code>/** pour ordre aléatoire des albums - Code GBO - albums 1er niveau seulement**/
add_event_handler(&#039;loc_begin_index_category_thumbnails_query&#039;,&#039;random_sort_album&#039;);
function random_sort_album($query){
global $page;

if (empty($page[&#039;body_data&#039;][&#039;category_id&#039;])) // album level = 1
{$query = str_replace(&#039; ORDER BY `rank`&#039;,&#039; ORDER BY RAND()&#039;,$query);}

return $query;
}</code></pre></div><p>ou</p><div class="codebox"><pre><code>/** pour ordre aléatoire des albums - Code GBO - albums tous niveaux**/
add_event_handler(&#039;loc_begin_index_category_thumbnails_query&#039;,&#039;random_sort_album&#039;);
function random_sort_album($query){
  $query = str_replace(&#039; ORDER BY `rank`&#039;,&#039; ORDER BY RAND()&#039;,$query);
  return $query;
}</code></pre></div><p>-------------------------------<br />Gérard a trouvé que le résultat avec changement d&#039;affichage à chaque rechargement de page était un peu violent (ce sont ses termes) pour le visiteur qui pouvait se trouver désorienté. Moi pas. J&#039;aime bien le 100% aléatoire, c&#039;est juste ce que je voulais : c&#039;est un peu comme mon Husky qui fait croire à toute la vallée qu&#039;il est toute une meute, en changeant d&#039;emplacement et en modulant son hurlement.</p><p>Ce merveilleux code ajoute de la fantaisie, de l&#039;inattendu et c&#039;est seulement sur la home. Et si ça perturbe le visiteur, tant mieux. J&#039;ai beau être stricte quand il s&#039;agit de html (vois mes gueulantes réitérées sur les titres), mes Piwigos sont faits pour m&#039;amuser. Je n&#039;ai plus de compte à rendre à quiconque.</p><p>Alors GBO m&#039;a fait parvenir 4 codes différents à entrer dans l&#039;onglet Plugin personnel de Local Files Editor, selon que l&#039;on applique l&#039;aléa seulement aux albums de 1er niveau ou également aux sous-albums. Et selon que l&#039;affichage aléatoire se mette en branle à chaque rechargement de page ou toutes les 3 heures.</p><p>Alors voilà :</p><p><span class="bbu"><strong>1 - Ordre d&#039;affichage des albums aléatoire à chaque chargement de page</strong></span></p><p>1a - Pour tous les niveaux</p><div class="codebox"><pre><code>/** pour ordre aléatoire des albums - Code GBO - albums tous niveaux**/
add_event_handler(&#039;loc_begin_index_category_thumbnails_query&#039;,&#039;random_sort_album&#039;);
function random_sort_album($query){
  $query = str_replace(&#039; ORDER BY `rank`&#039;,&#039; ORDER BY RAND()&#039;,$query);
  return $query;
}</code></pre></div><p>1b- Seulement pour le niveau 1</p><div class="codebox"><pre><code>/** pour ordre aléatoire des albums - Code GBO - albums 1er niveau seulement**/
add_event_handler(&#039;loc_begin_index_category_thumbnails_query&#039;,&#039;random_sort_album&#039;);
function random_sort_album($query){
global $page;

if (empty($page[&#039;body_data&#039;][&#039;category_id&#039;])) // album level = 1
{$query = str_replace(&#039; ORDER BY `rank`&#039;,&#039; ORDER BY RAND()&#039;,$query);}

return $query;
}</code></pre></div><p><span class="bbu"><strong>2 - L&#039;ordre d&#039;affichage des albums change toutes les 3 heures</strong></span></p><p>2a - Pour tous les niveaux</p><div class="codebox"><pre><code>add_event_handler(&#039;loc_begin_index_category_thumbnails_query&#039;,&#039;random_sort_album&#039;);
 function random_sort_album($query){
// Album sort order change every 3 hours ( 24/8)
$sOrder = fmod(date(&quot;j&quot;) + date(&quot;H&quot;),8);
if ($sOrder &gt; 0)
   { if ($sOrder == 1)  $replace = &#039; ORDER BY name&#039;;
     if ($sOrder == 2)  $replace = &#039; ORDER BY comment&#039;;
     if ($sOrder == 3)  $replace = &#039; ORDER BY lastmodified&#039;;
     if ($sOrder == 4)  $replace = &#039; ORDER BY count_images &#039;;
     if ($sOrder == 5)  $replace = &#039; ORDER BY name DESC&#039;;
     if ($sOrder == 6)  $replace = &#039; ORDER BY comment DESC&#039;;
     if ($sOrder == 7)  $replace = &#039; ORDER BY lastmodified DESC&#039;;
     $query = str_replace(&#039; ORDER BY `rank`&#039;,$replace,$query);
  }
return $query;
}</code></pre></div><br /><p>2b - Seulement pour le niveau 1<br /></p><div class="codebox"><pre><code>add_event_handler(&#039;loc_begin_index_category_thumbnails_query&#039;,&#039;random_sort_album&#039;);
 function random_sort_album($query)
{   global $page;
    if (empty($page[&#039;body_data&#039;][&#039;category_id&#039;])) // album level = 1 
       { $sOrder = fmod(date(&quot;j&quot;) + date(&quot;H&quot;),8);
           if ($sOrder &gt; 0)
               {  if ($sOrder == 1)  $replace = &#039; ORDER BY name&#039;;
                  if ($sOrder == 2)  $replace = &#039; ORDER BY comment&#039;;
                  if ($sOrder == 3)  $replace = &#039; ORDER BY lastmodified&#039;;
                  if ($sOrder == 4)  $replace = &#039; ORDER BY count_images &#039;;
                  if ($sOrder == 5)  $replace = &#039; ORDER BY name DESC&#039;;
                   if ($sOrder == 6)  $replace = &#039; ORDER BY comment DESC&#039;;
                   if ($sOrder == 7)  $replace = &#039; ORDER BY lastmodified DESC&#039;;
                   $query = str_replace(&#039; ORDER BY `rank`&#039;,$replace,$query);
                }
    }
return $query;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T09:47:49Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3928#p3928</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[L'énigme du Plugin Personnel]]></title>
			<link rel="alternate" href="https://agora.chauvigne.info/viewtopic.php?pid=3927#p3927" />
			<content type="html"><![CDATA[<p>Je cherchais désespérément à installer le &quot;Plugin personnel&quot; depuis le magasin d&#039;extension Piwigo. Sur mes sites anciens, je le vois bien dans la liste des plugins activés, bien que le lien vers sa page d&#039;extension mène à une page générale de doc sur l&#039;administration d&#039;un Piwigo.<br />Alors j&#039;ai demandé à ddtddt. Et il vient de me répondre, disponible, patient et pertinent comme toujours, dans son style minimaliste légendaire :<br /></p><div class="quotebox"><blockquote><p>Un plugin personnel comme son nom l&#039;indique est personnel donc il n&#039;apparait pas sur le site des extensions c&#039;est normal.<br />Il apparait dans les plugins à activer uniquement quand avec LFE (ou par FTP en manuel) il existe. Donc en l&#039;ayant fait, il apparait.<br />Si via LFE tu n&#039;as pas de plugin perso c&#039;est normal qu&#039;il ne te propose pas de l&#039;activer.</p></blockquote></div><p>Il m&#039;a fallu un petit moment pour réaliser, après 10 ans de Piwigo au compteur, pourquoi on ne trouvait pas ce plugin en magasin. Et soudain : Fiat lux !</p><p>Donc voilà le principe d&quot;utilisation:<br />1 - Je copie le code<br />2 - J&#039;ouvre Local File Editor dans la page des plugins de mon Piwigo<br />3 - Dans son onglet &quot;Plugin Personnel&quot;, je colle le code et j&#039;enregistre<br />4 - Dans mon lot de plugins désactivés, je vois alors que Plugin Personnel est apparu. Je l&#039;active.<br />5 - Et tada ... mon code est actif (enfin quand le dis &quot;mon&quot;, je veux dire celui dont on m&#039;a aimablement gratifiée : car moi, je ne crée pas de plugin personnel, je copie-colle le code de ceux qu&#039;on me donne quand je mendie sur les forums. Par ex. quand je voulais obtenir un ordre aléatoire des albums en accueil.)</p>]]></content>
			<author>
				<name><![CDATA[Katryne]]></name>
				<uri>https://agora.chauvigne.info/profile.php?id=2</uri>
			</author>
			<updated>2026-01-24T08:20:13Z</updated>
			<id>https://agora.chauvigne.info/viewtopic.php?pid=3927#p3927</id>
		</entry>
</feed>
