Fork me on GitHub

Rapport de message :*
 

Re: Créer un bloc contenant des news

Titre du sujet : Re: Créer un bloc contenant des news
par blueteen sur 12/07/2005 16:01:08

alors me revoilà...
j'ai cherché du côté de l'option spotlight de news 1.3.1 (très sympa, mais me convient pas tout à fait), puis du côté du module spotlight.
ce qui me génait dans les 2 cas, c'était la présentation des articles :
un seul article déroulé en plein (titre+contenu), plus des liens vers les articles suivant (juste les titres).
j'aurais voulu avoir mes 5 derniers articles déroulés.
en fait, la même présentation habituelle de mes articles, sans utilisation du mode spotlight.
j'ai trouvé des portions de codes intéressantes (dans news, et spotlight), mais je n'ai rien réussi à faire de conluant.
j'ai donc pris le pb par un autre bout, et en 15 minutes c'était fait.
voici mon approche :

j'utilise actuellement xoops 2.0.13, avec le module news 1.3.1 en tant que module de page d'accueil.

ce qui me donne un lien comme ceux-ci pour accéder à la page d'accueil de mon site :
http://www.monsite.com/xoops2/
équivalent à celui-ci :
http://www.monsite.com/xoops2/modules/news/
ou
http://www.monsite.com/xoops2/modules/news/index.php

j'utilise également un bloc personnalisé de bienvenue.
il est paramétré pour n'apparaître que sur la page d'accueil (top page).
ceci fonctionne lorsque j'accède à d'autres modules, ce bloc disparaît bien.

mon problème se posait, lorsque j'accédais à des adresses du type :
http://www.monsite.com/xoops2/modules/news/index.php?storytopic=40

qui me permet de charger tous les articles d'une même catégorie.
j'accède à ce type de lien, depuis des menus déroulants.
et donc, le bloc de bienvenue restait en haut de la page, car pour lui, nous sommes toujours sur la page d'accueil.
(contrairement à lorsqu'on charge directement un article (ce type de lien :
http://www.monsite.com/xoops2/modules/news/article.php?storyid=84

là, la page article.php est appelé, avec un paramètre, et nous ne sommes plus considéré comme étant sur la page d'accueil, et le bloc de bienvenue disparaît donc bien.

Dans mon thème, le code suivant gère l'affichage des blocs centraux.

<{foreach item=block from=$xoops_ccblocks}>
 <
table align="center" cellpadding="0" cellspacing="2">
                  <
tr
                    <
td> <div class="blockTitle"><{$block.title}></div>
                      <
div class="blockContent"><{$block.content}></div></td>
                  </
tr>
                </
table>
                <{/foreach}>


je me suis dit qu'en rajoutant des conditions à cet affichage, j'arriverais à faire disparaître mon bloc de bienvenue.

j'ai donc édité le fichier header.php à la racine de mon site.

juste après (celui vers la ligne 64, pas après celui vers la ligne 44)

$xoopsTpl = new XoopsTpl();


j'ai rajouté le code suivant

if (eregi("storytopic"$_SERVER['QUERY_STRING'])) cherche le mot storytopic dans les variables passées en url
        
{
        
$xoopsTpl->assign(array('bloc_bienvenue' => '0'));
        }
        else
            {
            
$xoopsTpl->assign(array('bloc_bienvenue' => '1'));
            }


Je cherche dans la variable $_SERVER['QUERY_STRING'], si j'ai la chaîne 'storytopic' (ce que j'ai dans le lien de la page d'affichage d'une catégorie d'articles données (voir exemple plus haut), où le bloc apparaît, mais où je ne voudrais pas le voir.

si j'ai cette chaîne, je place une variable 'bloc_bienvenue' à 0.
sinon, je la place à 1 (afficher le bloc).

Cette variable créée ici, je vais l'exploiter dans mon thème.
je ne connais pas spécialement smarty, mais en regardant d'autres sources de thèmes, j'ai vu quelques exemples de ce qu'on pouvait faire.

j'édite donc mon theme.html.
et juste avant la partie qui gère l'affichage des blocs centraux, je rajoute cette ligne :

<{if $bloc_bienvenue == 1}>

puis juste après cette partie de code, je rajoute
<{/if}>


ce qui me donne (par rapport au code donné au début de mon post (qui commence à être long)

<{foreach item=block from=$xoops_ccblocks}>
                <{if 
$bloc_bienvenue == 1}>
                <
table align="center" cellpadding="0" cellspacing="2">

                  <
tr
                    <
td> <div class="blockTitle"><{$block.title}></div>
                      <
div class="blockContent"><{$block.content}></div></td>
                  </
tr>
                </
table>
                <{/if}>
                <{/foreach}>


avec cette modification, j'ai ce que je voulais :
mon bloc de bienvenue, uniquement sur la page d'accueil (top page), soit :
http://www.monsite.com/xoops2/modules/news/
ou http://www.monsite.com/xoops2/modules/news/index.php

Et plus sur les autres pages, qui affichent toute une catégorie d'articles :
http://www.monsite.com/xoops2/modules/news/index.php?storytopic=40 par exemple.

Attention, toutes les adresses qui contiennent le mot 'storytopic' passé en variable de l'url, empêcheront les blocs centraux (centrés) de s'afficher.
Dans mon cas (et dans beaucoup de cas je pense), ce n'est pas un problème, car c'est le seul bloc central (centré) que j'utilise.
De plus, pour le moment je n'ai rencontré aucun autre module avec le mot 'storytopic' passé en variable passé à l'url.

Le fait qu'on recherche ce mot, dans les variables passées à l'url, et non pas dans l'adresse complète, limite vraiment le risque

Pour finir :
On pourrait tomber sur le cas, où une personne a 2 blocs centraux (centrés).
Qu'elle veuille n'en afficher qu'un en permanence (y compris sur la page contenant 'storytopic' en variable passée à l'url.
Avec la méthode actuelle (un peu bourrin, mais qui me dépanne à 100%), elle ne pourrait pas.
Puisque seul le test sur le nom des variables passées à l'url est utilisé.

Il faudrait juste ajouter un test sur le nom du bloc personnalisé, en plus du test de l'url.

Attention, c'est bricolage à la petite semaine, j'utilise ça sur mon site, relativement modeste, ça fonctionne tel quel, mais je ne peux garantir quoique ce soit.
Ca ne fera pas sauter votre serveur, mais si vous avez des idées pour améliorer, notamment le code php utilisé ici, ce sera bienvenue !

Je vais continuer mes tests de mon côté pour affiner, et je reviendrai poster si je trouve des trucs intéressants !
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

47 Personne(s) en ligne (42 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 47 | Plus ...