•  » Utilisation
  •  » [Résolu] Bonne méthode et bon code ?

#1 2013-01-06 02:15:05

barbichou
Membre
2013-01-06
85

[Résolu] Bonne méthode et bon code ?

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 :

Code:

{'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 :

Code:

<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

#2 2013-01-06 09:31:42

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16915

Re: [Résolu] Bonne méthode et bon code ?

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.


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

En ligne

#3 2013-01-06 09:32:45

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16915

Re: [Résolu] Bonne méthode et bon code ?

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


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

En ligne

#4 2013-01-06 10:41:56

barbichou
Membre
2013-01-06
85

Re: [Résolu] Bonne méthode et bon code ?

Bonjour,

Merci pour tes explications.

@+ ;)

Hors ligne

#5 2013-01-17 11:33:46

barbichou
Membre
2013-01-06
85

Re: [Résolu] Bonne méthode et bon code ?

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

#6 2013-01-17 12:31:32

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16915

Re: [Résolu] Bonne méthode et bon code ?

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 )


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

En ligne

#7 2013-01-17 17:09:24

barbichou
Membre
2013-01-06
85

Re: [Résolu] Bonne méthode et bon code ?

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 ?)

Code:

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

#8 2013-01-17 17:38:02

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3561

Re: [Résolu] Bonne méthode et bon code ?

la méthode get_vars a été remplacée par get_template_vars

et assign_vars remplacée par assign

Hors ligne

#9 2013-01-17 18:25:00

barbichou
Membre
2013-01-06
85

Re: [Résolu] Bonne méthode et bon code ?

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

#10 2013-01-17 18:27:53

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3561

Re: [Résolu] Bonne méthode et bon code ?

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

#11 2013-01-17 19:00:36

barbichou
Membre
2013-01-06
85

Re: [Résolu] Bonne méthode et bon code ?

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 :

Code:

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

#12 2013-01-17 19:15:56

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3561

Re: [Résolu] Bonne méthode et bon code ?

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

#13 2013-01-17 19:19:03

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3561

Re: [Résolu] Bonne méthode et bon code ?

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

#14 2013-01-18 10:17:17

barbichou
Membre
2013-01-06
85

Re: [Résolu] Bonne méthode et bon code ?

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)

Code:

<?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

#15 2013-01-18 10:49:18

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3561

Re: [Résolu] Bonne méthode et bon code ?

pour modifier le caractère dans le fil d'Ariane il y a plus simple :

$conf['level_separator'] = ' > ';

Hors ligne

  •  » Utilisation
  •  » [Résolu] Bonne méthode et bon code ?

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact