Ajout d'un bloc uniquement sur index.php Ajout d'un bloc uniquement sur index.php
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Ajout d'un bloc uniquement sur index.php

Started by Elwood J. Blues, August 17, 2007, 11:15:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Elwood J. Blues

Bonjour,

J'ai une petite question, je voudrais mettre le bloc "Photos Aléatoires" dans mon bandeau gauche et uniquement sur ma page d'accueil... Est-ce possible ? Si quelqu'un peut me dire par où il faut que je commence ?

voici ma galerie : http://media.fanaticf1.com En fait pour gagner un peu en hauteur je souhaiterai mettre quelques photos aléatoirement dans mon bandeau sous la pub...

Merci d'avance !

Brice
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

François Keller

Bonjour,
ce que vous demandes n'est pas possible directement dans la configuration actuelle de Coppermine. Vous pouvez changer la place du bloc dans la page en changeant l'ordre d'appel des blocs dans la config, mais pas placer le bloc. Il faudrait le coder, mais la comme ça je n'ai pas de piste.
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

Elwood J. Blues

En passant par des flux RSS peut être...

Quel fichier gére le bloc des photos aléatoire ?

Merci pour votre réponse rapide  ;)
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

François Keller

a priori c'est dans theme.inc.php mais il faut copier la fonction a modifier dans votre fichier theme.php avant de la modifier.
Ne modifiez pas directement le fichier theme.inc.php
I y a aussi un Mod ou un plugin pour les flux RSS, faites une recherche
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

Pascal YAP

Bonjour,

A mon avis le plus simple estr de passer via le fichier ANYCONTENT.PHP dans lequel on peut placer plein de choses.
Il y a aussi le Plugin MiniCMS qui peut accomplir ce que vous désirez faire.

You must to looking for MiniCMS to find something !
Utilisez le Moteur de Recherche pour en savoir plus  ;)

PYAP

Elwood J. Blues

Je vous remercie pour vos réponses ! CPMFetch me convient à merveille !

Maintenant dernière petite question  :-\ Comment créer une balise du genre {BUTTONS} qui injecterai le code défini dans mon theme.php ?

Merci d'avance  ;)
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

Pascal YAP

Vous devez créez un Nouveau Sujet pour une nouvelle question !
Se sont les règles du Forum.

Merci

Elwood J. Blues

