Annonce

  •  » Styles
  •  » [Résolu] Envoi nombre total de photos publiques dans un template

#1 2016-06-06 15:22:19

titounet
Membre
Mauvezin, Gers
2010-06-07
50

[Résolu] Envoi nombre total de photos publiques dans un template

Bonjour,

Je cherche une âme charitable pour m'aider, mon niveau technique étant médiocre.

Alors voilà mon problème : dans ma page "A propos" customisée via le fichier about.tpl, je cherche à intégrer l'affichage du nombre de photos dans la galerie, exactement comme en bas du menu  "Albums" dans le standard Piwigo.

Alors dans ce but, un peu bêtement, j'intègre dans mon fichier about.tpl le bout de code :
{$block->data.NB_PICTURE|@translate_dec:'%d photo':'%d photos'} récupéré dans menubar_categories.tpl,  mais rien ne s'affiche. Alors je me dis que ma démarche est un peu simpliste et qu'il faut sans doute "appeler" autre chose dans le fichier about.tpl.

J'ai sillonné le forum mais je n'ai pas trouvé de réponse dans un sujet antérieur.

Quelqu'un peut-il m'aider s'il vous plaît ?

Version de Piwigo: 2.8.1
Version de PHP: 7.0.6
Version de MySQL: 5.5.46
URL Piwigo: http://www.beouetsavic.fr

Dernière modification par titounet (2016-06-08 22:37:53)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#2 2016-06-06 21:13:53

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

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Bonjour,

1/ je rappels qu'il n'est pas bon de modifier les fichiers de piwigo

2/ pour utiliser une valeur dans ton template il faut que tu envois la valeur dans le template !
donc la tu essais d'utiliser des infos envoyé au template du menu, about.tpl ne les connait pas.

en conclusion, je dirais que tu ferais mieux de faire un plugin pour cela ;-)


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.

Hors ligne

#3 2016-06-06 22:17:04

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

ddtddt a écrit:

Bonjour,

1/ je rappels qu'il n'est pas bon de modifier les fichiers de piwigo

2/ pour utiliser une valeur dans ton template il faut que tu envois la valeur dans le template !
donc la tu essais d'utiliser des infos envoyé au template du menu, about.tpl ne les connait pas.

en conclusion, je dirais que tu ferais mieux de faire un plugin pour cela ;-)

Merci ddtddt pour ta réponse.

Bon, pour commencer, je vais arrêter  de me comporter comme un voyou ;-) : je vais faire un template-extension d'about.tpl (je ne savais même pas ce que c'était qu'un template-extension avant ce soir...)

Par contre pour mon problème initial, je ne suis pas plus avancé, car autant je saurai tout seul écrire la requête sql qui va bien, mais il me semble qu'il faut utiliser le langage spécifique "smarty" pour écrire le plugin personnel qui permet d'envoyer les données souhaitées dans le remplace-extension ou je suis encore à côté de la plaque ?

Dernière modification par titounet (2016-06-07 08:00:29)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#4 2016-06-07 00:08:56

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Bon maintenant j'ai un template-extension a-propos.tpl se substituant à about.tpl

Maintenant je m'attaque au plugin personnel mais je tâtonne complètement.... pour l'instant j'en suis là mais c'est incomplet et sans doute erroné :

<?php
/*
Plugin Name: Afficher dans le template "a-propos" le nombre total d'images
*/

global $template;

$query = '
SELECT COUNT(DISTINCT(image_id)) as total
  FROM '.PREFIX_TABLE.'image_category';
if (count($user['restrictions']) > 0)
{
  $query.= '
  WHERE category_id NOT IN ('.$user['forbidden_categories'].')';
}
$query.= '
;';

$template->clear_assign('a-propos');
                 
?>


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#5 2016-06-07 05:57:29

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

Re: [Résolu] Envoi nombre total de photos publiques dans un template

titounet a écrit:

$template->clear_assign('a-propos');

clear c'est pour supprimer une affectation je pense que c'est pas cela que tu veux !


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.

