1 Hier 07:58 -

Traduction de l'article de Pierrick sur Github https://github.com/Piwigo/Piwigo/wiki/C … al-plugins

Préalables : installer et activer les plugins LocalFilesEditor et PluginPersonnel.
Voici une liste de plugins très simples que vous pouvez utiliser avec LocalFilesEditor. Il suffit de coller le code dans Local Files Editor -> Onglet Plugin personnel.

Ajouter une barre de navigation supérieure
Dans la liste des vignettes, si vous avez plusieurs éléments, vous pouvez afficher la barre de navigation en haut en plus de celle en bas. (Note perso : c'est mieux que mon fork à l'arrache)

<?php
/*Plugin Name: Navbar on top Version: 1.0 Author: Mistic Author URI: [url]http://www.strangeplanet.fr[/url]*/

add_event_handler('loc_end_index', 'top_navbar');
function top_navbar()
{
  global $template;
  $template->set_prefilter('index', 'top_navbar_prefilter');
}
function top_navbar_prefilter($content, &$smarty)
{
  $search = '{if !empty($CATEGORIES)}{$CATEGORIES}{/if}';
  $add = '{if !empty($navbar)}{include file=\'navigation_bar.tpl\'|@get_extent:\'navbar\'}{/if}';
  return str_replace($search, $add.$search, $content);
}
?>

Supprimer le compteur de photos dans le fil d'Ariane

<?php
/*Plugin Name: Remove breadcrumb photocounter Version: 1.0 Author: barbichou */

add_event_handler('loc_end_index', 'no_breadcrumb_counter');
function no_breadcrumb_counter()
{
  global $template;
  $titre = $template->get_template_vars('TITLE');
  $pos = strrpos($titre,"[");
  if ($pos !== false)
  {
    $template->assign('TITLE', substr($titre, 0, $pos));
  }
}
?>

Titre de page à un niveau
Ce plugin affiche uniquement le dernier nom de l'album dans le titre de la page, et non l'arborescence complète.

<?php
/*Plugin Name: One level in page title Version: 1.0 Author: barbichou*/
add_event_handler('loc_end_page_header', 'one_level_pagetitle');
function one_level_pagetitle()
{
  global $template, $conf;
  $titre = $template->get_template_vars('PAGE_TITLE');
  $pos = strrpos($titre, $conf['level_separator']);
  if ($pos!==false)
  {
    $template->assign('PAGE_TITLE', substr($titre, $pos+strlen($conf['level_separator']))); 
  }
}
?>

Changement de thème à partir de l'URL
Ce plugin permet d'ajouter un paramètre supplémentaire à l'URL qui passera outre l'affichage du thème paramétré par défaut. Par exemple : http://mysite.com/picture.php?/246/cate … e=Stripped ouvrira cette page d'image avec le thème Stripped, quel que soit le thème par défaut. Ne fonctionne que pour les pages d'images.

<?php
/*Plugin Name: Theme Switch From URL Version: 1.0 Author: Mistic Author URI: [url]http://www.strangeplanet.fr[/url] */
add_event_handler('user_init', 'theme_controler_lite1');
add_event_handler('init', 'theme_controler_lite2');
function theme_controler_lite1()
{
  global $user;
  
  if ( isset($_GET['temp_theme']) and file_exists(PHPWG_THEMES_PATH.$_GET['temp_theme']) )
  {
    $user['theme'] = $_GET['temp_theme'];
  }
}
function theme_controler_lite2()
{
  global $template;
  
  if ( isset($_GET['temp_theme']) and file_exists(PHPWG_THEMES_PATH.$_GET['temp_theme']) )
  {
    $template->assign('TEMP_THEME', $_GET['temp_theme']);
    $template->set_prefilter('picture', 'theme_controler_lite_prefilter');
  }
}
function theme_controler_lite_prefilter($content)
{
  global $conf;
  if ($conf['question_mark_in_urls']==false)
  {
    $search = '#(action|href)="([^?"]*)"#';
    $replace = '$1="$2?temp_theme={$TEMP_THEME}"';
  }
  else
  {
    $search = '#(action|href)="([^"]*)"#';
    $replace = '$1="$2&amp;temp_theme={$TEMP_THEME}"';
  }
  
  return preg_replace($search, $replace, $content);
}
?>

Bouton défiler vers le haut
Cela ajoute un simple bouton permettant de faire défiler la page vers le haut en douceur. Les liens apparaissent après 100 pixels de défilement vers le bas.