Ok, vu que c'était pour la même chose je pensais que ça passerai... Je m'excuse  :-[
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

Elwood J. Blues

C'est bon je m'en suis sorti !

Merci pour votre aide !
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

Elwood J. Blues

Allez vu que PYAP a été gentil avec moi, je vous livre la solution, ça peut donner des idées à certains...

Ma mission était d'ajouter des images aléatoirement sur le côté de ma galerie pour combler le vide entre la pub et le bas du site... Je n'avais ce trou que sur la page d'accueil donc pas question d'ajouter ces photos sur toutes les pages...

Je suis un peu brouillon dans mes développements donc pour éviter de faire des requetes en direct sur la base j'ai voulu utilisé les flux RSS vu que la fonction n'a pas l'air incluse par défaut, j'ai installé CpmFetch... (Excellent mod soit dit en passant)

Problème n°1 : Ajouter un bloc sur la page d'accueil du site...

Alors après avoir tatillonné entre test et forum j'ai trouvé la solution

Il suffit d'ajouter un token sur notre page template.html par exemple {HASARD}

Ensuite on récupére la fonction pageheader du fichier theme.php du sous-dossier themes/samples. On ajoute notre token et on le colle dans notre fichier themes/mon_design/theme.php. Ca doit ressembler à ça :

// Function for writing a pageheader
function pageheader($section, $meta = '')
{
    global $CONFIG, $THEME_DIR;
    global $template_header, $lang_charset, $lang_text_dir;

    $custom_header = cpg_get_custom_include($CONFIG['custom_header_path']);

        $charset = ($CONFIG['charset'] == 'language file') ? $lang_charset : $CONFIG['charset'];

    header('P3P: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"');
        header("Content-Type: text/html; charset=$charset");
    user_save_profile();

    $template_vars = array('{LANG_DIR}' => $lang_text_dir,
        '{TITLE}' => $CONFIG['gallery_name'] . ' - ' . strip_tags(bb_decode($section)),
        '{CHARSET}' => $charset,
        '{META}' => $meta,
        '{GAL_NAME}' => $CONFIG['gallery_name'],
        '{GAL_DESCRIPTION}' => $CONFIG['gallery_description'],
        '{SYS_MENU}' => theme_main_menu('sys_menu'),
        '{SUB_MENU}' => theme_main_menu('sub_menu'),
        '{ADMIN_MENU}' => theme_admin_mode_menu(),
        '{CUSTOM_HEADER}' => $custom_header,
'{HASARD}' => hasard(),
        );

    echo template_eval($template_header, $template_vars);
}


Pour explication rapide, lorsque le moteur tombe sur le token {HASARD} il va exécuter la fonction hasard()

Ensuite on ajoute la fonction hasard() qu'on déclare avant la fonction pageheader() dans notre fichier.

Dans un premier temps nous allons afficher un texte uniquement sur la page d'accueil... Avec un petit peu de connaissance en PHP on arrive à :

function hasard()
{

$retour = "";
// On vérifie si on est sur la page index.php, si c'est le cas on affecte la phrase à la variable retour, sinon on fait rien...
if ($_SERVER['PHP_SELF'] == "index.php"){
     $retour .=  "Ce texte s'affiche à la place de notre token ! C'est presque magique ! ;)";
           }
  return $retour;


}


Problème n°2 : Comment dompter CpmFetch pour qu'il fasse ce qu'on lui demande ?

CpmFetch est vraiment un très bon mod, il est très complet voire trop complet ! La doc n'est pas complète  (en même temps ils ont pas que ça dans la vie c'est compréhensible...) donc il faut mettre les mains dans le camboui pour arriver à faire ce qu'on veut...

En fait ça pourrait marcher très bien avec l'exemple donné, le problème c'est que notre fonction hasard() n'est pas très coopérative, elle n'affiche rien ! Absolument rien, enfin j'y suis pas arrivé... Pour afficher il faut envoyer tout ce que l'on désire dans notre variable de retour... Et là ça se complique un tantinet... Donc si on reprend l'exemple dans un fichier nommé test.php, ça nous affiche ce qu'on désire mais si on le met dans notre fonction, ça ne marche pas !

<?php    
// This is at the top of your page
  
include_once "../cpmfetch/cpmfetch.php";  // Line 1
  
$objCpm = new cpm("../cpmfetch/cpmfetch_config.php"); // Line 2

// HTML code and stuff

// Here is a spot you want the 4 random images with no subtitle from category 1
  
$objCpm->cpm_viewRandomMediaFrom("cat=1s"41);  // Line 5

// HTML code and stuff

// Here is the bottom of the page, lets close things up
  
$objCpm->cpm_close();  // Line 6
?>


Allez hop on plonge dans le code pour savoir comment ça marche... Dans un premier temps si on ne veut pas que CpmFetch formate et affiche le résultat, il faut configurer le mode de sortie... Je vous le donne Emile :
$objCpm->cpm_setReturnType("resultset");
En fouillant le code j'ai trouvé une fonction qui me convenait mieux, elle prend dans tous les albums ! C'est cpm_viewRandomMedia
Ca nous donne un truc du genre :
$resultat = $objCpm->cpm_viewRandomMedia(4, 1, $options);
Attention j'ai ajouté la variable resultat qui récupére toutes les données de nos 4 photos ! C'est un tableau à 2 dimensions... Yapluka ! Il suffit donc de retrouver les données qui nous intéressent et à les formater...
$retour .=  ' <div class="block">
  <h2 class="titre_menu">Images au hasard</h2><br /><table width="100%" align="center" cellspacing="0" cellpadding="0" border="0">';
foreach ($resultat as $image){
  $retour .=  '<tr><td align="center" width="100%"><a href="http://media.fanaticf1.com/displayimage-'.$image['pPid'].'.html"><img src="http://media.fanaticf1.com/'.$image['fullPathToThumb'].'" /></a>  <br>&nbsp;</td></tr>';
}
  $retour .=  '</table>  </div>';


Alors c'est propre à mon template, à vous de l'adapter évidemment ! En gros je fais un tableau dans lequel chaque image renvoie vers sa page... Je pense que ça n'a rien de légal XHTML mais bon... ::)

C'est fini
Au final mon fichier theme.php ressemble à :

function hasard()
{

$retour = "";
if ($_SERVER['PHP_SELF'] == "index.php"){
  include_once "cpmfetch/cpmfetch.php"; 
  $objCpm = new cpm("cpmfetch/cpmfetch_config.php");
  $objCpm->cpm_setReturnType("resultset");
  $resultat = $objCpm->cpm_viewRandomMedia(12, 1, $options);
  $objCpm->cpm_close(); 
 
  $retour .=  ' <div class="block">
  <h2 class="titre_menu">Images au hasard</h2><br /><table width="100%" align="center" cellspacing="0" cellpadding="0" border="0">';
foreach ($resultat as $image){
  $retour .=  '<tr><td align="center" width="100%"><a href="http://media.fanaticf1.com/displayimage-'.$image['pPid'].'.html"><img src="http://media.fanaticf1.com/'.$image['fullPathToThumb'].'" /></a>  <br>&nbsp;</td></tr>';
}
  $retour .=  '</table>  </div>';
}
  return $retour;


}


// Function for writing a pageheader
function pageheader($section, $meta = '')
{
    global $CONFIG, $THEME_DIR;
    global $template_header, $lang_charset, $lang_text_dir;

    $custom_header = cpg_get_custom_include($CONFIG['custom_header_path']);

        $charset = ($CONFIG['charset'] == 'language file') ? $lang_charset : $CONFIG['charset'];

    header('P3P: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"');
        header("Content-Type: text/html; charset=$charset");
    user_save_profile();

    $template_vars = array('{LANG_DIR}' => $lang_text_dir,
        '{TITLE}' => $CONFIG['gallery_name'] . ' - ' . strip_tags(bb_decode($section)),
        '{CHARSET}' => $charset,
        '{META}' => $meta,
        '{GAL_NAME}' => $CONFIG['gallery_name'],
        '{GAL_DESCRIPTION}' => $CONFIG['gallery_description'],
        '{SYS_MENU}' => theme_main_menu('sys_menu'),
        '{SUB_MENU}' => theme_main_menu('sub_menu'),
        '{ADMIN_MENU}' => theme_admin_mode_menu(),
        '{CUSTOM_HEADER}' => $custom_header,
'{HASARD}' => hasard(),
        );

    echo template_eval($template_header, $template_vars);
}



Je sais, j'ai un peu tendance à raconter ma vie, mais j'espère que vous aurez tous bien compris  ;)
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

Pascal YAP

Hey,

C'est excellent comme solution ;)

C'est un bon sujet pour le WiKi... à vous de jouer dans ce sens (en écho à un autre post)
K+1  ;D

PYAP

Elwood J. Blues

Pour le Wiki je suis tout à fait disposer mais va falloir m'expliquer dans quelle rubrique l'ajouter  ;)
Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

François Keller

Quote from: Elwood J. Blues on August 23, 2007, 08:36:32 AM
Pour le Wiki je suis tout à fait disposer mais va falloir m'expliquer dans quelle rubrique l'ajouter  ;)
il suffit d'aller sur le wiki et de créer la page http://frantzk.free.fr/WikiFree/index.php?title=Creer_page
ensuite il ne reste plus qu'a la completer http://frantzk.free.fr/WikiFree/index.php?title=Ecrire_un_article.
Je me chargerais de la placer ensuite dans la bonne rubrique...
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

Elwood J. Blues

Avant de poser une question passez par ici . 90% des réponses s'y trouvent !

François Keller

Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog