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)
Hors ligne
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 ;-)
Hors ligne
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)
Hors ligne
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');
?>
Hors ligne
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 !
Hors ligne
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)
Hors ligne
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)
Hors ligne
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)
Hors ligne
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
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
$template->assign('a-propos');
http://www.smarty.net/docsv2/fr/api.assign.tpl
return $total_images;
cf plugin skeleton
Hors ligne
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...
Hors ligne
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
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
Merci encore flop25
Alors quand j'essaye ça :
<?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
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 :
SELECT COUNT(DISTINCT(image_id)) as total FROM '.phpwebgallery_.'image_category';
j'ai ça :
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)
Hors ligne
Bonjour,
si tu utiise $user il te faut le déglarer en global comme template/page
Hors ligne
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)
Hors ligne