PDA

Afficher la version complète : Créer votre propre page produite par vBulletin



sunray
06/12/2009, 18h25
Ce tutoriel est la mise à jour de l'article "Comment créer votre propre page produite par vBulletin". A utiliser uniquement avec vB4.


Lynne (http://www.vbulletin.org/forum/member.php?u=65230) est l'auteur de ce Tutoriel (http://www.vbulletin.org/forum/showthread.php?t=228112), et précise que cette astuce n'est pas son oeuvre mais provient d'un autre sujet où le codeur vB style (http://www.vbulletin.org/forum/member.php?u=215438) a pris le temps de le rédiger, son travail est basé sur l'article "Comment créer votre propre page vBulletin" de Gary King (http://www.vbulletin.org/forum/member.php?u=5183) que vous trouverez ICI (http://www.vbulletin.org/forum/showthread.php?t=228112).



Remerciements


Ce tutoriel a été traduit en français pour vBulletin-Ressources avec l'autorisation explicite de son auteur que nous remercions.
Version vBulletin Requise : vB 4.x
Traducteur : Sunray (http://www.vbulletin-ressources.com/forum/member.php?u=8678)

Copyright © 2006-2009 vBulletin-Ressources.com - Tous droits réservés Uniquement pour nos traductions

Instructions

Créer un nouveau fichier que vous pourrez nommer : test.php. Ouvrez-le et ajoutez ce qui suit (remplacez 'test' par n'importe quel template que vous souhaitez afficher) :



<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'test');
define('CSRF_PROTECTION', true);
// change this depending on your filename

// ################### 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');

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = construct_navbits(array('' => 'Test Page'));
$navbar = render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'My Page Title';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('TEST');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?> Assurez-vous de changer "TEST" par le nom de l'actuel template et changez 'testé dans le nom du fichier. Changer également "Test Page" par celui que vous souhaitez afficher dans la barre de navigation, comme "Affichage du compte utilisateur" par exemple.

Maintenant créez le template nommé TEST avec le contenu suivant :



{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}"

id="vbulletin_html">
<head>
<title>{vb:raw vboptions.bbtitle}</title>
{vb:raw headinclude}
</head>
<body>

{vb:raw header}

{vb:raw navbar}

<div id="pagetitle">
<h1>{vb:raw pagetitle}</h1>
</div>

<h2 class="blockhead">Title</h2>
<div class="blockbody">
<div class="blockrow">
Text
</div>
</div>

{vb:raw footer}
</body>
</html>
Veuillez consulter cet article afin de vous aider pour le rendu du template - [vB4] Rendu des templates et enregistrement des variables - Petit Guide (http://www.vbulletin.org/forum/showthread.php?t=228078)

Ombre
06/12/2009, 18h28
Bonsoir, merci Sunray pour cette traduction de tutoriel, superbement rédigé :)

Simon
06/12/2009, 18h33
Merci pour la traduction :)

Jose.N70
06/12/2009, 18h42
Ah super merci pour la traduction :)

Allan
06/12/2009, 19h47
Merci et bravo pour ce tutoriel :)

nino42
09/12/2009, 21h00
salut

merci,tres utiles.

WARNING
04/04/2010, 02h49
bonsoir avec cette modif il manque la partit haute du forum, don la baniere et connexion

merci

Simon
04/04/2010, 12h19
bonsoir avec cette modif il manque la partit haute du forum, don la baniere et connexionNormalement non, tu es sûr de ne pas avoir supprimer un morceau par erreur ?

WARNING
04/04/2010, 22h29
bonsoir

effectivement j'ai un souci sur le nouveau style que j'ai installer, tout roule sur le style d'origine

si vous avez une idée

merci

Lo'
06/04/2010, 01h09
Bonsoir,

Merci beaucoup pour cette tradution et pour le taff accompli ;)

Simon
09/04/2010, 18h39
bonsoir

effectivement j'ai un souci sur le nouveau style que j'ai installer, tout roule sur le style d'origine

si vous avez une idée

merciQuel est le nom du style en question ? Inspire-toi des autres templates, il y a peut être une variable supplémentaire à ajouter.

WARNING
16/04/2010, 22h45
salut oui merci simon

effectivement il manquer une partit, le style en question est Darkness-ver6.3

par contre j'ai d'autres question s'il vous plais en rapport de cette modification

je voudrais intégrer une page nommé lulu en php mais avec du html melangé au php sais la que je blok