Hors ligne

#6 2016-06-07 08:05:44

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

ddtddt a écrit:

titounet a écrit:

$template->clear_assign('a-propos');

clear c'est pour supprimer une affectation je pense que c'est pas cela que tu veux !

Bonjour ddtddt,

En effet ce n'est pas ce que je veux.

Alors c'est peut-être plutôt :

$template->assign('a-propos');

"a-propos" étant mon template-extension

Au final ce que je veux c'est afficher quelque part, dans la page générée par le template, le nombre total d'images dans la galerie (nombre d'images unique accessible par un utilisateur guest).

J'ai renommé le sujet de ce post pour qu'il corresponde mieux à ma question, et éviter la mauvaise idée de modifier directement un fichier de template natif

Dernière modification par titounet (2016-06-07 13:27:00)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#7 2016-06-07 12:26:10

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Je ne sais pas si ça marche et comment déclarer la variable  dans le template, mais j'essaye encore d'avancer à tâton :

<?php
/*
Plugin Name: Total Images pour tpl a-propos
*/

function total_image_for_template($total_images)

{

global $template;

{
 
$query = '
SELECT COUNT(DISTINCT(image_id)) as total
  FROM '.PREFIX_TABLE.'image_category';
if (count($userdata['restrictions']) > 0)
{
  $query.= '
  WHERE category_id NOT IN ('.$userdata['forbidden_categories'].')';
}
$query.= '
;';

$result = pwg_query($query);

}

$template->assign('a-propos');

return $total_images;

}
               
?>

Dernière modification par titounet (2016-06-07 12:27:52)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#8 2016-06-07 18:13:33

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Bon j'ai réussi à déclarer la variable dans le fichier template-extension : {$total_images}
Mais rien ne s'affiche. Et au mieux en bidouillant mon code je plante mon site.
Mon script est pourri...

Dernière modification par titounet (2016-06-07 18:28:06)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#9 2016-06-07 19:59:45

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] Envoi nombre total de photos publiques dans un template

faites les chose petit à eptit : voyez avec des echo si les variables ont les valeurs que vous souhaitez
là le problème c'est que vous avez créé une fonction qui n'est pas appelée :) Donc vous définissez ce qu'est une pomme mais jamais vous dites où la pomme doit apparaitre dans le monde
regardez le concept de trigger avec le plugin de démo Skeleton

Hors ligne

#10 2016-06-07 20:04:19

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Code:

function total_image_for_template($total_images)

{

global $template;

{
 
$query = '
SELECT COUNT(DISTINCT(image_id)) as total
  FROM '.PREFIX_TABLE.'image_category';
if (count($userdata['restrictions']) > 0)
{
  $query.= '
  WHERE category_id NOT IN ('.$userdata['forbidden_categories'].')';
}
$query.= '
;';

$result = pwg_query($query);

}

jusque là tout va apriori bien
mais

Code:

$template->assign('a-propos');

http://www.smarty.net/docsv2/fr/api.assign.tpl

Code:

return $total_images;

cf plugin skeleton

Hors ligne

#11 2016-06-07 20:34:35

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

flop25 a écrit:

faites les chose petit à eptit : voyez avec des echo si les variables ont les valeurs que vous souhaitez
là le problème c'est que vous avez créé une fonction qui n'est pas appelée :) Donc vous définissez ce qu'est une pomme mais jamais vous dites où la pomme doit apparaitre dans le monde
regardez le concept de trigger avec le plugin de démo Skeleton

Merci beaucoup flop25 pour ce retour et les conseils, je vais continuer à essayer d'obtenir quelque chose, mais je galère vraiment...


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#12 2016-06-07 21:35:06

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] Envoi nombre total de photos publiques dans un template

titounet a écrit:

Code:

return $total_images;

cf plugin skeleton

skeleton je suppose que ce n'est pas pour l'installer mais regarder dans les fichiers les modèles de scripts ?

oui Au final j'aime pas trop la façon dont il explique ou pas justement

regardez
[Github] Pure_default file themeconf.inc.php@L94
peut être qqchose du type

Code:

add_event_handler('loc_after_page_header', 'Pure_default_after_page_header');
function Pure_default_after_page_header()
{
  global $template, $page;
  if (isset($page['body_id']) and $page['body_id'] == 'theAboutPage')
  {
    $query... etc
$template->assign('MaVariable', $valeur); // ou $result directement

  }
}

Hors ligne

#13 2016-06-07 22:12:58

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Merci encore flop25

Alors quand j'essaye ça :

Code:

<?php
/*
Plugin Name: Total Images pour tpl a-propos
*/

add_event_handler('loc_after_page_header', 'Pure_default_after_page_header');
function Pure_default_after_page_header()
{
  global $template, $page;
  if (isset($page['body_id']) and $page['body_id'] == 'theAboutPage')
  {
    
$query = '
SELECT COUNT(DISTINCT(image_id)) as total
  FROM '.PREFIX_TABLE.'image_category';
if (count($user['restrictions']) > 0)
{
  $query.= '
  WHERE category_id NOT IN ('.$user['forbidden_categories'].')';
}
$query.= '
;';

$result = pwg_query($query);
    
$template->assign('TOTAL_IMAGES', $result); // ou $result directement

  }
}
  
                
?>

J'obtiens ça sur la page

Code:

Notice: Use of undefined constant PREFIX_TABLE - assumed 'PREFIX_TABLE' in /home/titou/www/beouetsavic/plugins/PersonalPlugin/main.inc.php on line 15

Notice: Undefined variable: user in /home/titou/www/beouetsavic/plugins/PersonalPlugin/main.inc.php on line 16


Warning:  [mysql error 1146] Table 'titouvic.PREFIX_TABLEimage_category' doesn't exist

SELECT COUNT(DISTINCT(image_id)) as total
  FROM PREFIX_TABLEimage_category
; in /home/titou/www/beouetsavic/include/dblayer/functions_mysqli.inc.php on line 832

Bon j'imagine que c'et l'adresse de la table qui est mauvaise , et quand j'essaye ça à la place :

Code:

SELECT COUNT(DISTINCT(image_id)) as total
  FROM '.phpwebgallery_.'image_category';

j'ai ça :

Code:

Notice: Use of undefined constant phpwebgallery_ - assumed 'phpwebgallery_' in /home/titou/www/beouetsavic/plugins/PersonalPlugin/main.inc.php on line 15

Notice: Undefined variable: user in /home/titou/www/beouetsavic/plugins/PersonalPlugin/main.inc.php on line 16

J'ai l'impression que n'arrive pas à pointer vers la table...

Dernière modification par titounet (2016-06-07 22:25:41)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

#14 2016-06-07 22:22:33

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

Re: [Résolu] Envoi nombre total de photos publiques dans un template

Bonjour,

si tu utiise $user il te faut le déglarer en global comme template/page


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.

Hors ligne

#15 2016-06-07 22:26:25

titounet
Membre
Mauvezin, Gers
2010-06-07
50

Re: [Résolu] Envoi nombre total de photos publiques dans un template

ddtddt a écrit:

Bonjour,

si tu utiise $user il te faut le déglarer en global comme template/page

OK ddtddt,
si je rajoute $user à la ligne global $template, $page;
je n'ai plus le message d'erreur "Undefined variable: user..."

Une autre bonne nouvelle est que ces messages d'erreur ne s'affichent que sur la page "/about" qui est bien la page où je souhaite afficher la variable

Dernière modification par titounet (2016-06-07 22:29:36)


Version de Piwigo: 2.9.5
PHP: 7.3
Thème Piwigo : Bootstrap Darkroom
URL Piwigo: https://www.beouetsavic.fr

Hors ligne

  •  » Styles
  •  » [Résolu] Envoi nombre total de photos publiques dans un template

Pied de page des forums

Propulsé par FluxBB

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