Salut,
Je découvre Piwigo depuis hier !
J'ai un blog Wordpress et j'ai décidé d'y intégrer Piwigo. Comme j'ai entièrement construit mon blog, je désire évidemment que mon Piwigo y soit intégré le mieux possible.
J'ai donc suivi le wiki, j'ai créé mon propre thème sur la base du thème élégant en tant que parent de défaut puis créé un sous répertoire template. Le but est de tout customiser à volonté.
Pour me faire la main, j'ai décidé de m'attaquer à un fichier simple, le footer.tpl car ce type de fichier et cette façon de travailler n'existent pas sous Wordpress.
Je suis allé lire la doc smarty et j'ai ajouté mon premier code pour ajouter un copyright juste avant "propulsé par Piwigo, contacter le webmestre" etc...
Mon fichier footer.tpl était donc ainsi à l'origine :
{'Powered by'|@translate} <a href="{$PHPWG_URL}" class="Piwigo">Piwigo</a> {$VERSION} {if isset($CONTACT_MAIL)} - <a href="mailto:{$CONTACT_MAIL}?subject={'A comment on your site'|@translate|@escape:url}">{'Contact webmaster'|@translate}</a>
et est devenu ceci :
<strong>© {$smarty.now|date_format:"%Y"} Terra Morchellarum</strong> - {'Powered by'|@translate} <a href="{$PHPWG_URL}" class="Piwigo">Piwigo</a> {$VERSION} {if isset($CONTACT_MAIL)} - <a href="mailto:{$CONTACT_MAIL}?subject={'A comment on your site'|@translate|@escape:url}">{'Contact webmaster'|@translate}</a> {/if}
Ce code fonctionne, mais j'ai 3 petites questions :
- cette démarche est-elle la bonne sous Piwigo pour bricoler son thème perso ?
- peut-on faire plus court et simple que {$smarty.now|date_format:"%Y"} pour afficher l'année ?
- s'il s'agissait d'une fonction bien plus compliquée nécessitant ->assign, dans quel fichier et à quel endroit je dois le mettre pour éviter sa disparition en cas de mise à jour ?
Merci d'avance.
@+ ;)
Hors ligne
barbichou a écrit:
- s'il s'agissait d'une fonction bien plus compliquée nécessitant ->assign, dans quel fichier et à quel endroit je dois le mettre pour éviter sa disparition en cas de mise à jour ?
Bonjour,
Tu peux mettre cela dans themeconf.inc.php si ta modification est spécifique à ce thème ou faire un plugin perso si c'est pour plusieurs thème.
Hors ligne
barbichou a écrit:
- cette démarche est-elle la bonne sous Piwigo pour bricoler son thème perso ?
il y a aussi des plugins pour ajouter des personnalisations par exemple [extension by ddtddt] Perso Footer
Hors ligne
Bonjour,
Je reviens vers vous pour une question qui me taraude.
Je continue ma personnalisation - intégration de piwigo sur mon site.
Pour cela, j'ai du modifier le fichier index.php. Celui-ci étant en dehors de mon thème personnel, s'il y a une mise à jour, les modifications seront effacées.
Comment faire pour que ces modifications ne soient pas effacées en cas de mise à jour ?
Merci d'avance.
@+ ;)
Hors ligne
Bonjour,
il faut faire un plugin personnel qui permet d'ajouter des action à index en utilisant les trigger
par exemple pour exécuter un code avant le chargement de la page index utiliser 'loc_begin_index' dans le plugin perso
(pour voir l'utilisation regarder [extension by mistic100] Skeleton )
Hors ligne
Bonjour,
J'ai testé avec skeleton et le plugin personnel de local file editor, impossible d'obtenir le résultat escompté par leurs intermédiaires, les subtilité de piwigo m'échappent encore. Le code fonctionne parfaitement dans index.php et modifie correctement certaines variables dans index.tpl et header.tpl.
Je suis allé fouiller dans la doc et j'ai testé dans local file editor plugin personnel ce bout de code qui pourrait me servir de base mais malheureusement celui-ci ne fonctionne pas (ou plus ?)
add_event_handler('loc_end_index', 'personal_cat_counter_removal', 10 ); function personal_cat_counter_removal() { // Remove image category counter above content only global $template; $s = $template->get_var('TITLE'); $p_end = strpos($s, ' ['); $p_end = ( $p_end == 0 ) ? strlen($s) : $p_end; $template->assign_vars( array( 'TITLE' => substr($s, 0, $p_end) ) ); }
le code me renvoie une erreur fatale : " Call to undefined method Template::get_var()"
je suppose que je dois faire appel à des fichiers inc ?
Une idée des corrections à apporter pour appeler une variable?
Ensuite je devrais pouvoir me débrouiller seul jusqu'à la prochaine fois :)
@+ ;)
Hors ligne
Salut,
Cela résout effectivement mon problème, l'extrait de code ci-dessus ne fonctionne pas, mais mon code fonctionne parfaitement depuis local file editor plugin personnel sans modifier le fichier index.php original.
Un grand merci. Ce qui manque à Piwigo c'est une liste des fonctions, un peu comme le codex wordpress, ça évitrait de venir vous solliciter pour pas grand chose...
Une dernière question, dois-je ajouter la protection anti hacker au début du fichier ou c'est inutile pour un plugin personnel ?
@+ ;)
Hors ligne
C'est que ça prend un temps fou d'écrire un codex, alors que toutes les méthodes du dossier include sont bien documentées
il y a aussi ..../tools/triggers_list.php pour la liste de tous les triggers
la "protection anti hacker" ? connais pas
Hors ligne
Je me doute qu'un codex c'est hyper long, triggers_list je prends, il m'intéresse bien ce fichier...
Pour les hacker je pensais bêtement à cette ligne que l'on retrouve dans les plugins :
defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
Dans la doc c'est conseillé pour les créations de plugin, dans skeleton, elle y est, pour un plugin personnel je suppose qu'elle doit y être, celui-ci étant activé comme n'importe quel plugin.
@+ ;)
Hors ligne
dans le plugin personnel si vous ne la mettez pas vous même rien ne la rajoutera
après si quelqu'un essaye d’accéder directement au fichier la seul chose qu'il aura c'est "Fatal error: Undefined function add_event_handler" mais c'est quand meme bien de la mettre
la chose vraiment important c'est la protection des inputs ($_GET et $_POST) pour ne pas se faire hacker la BDD (ou juste planter sur les apostrophes et guillemets)
Hors ligne
une version plus jolie et plus à jour (Piwigo 2.5) de la liste des triggers est dispo sur http://piwigo.us/dev/mistic100/triggers/
Hors ligne
Salut,
Merci pour le lien, super utile et intéressant pour effectuer des recherches.
cela fait environ 2 semaines que je découvre piwigo, je suis loin d'avoir tout compris :)
Je donne ci-dessous mes modifications à partir du plugin local file editor, onglet plugin personnnel au cas où certains chercheraient des solutions similaires.
La premières fonction réduit le titre de la page :
au lieu d'avoir "accueil / mon album / mon / sous album / sous album du sous album" etc... dans le titre de la page et dans la balise méta par défaut, on obtient simplement "sous album du sous album"
La seconde fonction modifie le fil d'ariane :
les / sont remplacés par des > (comme dans le reste de mon site)
le nombre de photos entre parenthèses est supprimé (déjà présent dans le menubar)
<?php /* Plugin Name: Plugin Personnel Version: 1.0 Description: Plugin Personnel Plugin URI: http://piwigo.org Author:barbichou Author URI: */ defined('PHPWG_ROOT_PATH') or die('Hacking attempt!'); add_event_handler('loc_end_page_header', 'new_page_title'); function new_page_title() { //change le nom de la page en ne gardant que le sous album en cours // éventuellement la méta global $template; $titre = $template->get_template_vars('PAGE_TITLE'); $pos = strripos($titre, " / ",-1); if ($pos===false) { $template->assign( array( 'PAGE_TITLE' =>$titre ) ); }else { $template->assign( array( 'PAGE_TITLE' =>substr($titre,$pos+3) ) ); } } add_event_handler('loc_end_index', 'new_breadcrumbs'); function new_breadcrumbs() { // Remplace les / par des > dans le fil d'ariane et retire le nombre de photos global $template; $s = $template->get_template_vars('TITLE'); $remplace = str_replace(" / "," > ", $s); $pos=strripos($remplace,"["); $template->assign( array( 'TITLE' => substr($remplace,0,$pos) ) ); } ?>
@+ ;)
Hors ligne