donc jai ma page php vb et le template qui va avec, donc es que il faut que je place tout le code html de ma page lulu dans mon template?, je me demande aussi le html que j'ai ajouté dans le template, comment va t'il appeler les fonction dans la page vb.php

es que on peut placé du code php dans un template? et comment faire quant on a du code php au milieux d'un code html?

voila un exemple de code



<?php

//Configuration
$proxy = 0; //1 =>
$proxyurl = 'proxy.php';//Url du proxy
$cryptkey = 'DEFAULT';
$lang = 1;// 0 =>

if($lang)
{
$error = 'Nous ne pouvons pas. Raisons possible :
<ul>
<li>est invalide.</li>
<li>hors service.</li>
</ul>
';
$mes1 = 'Lo';
$mes7 = 'Ln';
}
else
{


function boss ($method, $host, $port, $page, $datarray = 0, $cookies = 0, $lang = 'fr')
{

$letter = 0;
}
$neword = ord($maChaineACrypter{$i}) + ord($maCleDeCryptage{$letter});
if ( $neword > 255 )

}

?>
<form action="vb.php" method="post">
<?php
if($max == 1)
{
?>
<p><label for='li' ><?php echo $mes1; ?></label> : <img src="jpg" class="bord" alt=""/><input type="text" class="input_txt" name="li" size="45" /><img src="jpg" class="bord" alt=""/></p>
<p><label for='pa'><?php echo $mes2; ?></label> : <img src="jpg" class="bord" alt=""/><input type="text" class="input_txt" name="pa" id="pass" size="28" /><img src="jpg" class="bord" alt=""/></p>
<?php
}
else
{
?>
<p><label for='li' ><?php echo $mes3.$max.$mes4; ?></label> : </p> <p><textarea id="li" name="li" cols='50' rows='<?php echo $max; ?>'></textarea></p>
<p><label for='pa'><?php echo $mes5; ?></label> : <img src="b.jpg" class="bord" alt=""/><input type="text" class="input_txt" name="pa" id="pa" size="28" /><img src="jpg" class="bord" alt=""/></p>
<?php
}
if($divxplayer)
{
?>
<p><label for='vision'><?php echo $mes6; ?> : <input type="checkbox" name="vision" id="vision"/><input type="image" src="jpg" id="submit" alt="Go !"/></p>
<?php
}
else
{
?>
<p><input type="image" src="pp" id="submit" alt="Go !"/></p>
<?php
}
?>
</form>
<?php
if (isset($_POST['l']) and !empty($_POST['l']))

$linkarray = array_slice($linkarray, 0, $maxlink);
$num = 0;

