Re-bonjour :)
dans mes vignettes de photos, je veux masquer le titre et afficher le nombre de vues.
Soit le HTML suivant pour le thème stripped :
<span class="wrap1"> <span class="wrap2 "> <span class="thumbLegend "> Sciences 89 : Molière par elle-même (2010) <img class="icon" alt="(!)" src="themes/Mystripped/icon/recent.png" title="photos ajoutées au cours des 339 derniers jours"> <div class="thumbStats"> <span class="nb-hits">vue 151 fois</span> </div> </span> </span>
Je peux masquer "thumblegend" en css de la manière suivante :
span.wrap1 span.thumbLegend {display: none;}
Ma question est (je n'y suis pas arrivé) est-ce que je peux afficher "#thumbStats .nb-hits", sachant que thumbStats est une div imbriquée dans thumbLegend ?
J'ai résolu le pb en passant par les templates, seulement voila : à chaque fois que je fais un thème enfant, il faut que je refasse un template extension. Et des thèmes enfants, je vais en avoir beaucoup pour mes bannières (10 à 20 !), alors si je pouvais résoudre par local/css/rules.css...
Hors ligne
bonjour je pense que la solution la plus simple est ... le php ! non seulement tu n'auras pas 36 thèmes enfants mais des modifications de templates pérennes
que veux tu faire d'une façon plus globale et précise ?
Hors ligne
Ah le php je ne sais mm pas vraiment à quoi ça sert...
Alors ce que je veux faire :
Pour chaque parties de mon site (théâtre, danse, cirque, arts de la rue, marionnettes, contes, clowns, musiques, divers) X2 pour les archives, plus quelques autres, je veux mettre une bannière différente.
j'ai rentré <div id="banner"></div> dans configuration option, et pour chaque theme j'ai un css spécifique avec des regles qui peuvent varier et un pointage vers la bannière. Je t'envoie en mp l'adresse de mon site de test, tu pourras voir.
Hors ligne
j'avais fait ceci pour attribuer le nom d'un album à une variable tpl
add_event_handler('loc_after_page_header', 'mybanner'); function mybanner() { global $page, $template; $cat_name=array('one country','one more','one more','one more etc');//change Value here !!!!!!!!! if (isset($page['category'])) { if (isset($page['category']['upper_names']) ) { $upper_names=array(); foreach ($page['category']['upper_names'] as $upper) { $upper_names[]=$upper['name']; } foreach ($cat_name as $pays) { if (in_array($pays, $upper_names )) { $template->assign('cat_name', $pays); } } } else { $template->assign('cat_name', $page['category']['name']); } } }
c'était pour des album par pays, où un album "vietnam" pouvait avoir des sous album mais la bannière serait celle de vietnam
il suffit ensuite de gérer le css ou les images avec {$cat_name}
dans ton cas tu mettre $cat_name=array('danse'... puis
{html_head}{literal}
#banner {
background: url("http://instants-de-scenes.com/accueil/{$cat_name}.jpg") repeat scroll 0 0 transparent;
...
{/literal}{/html_head}
dans local_head.tpl du thème enfant
pour le nombre de hit
/** thumbnails.tpl **/ add_event_handler('loc_end_index_thumbnails', 'mine_thumbnails'); function mine_thumbnails($tpl_thumbnails_var) { global $template; $template->set_prefilter('index_thumbnails', 'mine_prefilter_thumbnails'); $template->set_prefilter('stuffs', 'mine_prefilter_thumbnails'); return $tpl_thumbnails_var; } function mine_prefilter_thumbnails($content, &$smarty) { $search = '#<span class="thumbLegend.*isset\(\$thumbnail\.NB_HITS\)#'; $replacement = '<span class="thumbLegend"> <div class="thumbStats"> {if isset($thumbnail.NB_HITS'; return preg_replace($search, $replacement, $content); }
mais à tester !
Hors ligne
merci pour cette réponse fournie :)
1) pour la bannière
le code que tu m'as donné au début, tu le rentres où ?
et puis mes thèmes enfant n'ont pas de local head.tpl, juste un config.inc.php réduit à sa plus simple expression avec redirection vers le thème.css et le local_head.tpl du thème parent...
2) pour le nombre de hit
même question, tu le rentres où dans le thème parent ?
Est-ce qu'il sera pris en compte par les themes enfant, où faudra-t-il que je le redéclare pour chaque thème (ce que je cherche à éviter, puisque j'ai déjà une solution avec un fichier mythumbnails.tpl qui vient remplacer l'original en template-extensions) ?
Hors ligne
je te demanderai juste de chercher un peu par toi même : le code php dans config.inc.php, pour local head regarde comment les thèmes par défaut et les autres sont
je t'explique un peu mieux mybanner() : il va chercher s'il y a une correspondance entre les valeurs de $cat_name, par rapport au nom de l'album et aux album parents. Le dernière correspondance qu'il trouve sera la valeur finale : elle est alors stockée dans {$cat_name} pour être utilisé dans un fichier .tpl. Donc tu personalise $cat_name=array..., tu nommes tes images selon le nom de l'album, et tu fais le lien entre les 2 avec le code CSS dans localhead, et avec {$cat_name}
avec cette solution tu n'as qu'un thème enfant pour toutes tes bannières
Hors ligne
A mon avis, le plus simple est de passer pour l'instant par un template perso.
D'ailleurs, le template d'origine n'est pas très bon, il faudrait inclure une classe pour le titre.
Idéalement ça devrait s'afficher comme ça :
<span class="wrap1"> <span class="wrap2 "> <span class="thumbLegend "> <span class="thumbtitle">Sciences 89 : Molière par elle-même (2010)</span> <img class="icon" alt="(!)" src="themes/Mystripped/icon/recent.png" title="photos ajoutées au cours des 339 derniers jours"> <div class="thumbStats"> <span class="nb-hits">vue 151 fois</span> </div> </span> </span>
Je note ça comme à faire pour une prochaine version mais ça pourra prendre du temps...
Hors ligne
pour flop 25
Voilà, j'ai fait ce que tu m'as dit, j'ai cherché, deux heures, et t'épargne les différents essais. J'ai compris le système de liaison mais voilà : lorsque je rentre le code dans /local/config.inc.php, avec local file editor, le site se gèle et j'aboutis sur une page blanche.
Voici mon fichier, il n'y a rien après "?>" :
<?php /* Augmentation du nombre d'utilisateurs sur la page administration à 250 */ $conf['users_page'] = 250; // comment_spam_max_links : // nombre maximum de liens dans les commentaires avant de les considérer // comme des spams ( 0 : alors 1 lien, c'est déjà considéré comme du spam). $conf['comment_spam_max_links'] = 0; // allow_html_descriptions : autoriser les administrateurs à utiliser du // HTML dans les descriptions de la galerie, des catégories et des images. $conf['allow_html_descriptions'] = true; /* Activer la fonction Adviser/Conseiller */ $conf['allow_adviser'] = true; $conf['show_picture_name_on_title'] = false; // top_number : nombre d'éléments à afficher pour les catégories spéciales // "les plus visitées", "les mieux notées". $conf['top_number'] = 100; //une banniere par discipline add_event_handler('loc_after_page_header', 'mybanner'); function mybanner() { global $page, $template; $cat_name=array('theatre','danse','musique','cirque');//change Value here !!!!!!!!! if (isset($page['category'])) { if (isset($page['category']['upper_names']) ) { $upper_names=array(); foreach ($page['category']['upper_names'] as $upper) { $upper_names[]=$upper['name']; } foreach ($cat_name as $pays) { if (in_array($pays, $upper_names )) { $template->assign('cat_name', $pays); } } } else { $template->assign('cat_name', $page['category']['name']); } } } //fin de mise en page des bannieres ?>
Hors ligne
oups je voulais dire themeconfig.php ^^ pardon ! c'est là que tt se joue de m^me avec localhead
Hors ligne
pour zaphod :
en template extension, c'est beaucoup mieux, je suis d'accord. Surtout si grâce à Flop25, j'aboutis à ne plus avoir qu'un seul thème enfant !
Perso, j'ai résolu avec un fichier mythumbnails.tpl :
{if !empty($thumbnails)} {php} global $pwg_loaded_plugins, $conf, $stripped; $this->assign('downloadMulti_loaded', isset($pwg_loaded_plugins[ 'download_multi' ])); $this->assign( 'stripped', $stripped ); {/php} <ul class="thumbList"> {strip}{foreach from=$thumbnails item=thumbnail} <li> <span class="wrap1"> <span class="wrap2 {if !($stripped.showThumbLegend)}wrap2full{/if}"> <a href="{$thumbnail.URL}"> <img class="thumbnail" src="{$thumbnail.TN_SRC}" alt="{$thumbnail.TN_ALT}" {if ((isset($thumbnail.NAME))&!($downloadMulti_loaded))}title="{$thumbnail.NAME}"{else}title="{$thumbnail.TN_TITLE}"{/if} /> {if (isset($stripped.imagePreload) & isset($stripped.imagePreloadThumbs))}<div class="preload" style="display:none;">{$thumbnail.FILE_PATH}</div>{/if} </a> </span> <span class="thumbLegend {if !($stripped.showThumbLegend)}noLegend{/if}"> {if isset($thumbnail.NB_HITS)} <span class="{if 0==$thumbnail.NB_HITS}zero {/if}nb-hits"> {$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)} </span> {/if} </span> </span> </li> {/foreach}{/strip} </ul> {/if}
C'est assez bourrin, je ne sais mm plus par quel raisonnement j'en suis arrivé là (tout ça finit par se mélanger un peu dans ma tête...)je me suis contenté de faire sauter une partie du code, mais ça marche...
Hors ligne
ah ok Flop ! pg, je m'y remet tout de suite :) merci de ton intervention rapide
Le plus drôle, c'est que j'avais commencé par le mettre là :) et puis je me suis dit c'est pas ce qu'on m'a demandé, soyont rigoureux...
une question : dans le php tu évoques "function mybanner" et dans le code à rentrer en local.head.tpl tu écris "#banner". Ce ne serait pas "#mybanner", par hasard ?
Dernière modification par makno (2012-01-09 12:55:10)
Hors ligne
makno a écrit:
C'est assez bourrin, je ne sais mm plus par quel raisonnement j'en suis arrivé là (tout ça finit par se mélanger un peu dans ma tête...)je me suis contenté de faire sauter une partie du code, mais ça marche...
c'est ce que le 2° code php est censé faire aussi
Hors ligne
Bon, ça avance :) ça ne marche pas encore , mais ça ne bloque pas tout. je n'obteins pas l'effet escompté, mais juste une copie d'une partie du texte du localhead au dessus de mon site
Ci-joint mon themeconf. et mon localhead. tous les deux de mon thème enfant. J'ai l'impression que le pb vient de l'endroit où je dois mettre le code dans le fichier. J'ai essayé plusieurs emplacements mais sans succès
themeconf.inc.php
<?php /* Theme Name: stripped Version: 2.0.3 Description: stripped Theme Theme URI: http://piwigo.org/ext/extension_view.php?eid=471 Author: Julien Capitaine (Zaphod on Piwigo forums) Author URI: http://www.audreyetjulien.fr/galerie */ global $conf, $user, $stripped; // Need upgrade? if (!isset($conf['stripped'])) include(PHPWG_THEMES_PATH.'stripped/admin/upgrade.inc.php'); $stripped = array_merge( unserialize( $conf['stripped'] ), (array)$stripped ); // Need upgrade from v1.x? if (!isset($stripped['themeStyle'])) { include(PHPWG_THEMES_PATH.'stripped/admin/upgrade.inc.php'); $stripped = array_merge( unserialize( $conf['stripped'] ), (array)$stripped ); } add_event_handler('loc_begin_page_header', 'set_config_values'); function set_config_values() { global $template, $stripped; $template->assign( 'stripped', $stripped ); } $themeconf = array( 'parent' => 'default', 'load_parent_css' => false, 'load_parent_local_head' => false, 'name' => 'stripped', 'theme_dir' => 'stripped', 'icon_dir' => 'themes/stripped/icon', 'admin_icon_dir' => 'themes/default/icon/admin', 'mime_icon_dir' => 'themes/default/icon/mimetypes/', 'local_head' => 'local_head.tpl', ); load_language('theme.lang', PHPWG_THEMES_PATH.'stripped/'); pwg_set_session_var('show_metadata', true); // max number of thumbnails by page add_event_handler('loc_begin_index', 'modify_nb_thumbnail_page'); function modify_nb_thumbnail_page() { global $user, $page, $stripped; if (!isset($stripped['maxThumb'])) { $stripped['maxThumb']=15;} $user['nb_image_page']=$stripped['maxThumb']; $page['nb_image_page']=$stripped['maxThumb']; } if (isset($stripped['imagePreload']) && ($user['theme'] == 'stripped')) { add_event_handler('loc_end_picture', 'assign_next_images_url'); } function assign_next_images_url() { global $page, $template, $conf, $stripped; $nb_image =$stripped['imagePreloadNb']; $nb_max = $page['last_rank'] - $page['current_rank']; $nb_image = min ($nb_image, $nb_max); if ($nb_image < 1) return; for ($n = 1; $n <= $nb_image; $n++) { $pagenext[$n] = $page['items'][ $page['current_rank'] + $n ]; } $picturenext = array(); $idnext = array(); for ($n = 1; $n <= $nb_image; $n++) { array_push($idnext, $pagenext[$n]); } $query = ' SELECT * FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $idnext).') ;'; $result = pwg_query($query); while ($rownext = pwg_db_fetch_assoc($result)) { for ($n = 1; $n <= $nb_image; $n++) { if (isset($pagenext[$n]) and $rownext['id'] == $pagenext[$n]) {$in = $n;} } $picturenext[$in] = $rownext; $picturenext[$in]['is_picture'] = false; if (in_array(get_extension($rownext['file']), $conf['picture_ext'])) { $picturenext[$in]['is_picture'] = true; } $picturenext[$in]['image_url'] = get_image_url( $picturenext[$in] ); } for ($n = 1; $n <= $nb_image; $n++) { if (isset($picturenext[$n]['image_url'])) { $image_next[$n] = $picturenext[$n]['image_url']; } } $template->assign('U_IMGNEXT', $image_next ); } //une bannière différente par discipline add_event_handler('loc_after_page_header', 'mybanner'); function mybanner() { global $page, $template; $cat_name=array('theatre','danse');//change Value here !!!!!!!!! if (isset($page['category'])) { if (isset($page['category']['upper_names']) ) { $upper_names=array(); foreach ($page['category']['upper_names'] as $upper) { $upper_names[]=$upper['name']; } foreach ($cat_name as $pays) { if (in_array($pays, $upper_names )) { $template->assign('cat_name', $pays); } } } else { $template->assign('cat_name', $page['category']['name']); } } } ?>
localhead.pl
{html_head}{literal} #mybanner { background: url("http://instants-de-scenes.com/accueil/theatre.jpg") repeat scroll 0 0 transparent; background: url("http://instants-de-scenes.com/accueil/danse.jpg") repeat scroll 0 0 transparent; } {/literal}{/html_head} {php} global $template, $stripped; $template->assign( 'stripped', $stripped ); {/php} {if $load_css} {combine_css path="themes/default/print.css" order=-10} {if !$stripped.noLowercase} {combine_css path="themes/stripped/lowercase.css" order=-10} {/if} {if ($stripped.themeStyle == 'black') } {combine_css path="themes/stripped/theme-black.css" order=-10} {else} {if ($stripped.themeStyle == 'white') } {combine_css path="themes/stripped/theme-white.css" order=-10} {else} {combine_css path="themes/stripped/theme-original.css" order=-10} {/if} {/if} <!--[if lt IE 7]> <link rel="stylesheet" type="text/css" href="{$ROOT_URL}themes/stripped/fix-ie5-ie6.css"> {if ($stripped.themeStyle != 'original') } <link rel="stylesheet" type="text/css" href="{$ROOT_URL}themes/stripped/fix-ie6-plus.css"> {/if} <![endif]--> <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" href="{$ROOT_URL}themes/stripped/fix-ie7.css"> <![endif]--> {/if} {if $BODY_ID=='theCategoryPage' || $BODY_ID=='thePicturePage'} {include file='config.js.tpl'} {/if} {if ($BODY_ID=='theCategoryPage')} {combine_script id='scripts-tcp' load='header' require='jquery.effects.blind' path='themes/stripped/js/scripts-tcp.js'} {/if} {if $BODY_ID=='thePicturePage'} {combine_script id='scripts-tpp' load='header' require='jquery' path='themes/stripped/js/scripts-tpp.js'} {/if} {if isset($stripped.imagePreload)} {combine_script id='preload' load='header' require='jquery' path='themes/stripped/js/preload.js'} {/if} <script type="text/javascript"> document.documentElement.className = 'js'; </script> {if !$stripped.thumbFrame} <script type="text/javascript"> document.documentElement.className = 'ntfd'; document.documentElement.className = 'js ntf'; </script> {/if}
Hors ligne
ps :
dans le php tu évoques "function mybanner" et dans le code à rentrer en local.head.tpl tu écris "#banner". Ce ne serait pas "#mybanner", par hasard ?
Hors ligne