<?php
/* Plugin Name: Scroll To Top Version: 1.0 Author: Mistic Author URI: [url]http://www.strangeplanet.fr[/url] */
add_event_handler('loc_end_page_header', 'scroll_to_top');

function scroll_to_top()
{
  global $template;
  $template->set_prefilter('header', 'scroll_to_top_pref', 100);
}

function scroll_to_top_pref($content)
{
  $search = '<body id="{$BODY_ID}">';
  $scroll = '
{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("http://cdn4.iconfinder.com/data/icons/cc_mono_icon_set/blacks/48x48/round_and_up.png") 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() > 100) {
        jQuery(".scrollup").fadeIn();
    } else {
        jQuery(".scrollup").fadeOut();
    }
});
jQuery(".scrollup").click(function(){
    jQuery("html, body").animate({ scrollTop: 0 }, 600);
    return false;
});
{/literal}{/footer_script}
<a href="#" class="scrollup">Scroll</a>';
  
  return str_replace($search, $search.$scroll, $content);
}
?>

Une image sur le plugin GuestBook

<?php
/*Plugin Name: Image on Guestbook Version: 1.0 Author: Mistic */

define('GB_IMAGE_ID', 77);
define('GB_IMAGE_SIZE', IMG_SMALL);

add_event_handler('loc_end_index', 'add_guestbook_image', EVENT_HANDLER_PRIORITY_NEUTRAL-10);

function add_guestbook_image()
{
  global $page, $template;
  
  if (@$page['section'] == 'guestbook')
  {
    $query = 'SELECT * FROM ' . IMAGES_TABLE . ' WHERE id = ' . GB_IMAGE_ID . ';';
    $picture = pwg_db_fetch_assoc(pwg_query($query));

    // -- Piwigo 2.5
    $src_image = new SrcImage($picture);
    $derivatives = DerivativeImage::get_all($src_image);
    $selected_derivative = $derivatives[GB_IMAGE_SIZE];

    $template->assign('gb_image', $selected_derivative);
    $template->set_prefilter('index', 'add_guestbook_image_prefilter');

    // -- Piwigo 2.6
    //$selected_derivative = DerivativeImage::get_one(GB_IMAGE_SIZE, $picture);

    //$template->assign('gb_image', $selected_derivative);
    //$template->set_prefilter('guestbook', 'add_guestbook_image_prefilter');
  }
}

function add_guestbook_image_prefilter($content)
{
  $search = '{if isset($comment_add)}';
  $add = '<div style="text-align:center;"><img src="{$gb_image->get_url()}" {$gb_image->get_size_htm()}"></div>';
  
  return str_replace($search, $add."\n".$search, $content);
}
?>

Masquer le champ du site web dans le formulaire d'ajout de commentaire

<?php
/*Plugin Name: Hide website field on comment form Version: 1.0 Author: plg */

add_event_handler('loc_end_picture', 'hide_website_in_comment');
function hide_website_in_comment()
{
  global $template;

  $template->set_prefilter('picture', 'hide_website_in_comment_prefilter');
}

function hide_website_in_comment_prefilter($content, &$smarty)
{
  $pattern = '#<p><label for="website_url">.*WEBSITE_URL}"></p>#ms';
  $replacement = '';

  $content = preg_replace($pattern, $replacement, $content);

  return $content;
}
?>

Masquer les albums dans la barre de menu sur la page de connexion

<?php
/*Plugin Name: Hide albums in menubar on login page Version: 1.0 Author: plg */

add_event_handler('blockmanager_apply' , 'identification_hide_menubar_albums', EVENT_HANDLER_PRIORITY_NEUTRAL+10);
function identification_hide_menubar_albums($menu_ref_arr)
{
  if (script_basename() == 'identification')
  {
    $menu_ref_arr[0]->hide_block('mbCategories');
  }
}

Nombre de photos personnalisé
Cela permet de définir un nombre particulier de photos par page pour chaque album.

<?php
/* Plugin Name: Custom photo number Version: 1.0  Author: ddtddt & Mistic */

add_event_handler('loc_begin_index', 'modifynbthumbnail');

global $customPhotoNumber;

$customPhotoNumber = array(
  1 => 5, // 5 photos per page for album #1
  2 => 10, // 10 photos per page for album #2
);

function modifynbthumbnail()
{
  global $page, $customPhotoNumber;

  if (!empty($page['category']['id']) && isset($customPhotoNumber[$page['category']['id']]))
  {
    $page['nb_image_page'] = $customPhotoNumber[$page['category']['id']];
  }
}
Aucun de nous ne sait ce que nous savons tous, ensemble.

WWW