foreach ($linkarray2 as $nbr => $lien)
{
if($array = @makepath($lien))

{
$basename = @basename($result);

{
?>
<object classid="clsid:67DABF" width="720" height="394" codebase="http://g">
<param name="src" value="<?php echo $result; ?>"/>
<embed type="vuu" src="<?php echo $result; ?>" width="720" height="394" pluginspage="http://g"></embed>
</object>
<?php
}

else
{
$nbr++;
echo '<p>'.$mes7.' '.$nbr.' : '.$error.'</p>';

{
$q = crypter($cryptkey, $result);

{
?>
<object classid="clsid:67D616" width="720" height="394" codebase="http://">
<param name="src" value="<?php echo $result; ?>"/>
<embed type="vuu" src="<?php echo $result; ?>" width="720" height="394" pluginspage="http://g</embed>
</object>
<?php
{
$nbr++;
echo '<p>'.$mes7.' '.$nbr.' : '.$error.'</p>';;
}
}
}
?>
merci l'équipe vb

SoLDaT-SiNiK
03/05/2010, 23h41
On peut intégrer des scripts php dans ces pages ?? si oui ou précisement merci d'avance

WARNING
05/05/2010, 05h08
allez un petit coup de pouce les gars:lol:

titcrunch
18/05/2010, 21h40
tout dépend du code php mais le plus propre je pense est de faire une nouvelle page php avec ton script et de l'include dans ta nouvelle page vbulletin

anzo
30/05/2010, 17h31
Bonjour

je voudrai savoir si ont peu mettre cette nouvelle page en page d'acceuil genre un disclaimer que les visiteurs devront accépter ?

Merci

Simon
30/05/2010, 19h20
Bonjour

je voudrai savoir si ont peu mettre cette nouvelle page en page d'acceuil genre un disclaimer que les visiteurs devront accépter ?

MerciBonsoir,

Tout est possible, c'est à toi de développer ce système (à placer dans le hook global_start). Inspire-toi du code source de vBulletin lui-même.

anzo
30/05/2010, 23h11
Bonsoir,

Tout est possible, c'est à toi de développer ce système (à placer dans le hook global_start). Inspire-toi du code source de vBulletin lui-même.

Merci mais pourrais tu me préciser ce que je doit entrer dans le code php du module ?

Merci

Bishop
08/07/2010, 14h04
Bonjour

je ne comprends pas la partie

Maintenant créez le template nommé TEST avec le contenu suivant :


on fait ca comment svp

pepsi-tom
08/08/2010, 02h39
hello

merci pour la traduction sunray

byby

pepsi-tom
09/08/2010, 07h08
hello

j'aurai une petite question si quelqu'un sait me renseigner.

Aprés avoir suivi la procedure, ma page fonctionne mais lorsque je clic sur le nouvel onglet installé dans la navbar, c'est l'onglet "forum" qui reste selectionné
au lieu du nouvel onglet créé.

Comment doit-je m'y prendre pour que ça soit bien le nouvel onglet en rapport a la page qui soit selectionné.?

Simon
09/08/2010, 11h53
hello

j'aurai une petite question si quelqu'un sait me renseigner.

Aprés avoir suivi la procedure, ma page fonctionne mais lorsque je clic sur le nouvel onglet installé dans la navbar, c'est l'onglet "forum" qui reste selectionné
au lieu du nouvel onglet créé.

Comment doit-je m'y prendre pour que ça soit bien le nouvel onglet en rapport a la page qui soit selectionné.?Hello,

Il faut créer un nouveau module (encore un...) dans process_template_complete avec le code suivant:
if (THIS_SCRIPT == 'valeur de la constante mise dans le fichier')
{
$vbulletin->options['selectednavtab'] = 'id de l'onglet';
}Et avoir une condition pour l'onglet afin qu'il adopte la classe selected lorsque l'onglet est sélectionné:
<li <vb:if condition="$vboptions['selectednavtab'] == 'id de l'onglet'">class="selected"</vb:if>>Ou en plus lisible:

<vb:if condition="$vboptions['selectednavtab'] == 'id de l'onglet'">
<li class="selected">
<vb:else>
<li>
</vb:if>Il est fort probable que tu puisse trouver un exemple dans ta liste de modules avec un autre hack.

pepsi-tom
09/08/2010, 20h46
Hello simon,

Merci beaucoup pour ta réponse.

J'ai suivi les conseils

création du module:


if (THIS_SCRIPT == 'valeur de la constante mise dans le fichier')
{
$vbulletin->options['selectednavtab'] = 'id de l'onglet';
}


Puis la condition pour l'onglet:


<vb:if condition="$vboptions['selectednavtab'] == 'id de l'onglet'">
<li class="selected">
<a class="navtab" href="exemple.php" accesskey="2">exemple</a>
</li>
</vb:if>


cela fonctionne bien, mais j'avais omis de préciser que mon onglet est généré avec le hack suivant :
http://www.vbulletin-ressources.com/forum/showthread.php?t=17823

Donc avec le hack + la condition ajouté pour l'onglet j'ai deux onglet du meme non quand je suis sur la page.

Comment puis je faire au niveau de la condition si je veut garder le hack si c'est possible.?

pepsi-tom
09/08/2010, 22h59
Hello simon,

Merci beaucoup pour ta réponse.

J'ai suivi les conseils

création du module:


if (THIS_SCRIPT == 'valeur de la constante mise dans le fichier')
{
$vbulletin->options['selectednavtab'] = 'id de l'onglet';
}
Puis la condition pour l'onglet:


<vb:if condition="$vboptions['selectednavtab'] == 'id de l'onglet'">
<li class="selected">
<a class="navtab" href="exemple.php" accesskey="2">exemple</a>
</li>
</vb:if>
cela fonctionne bien, mais j'avais omis de préciser que mon onglet est généré avec le hack suivant :
http://www.vbulletin-ressources.com/forum/showthread.php?t=17823

Donc avec le hack + la condition ajouté pour l'onglet j'ai deux onglet du meme non quand je suis sur la page.

Comment puis je faire au niveau de la condition si je veut garder le hack si c'est possible.?

Ok soucis resolu, je n'avais pas fait attention a l'option du hack "Selection onglets"

Donc les variables ci dessus ne me servent pas, mais maintenant grace a ton aide simon je sait le faire si j'ajoute un onglet en manuel.

merci encore

a+

squd
10/09/2010, 11h46
Bonjour ,

j'ai créer une page perso est fonctionne correctement .

mais ma nouvelle page n'est pas reconnue dans "Qui est en ligne ?" (who is online), est indique "Lieu inconnu" .

il y a un tuto similaire pour vb 3.x ici (http://www.vbulletin-ressources.com/forum/showthread.php?t=5&highlight=Page+personnalis%E9e+%E0+votre+forum)qui lui le faits .

Est il possible de l'adapter pour vb 4.x ?

Ombre
10/09/2010, 18h02
Bonjour, il faudra voir cela avec un codeur.

squd
10/09/2010, 18h08
D'accord merci , je vais attendre la réponse d'un codeur alors ;) c'est pas urgent de toute façon ,et je pensait que la manip aurait été assez simple :d2 mais si ça demande trop de recherche ou modif ,c'est pas grave ,je m'en passerait .

Simon
10/09/2010, 19h52
Bonsoir,

C'est très simple :) Il faut passer par deux nouveaux modules:

1) online_location_process
Produit: vBulletin (ou le tient si tu dev un mod)
Emplacement du crochet: online_location_process
Code PHP du module:

if (THIS_SCRIPT == 'Ta valeur')
{
$userinfo['activity'] = 'Ta valeur';
}

2) online_location_unknown
Produit: vBulletin (ou le tient si tu dev un mod)
Emplacement du crochet: online_location_unknown
Code PHP du module:
if ($userinfo['activity'] == 'Ta valeur')
{
$userinfo['action'] = 'Texte à afficher'
$handled = true;
}

En remplaçant Ta valeur par la constante THIS_SCRIPT de ton fichier.

squd
10/09/2010, 23h16
Merci sinon ,par contre etant novice sous vb ,j'ai regarder pour créer 2 module ok

mais je comprends pas cette phrase :

En remplaçant Ta valeur par la constante THIS_SCRIPT de ton fichier. (c'est quoi la constante et ou la trouver ?)

Simon
11/09/2010, 10h41
Bonjour,

Dans le code donné sur le premier message:
define('THIS_SCRIPT', 'test');Ce sera test.

squd
11/09/2010, 11h31
Gros gros merci simon :notworthy: (en plus j'ai tout compris :D ) trop génial je vais essayer ce week end .

squd
14/09/2010, 11h45
Bon j'ai essayer plusieurs fois mais toujours pareil ,emplacement inconnu .

et un message d'erreur :

Parse error: syntax error, unexpected T_VARIABLE in /data/multiserv/users/330626/projects/463320/www/includes/functions_online.php(1214) : eval()'d code on line 53

Une petite idée ?
le nom de ma constante est : recherche_mat

LAYLA
09/06/2011, 16h03
Bonjour,

La cerise sur le gâteau !!!! Merci Sunray

Bonne continuation

Au plaisir de vous lire

A bientôt

RETRoXg
26/09/2011, 19h59
Bonsoir, étant donner que je suis nouveau dans le domaine de VB, j'aimerai savoir comment créer le template, je vois un peu pres ce que je doit opérer mais je ne sais ou aller pour me lancer, pourriez vous m'éclairer un petit peu plus sur le sujet, parce que j'ai pas envie de bouffer mon forum, pour lequel je souhaiterai ajouter quelques pages au gout du forum avec du code php à l'intérieur accessible depuis le menu du forum.

Ce que je sais faire créer la page test.php depuis mon ftp c'est ok ça c'est bon.
Ou je blocque c'est la création du template, à partir de quel endroit dois-je le faire, est-ce que cela ce gère depuis le panno d'admin et si oui ou, ou alors est-ce un nouveau fichier que je dois créer placer le code ci-dessus indiquer et le placer dans les fichiers du forum via ftp dans un dossier bien précis.

Merci de votre attention. meoui

Ombre
26/09/2011, 20h43
Bonsoir,

Dirige toi dans ton admincp >> Styles & Templates >> Gérer les styles >> et sur le style visé, tu as un menu déroulant, il suffit de regarder les options disponibles, et tu trouveras ton bonheur.

RETRoXg
27/09/2011, 01h50
Bonsoir Ombre je te remercie, j'ai bien pigé la chose maintenant et l'affaire tourne :yahoo:

bibi_fr
02/10/2011, 02h33
Bonjour,

Je c'est que je ne suis pas trés bon dans le php mais il y as un début a tout :P

J'utilise le template Abyss by Ombre xD Mais lorsque j'utilise se script le template vb d'origine apparait!
Ne trouvant pas la soluce je vous demande un peu d'aide :)

j'ai donc codé mon fichier php comme ceci

Le nom de mon fichier est Achat.php
Celui du Template est skill

<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'achat');
define('CSRF_PROTECTION', true);
// change this depending on your filename

// ################### 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('abyss by ombre',
);

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

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

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = construct_navbits(array('' => 'skill'));
$navbar = render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'Buy Silk and gold Here';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('skill');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?>

Je ne comprend pas ou j'ai fait erreur :/
Un petit coup de main serai le bienvenue!

Et encore merci pour le script :)

Simon
02/10/2011, 10h13
Le nom de mon fichier est Achat.php
Celui du Template est skillJe ne comprend pas ou j'ai fait erreur :/
Un petit coup de main serai le bienvenue!

Et encore merci pour le script :)Le code a pourtant l'air à l'exception de:
$globaltemplates = array('abyss by ombre',D'où sort ce abyss by ombre ? Cette variable sert à précharger des templates, pas des styles ! Ici, ce sera:
$globaltemplates = array('skill',

bibi_fr
02/10/2011, 12h30
Bonjour,

Tout d'abord merci de votre aide!

J'avais effectivement compris qu'il fallait renseigné le style! pourquoi comment .... je ne c'est plus l'heure tardive surement llol


J'ai donc effectué la modification, mais malheureusement cela n'as rien changer !
Le problème étant toujours le même, il ne charge pas le style par défaut du forum, a savoir Abyss by Ombre (http://www.vbulletin-ressources.com/forum/showthread.php?t=27385).

Je ne comprend pas pourquoi le style n'est pas charger!

Freddy.k
02/10/2011, 13h07
Bonjour oui je vient de tester sa je confirme

17642

Ombre va bien nous trouver un petit truc

BalHack
02/10/2011, 13h44
Il suffit de rajouter cette ligne dans le template que vous avez créé juste au-dessus de </head>

{vb:raw headinclude_bottom}

Et testé :)

bibi_fr
02/10/2011, 14h21
Je pense que vous avez quelque chose que nous n'avons pas car avec la ligne ajouter j'obtient ceci

http://img291.imageshack.us/img291/6319/sansreju.png




Hors Normalement je devrai optenir quelque chose comme ceci :)


http://img819.imageshack.us/img819/3462/sansretae.png

Ombre
02/10/2011, 14h29
Je pense que vous avez quelque chose que nous n'avons pas car avec la ligne ajouter j'obtient ceci

http://img291.imageshack.us/img291/6319/sansreju.png




Hors Normalement je devrai optenir quelque chose comme ceci :)


http://img819.imageshack.us/img819/3462/sansretae.pngBonjour, la feuille de style n'est pas prise en compte je pense, malgré la modification que tu propose Balhack, il faudrait que je vois cela en direct, mais il semble vu tes captures que tu test ça en local, donc difficile.

Il existe des solutions autres, mais normalement ça devrais marché, les variable qu'il faut qui soient ajoutées sont les suivantes:

{vb:cssfile abyss_by_Ombre.css} <---- pour la feuille de style du style Abyss.

{vb:cssfile additional.css} <---- Pour le template additional.css qui te permettras de modifier le style facilement.

Mais ils sont présent dans le headinclude_bottom, c'est pour ça que je trouve étonnant que ça ne marche pas.

bibi_fr
02/10/2011, 14h37
effectivement je travaille en local pour apprendre le site avant de le mettre en ligne sans savoir ou je vais :)

J'utilise un programme appelé TeamViewer qui vous permettrai de voir cela directement sur mon pc comme un bureau a distance si cela vous intéresse afin de voir ou sa cloche :)


Edit: Autan pour moi cela fonctionne maintenant ! J'avais Malencontreusement supprimé une ligne ....

Mile escuse pour le dérangement :)

Ombre
02/10/2011, 14h43
De rien, bonne continuation.

bibi_fr
02/10/2011, 14h45
Merci beaucoup
Vous de même et encore merci pour se magnifique style :)

Freddy.k
02/10/2011, 17h57
oui sa sa marche je répond trop tard lol Merci a BalHack je garde sa de coté

sa donne pas mal http://tuto-logiciel-info.com/test.php

Xx-SniiPeR-Xx
02/10/2011, 18h55
Les codes on les met ou ??

BalHack
02/10/2011, 20h17
Il faut mettre cette ligne dans le template que tu crée