•  » Styles
  •  » [Résolu] résoudre par le css plutot que par un template

#1 2012-01-08 19:02:53

makno
Membre
Nantes
2007-10-24
1273

[Résolu] résoudre par le css plutot que par un template

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 :

Code:

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

Code:

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


Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#2 2012-01-08 19:05:37

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] résoudre par le css plutot que par un template

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

#3 2012-01-08 19:27:43

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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.


Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#4 2012-01-08 19:50:22

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] résoudre par le css plutot que par un template

j'avais fait ceci pour attribuer le nom d'un album à une variable tpl

Code:

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

Code:

/** 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

#5 2012-01-08 20:15:26

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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


Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#6 2012-01-08 23:41:53

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] résoudre par le css plutot que par un template

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

#7 2012-01-09 00:56:13

Zaphod
Former Piwigo Team
Toulouse
2006-11-13
2422

Re: [Résolu] résoudre par le css plutot que par un template

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 :

Code:

<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

#8 2012-01-09 01:01:52

Zaphod
Former Piwigo Team
Toulouse
2006-11-13
2422

Re: [Résolu] résoudre par le css plutot que par un template

Sinon un truc à tenter, sait-on jamais :

Code:

span.wrap1 span.thumbLegend:first-line {display: none;}

Hors ligne

#9 2012-01-09 12:36:26

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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

Code:

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

Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#10 2012-01-09 12:39:39

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] résoudre par le css plutot que par un template

oups je voulais dire themeconfig.php ^^ pardon ! c'est là que tt se joue de m^me avec localhead

Hors ligne

#11 2012-01-09 12:49:12

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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 :

Code:

{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...


Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#12 2012-01-09 12:50:26

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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)


Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#13 2012-01-09 12:52:16

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] résoudre par le css plutot que par un template

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

#14 2012-01-09 13:23:38

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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

Code:

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

Code:

{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}

Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

#15 2012-01-09 13:24:38

makno
Membre
Nantes
2007-10-24
1273

Re: [Résolu] résoudre par le css plutot que par un template

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 ?


Instants de Scènes, c'est là ! Sur mon site, vous trouverez 600 projets artistiques et 20 000 photos dans tous les domaines des arts vivants : théâtre, clown, danse, arts de la rue, conte, cirque, etc...

Hors ligne

  •  » Styles
  •  » [Résolu] résoudre par le css plutot que par un template

Pied de page des forums

Propulsé par FluxBB

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