Affichage des résultats 1 à 12 sur 12

Discussion: Créé une page annexe au forum avec session du forum

  1. #1
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0

    Attention Créé une page annexe au forum avec session du forum

    Salut,

    J'ai cherché un peu sur différents forum vbulletin un moyen d'utiliser les sessions/templates du forum pour pouvoir créer des pages hors forum.

    J'ai trouvé un script, mais il ne fonctionne pas pour la version 3.6.2... j'ai donc trouvé la solution moi meme ^^ ca n'a pris que 10 minutes en fait .

    Donc si vous souhaitez créer une page annexe à votre forum, il vous suffit de :

    1 - Créer une page test.php en y placant ce code :

    Code:
    <?php
    
    // ####################### SET PHP ENVIRONMENT ###########################
    error_reporting(E_ALL & ~E_NOTICE);
    
    // #################### DEFINE IMPORTANT CONSTANTS #######################
    define('THIS_SCRIPT', 'index');
    
    // pre-cache templates used by all actions
    $globaltemplates = array(
    'TEST'
    );
    
    // pre-cache templates used by specific actions
    $actiontemplates = array();
    
    // ######################### REQUIRE BACK-END ############################
    require_once('./global.php');
    
    eval('$navbar = "' . fetch_template('navbar') . '";');
    eval('print_output("' . fetch_template('TEST') . '");');
    ?>
    2 - Créer un template nommé 'TEST' via la zone d'administration des templates de vbulletin. Et dans cette page, vous y placer ce code :

    Code:
    $stylevar[htmldoctype]
    <html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
    <head>
    <!-- no cache headers -->
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="-1" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    <!-- end no cache headers -->
    $headinclude
    <title><phrase 1="$vboptions[bbtitle]">$vbphrase[x_powered_by_vbulletin]</phrase></title>
    </head>
    <body>
    $header
    $navbar
    
    <br />
    
    <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" style="border-bottom: 0" width="100%" align="center">
    <tr>
    <td class="cat-top">TEST</td>
    </tr>
    </table>
    <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
    <tbody>
    <tr>
    <td colspan="2">TEST</td>
    </tr>
    </tbody>
    </table>
    <br />
    
    $footer
    </body>
    </html>
    Voila ca devrait fonctionner ! A vous d'adapter le code a vos besoins maintenant !

    Je poste ce code sur le forum au cas ou quelqu'un en aurait besoin .

    ++
    Samuel

  2. #2
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Essaye d'inclure $phrasegroups et $specialtemplates, ça peut te faire planter l'affichage. Le code suivant n'a pas été testé.
    Code PHP:
    <?php

    // ####################### SET PHP ENVIRONMENT ###########################
    error_reporting(E_ALL & ~E_NOTICE);

    // #################### DEFINE IMPORTANT CONSTANTS #######################
    define('THIS_SCRIPT''index');

    // ################### PRE-CACHE TEMPLATES AND DATA ######################
    // get special phrase groups
    $phrasegroups = array();

    // get special data templates from the datastore
    $specialtemplates = array();

    // pre-cache templates used by all actions
    $globaltemplates = array('TEST');

    // pre-cache templates used by specific actions
    $actiontemplates = array();

    // ######################### REQUIRE BACK-END ############################
    require_once('./global.php');

    eval(
    '$navbar = "' fetch_template('navbar') . '";');
    eval(
    'print_output("' fetch_template('TEST') . '");');

    ?>
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  3. #3
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0
    est ce que quelqu'un sait comment depuis la page test.php, récupérer les données d'une base (hors forum) et afficher les données sur la page test.php ?

    Je n'ai pas de probleme pour afficher un enregistrement, mais comment faire lorsque l'on souhaite afficher 5 enregistrements provenant d'une boucle ?

    Exemple :

    dans la page test.php, j'ai :
    Code:
    $name = $db->query_read_slave("SELECT name FROM country");
    
    	while ($country = $db->fetch_array($name))
    	{
    		$vbphrase[name] =  $country['name'];
    	}

    Dans le fichier template test, j'ai placé ce code :
    Code:
    $vbphrase[name]
    comment faire pour afficher les différents résultats sur la page ?? Je n'ai pas réussi à afficher les données de la boucle while

  4. #4
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Essaye de voir si cette ligne irait pas mieux ?
    Code PHP:
    $vbphrase['name'] .=  $country['name']; 
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  5. #5
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0
    cool merci Pitchoune !

    J'aurais une dernière question...

    Tous les noms des pays s'affichent à la suite... France Belgique Suisse, etc...

    Comment faire pour que lorsque l'on affiche la page test.php, cela affiche les noms de la façon suivante :

    Code:
    	<tr>
    		<td class="alt2">France</td>
    	</tr>
    	<tr>
    		<td class="alt2">Suisse</td>
    	</tr>
    	<tr>
    		<td class="alt2">Belgique</td>
    	</tr>
    et pas :
    Code:
    	<tr>
    		<td class="alt2">FranceSuisseBelgique</td>
    	</tr>



    Le code html du template test :
    Code:
    	<tr>
    		<td class="alt2">$vbphrase[nom]</td>
    	</tr>
    s'afficherait autant de fois qu'il y a de pays.

    Est ce que tu sais comment faire Pitchoune ? ce ne serait pas une histoire de <if> dans le template ? mais comment le faire fonctionner ?

  6. #6
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Essaye ceci :

    Code PHP:
    $name $db->query_read_slave("SELECT name FROM country");

    while (
    $country $db->fetch_array($name))
    {
        
    $vbphrase['name'] = implode(','$country['name']);

    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  7. #7
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0
    Cela m'affiche autant de ligne Warning que de Pays a afficher c'est à dire :

    Code:
    Warning: implode(): Bad arguments. in \test.php on line 25
    
    Warning: implode(): Bad arguments. in \test.php on line 25
    
    Warning: implode(): Bad arguments. in \test.php on line 25
    
    Warning: implode(): Bad arguments. in \test.php on line 25
    
    Warning: implode(): Bad arguments. in \test.php on line 25
    C'est normal que cela ne fonctionne pas vu que les noms des pays sont listés à la suite :
    FranceSuisseBelgique

    Il n'y a pas de virgule entre eux

    Histoire de tester, j'ai ajouté une virgule entre chaque pays et tenté de faire un explode :

    Code:
    	while ($poker = $db->fetch_array($listepoker))
    	{
    	$country['name'] = $country['name'].',';
    	$vbphrase[name] = explode(',', $country['name']);
    	}
    et lorsque j'affiche la page test, cela m'affiche Array

  8. #8
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0
    Je pense que la solution viendra de :
    <if condition="$show['threadslist']"></if>

    non ?

    Je pense que les <if></if> dans le template doivent servir justement à afficher les boucles... la liste des messages par exemple, la liste des catégories, etc...

    Je vais essayer de trouver comment est généré, d'ou vient le "$show['threadslist']" par exemple

  9. #9
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Code PHP:
    $name $db->query_read_slave("SELECT name FROM country");

    while (
    $country $db->fetch_array($name))
    {
        
    $vbphrase['name'] = $country['name'];
        eval(
    '$pays = "' fetch_template('TEST_PAYS') . '";');

    Tu remplaces TEST_PAYS par le template qui doit afficher le pays et tu modifies $pays pour être inséré dans le template TEST.

    Voilà ce à quoi tu devrais arriver au final :

    Template TEST :
    Code HTML:
    $stylevar[htmldoctype]
    <html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
    <head>
    <!-- no cache headers -->
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="-1" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    <!-- end no cache headers -->
    $headinclude
    <title><phrase 1="$vboptions[bbtitle]">$vbphrase[x_powered_by_vbulletin]</phrase></title>
    </head>
    <body>
    $header
    $navbar
    
    <br />
    
    <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" style="border-bottom: 0" width="100%" align="center">
    <tr>
    <td class="cat-top">TEST</td>
    </tr>
    </table>
    
    <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
    <thead>
    <tr>
    <td colspan="2">TEST</td>
    </tr>
    </thead>
    <tbody>
    $pays
    </tbody>
    </table>
    <br />
    
    $footer
    </body>
    </html>
    Template TEST_PAYS :
    Code HTML:
        <tr>
            <td class="alt2">$vbphrase[name]</td>
        </tr>
    Code de ta page :
    Code PHP:
    <?php

    // ####################### SET PHP ENVIRONMENT ###########################
    error_reporting(E_ALL & ~E_NOTICE);

    // #################### DEFINE IMPORTANT CONSTANTS #######################
    define('THIS_SCRIPT''index');

    // ################### PRE-CACHE TEMPLATES AND DATA ######################
    // get special phrase groups
    $phrasegroups = array();

    // get special data templates from the datastore
    $specialtemplates = array();

    // pre-cache templates used by all actions
    $globaltemplates = array('TEST');

    // pre-cache templates used by specific actions
    $actiontemplates = array();

    // ######################### REQUIRE BACK-END ############################
    require_once('./global.php');

    $name $db->query_read_slave("SELECT name FROM country");

    while (
    $country $db->fetch_array($name))
    {
        
    $vbphrase['name'] = $country['name'];
        eval(
    '$pays = "' fetch_template('TEST_PAYS') . '";');
    }

    eval(
    '$navbar = "' fetch_template('navbar') . '";');
    eval(
    'print_output("' fetch_template('TEST') . '");');

    ?>
    Je te conseille quand même de ne pas utiliser les variables $vbphrase comme ça, si tu as une expression sur le forum qui s'appelle $vbphrase[name] ailleurs, ça peut ne rien afficher.
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  10. #10
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0
    ton code fonctionne, mais il ne boucle pas le template "TEST_PAYS". Il n'affiche qu'un seul pays !

    Code:
    <tr>
            <td class="alt2">France</td>
    </tr>

  11. #11
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Code PHP:
    eval('$pays .= "' fetch_template('TEST_PAYS') . '";'); 
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  12. #12
    Date d'inscription
    October 2006
    Messages
    9
    Version de vBulletin
    3.6
    Hébergeur
    Serveurs dédiés
    Pouvoir de réputation
    0
    merci Pitchoune ! ca fonctionne nickel


Informations de la discussion

Utilisateur(s) sur cette discussion

Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •