PDA

View Full Version : Display a variable in my template


Bastien
06-08-2015, 02:36 PM
Hello,

I created a php file, the display is correct, except the variable $out that doesn't display where it should ... with a echo, it display well the result of my query, but I can't display it directly in my template.

Could someone help me ?

This is my php file :

<?php

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

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

define('THIS_SCRIPT', 'fournisseurs');
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('index',
);

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

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir('/var/www/vhosts/lecoinduprothesiste.fr/httpdocs/forums');
require_once('./global.php');

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

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

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

$item='';
$liste_produits_parent = $vbulletin->db->query_read_slave("
SELECT *
FROM devis_produits AS produits
WHERE est_parent = 1
ORDER by id_affichage
");
while ($produit = $vbulletin->db->fetch_array($liste_produits_parent))
{
$item .= "$produit[nom]";
}
$vbulletin->db->free_result($liste_produits_parent);


echo $item;


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

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

?>

and this is my FOURNISSEURS template :

{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} - {vb:raw pagetitle}</title>
{vb:raw headinclude}
{vb:raw headinclude_bottom}
</head>
<body>

{vb:raw header}

{vb:raw navbar}

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

<h2 class="blockhead">G?rez vos produits commercialis?s</h2>
<div class="blockbody">
<div class="blockrow" align="center">




Ici, vous pouvez g?rer les produits que vous commercialisez, et ainsi etre contact? quand un membre du site fait une demande de devis.
<p><br /><p>Chaque fois qu'une demande de devis est faite correspondant ? un produit que vous commercialisez, vous recevrez automatiquement un courriel, afin de pouvoir r?pondre ? cette demande de devis.
<p><br /><p>

Votre pseudo est {vb:raw bbuserinfo.username}, votre id : {vb:raw bbuserinfo.userid}, votre usergroupid : {vb:raw bbuserinfo.usergroupid}

<br /><br />
articles : $out $item {vb raw:out} {vb raw:item}


</div>
</div>

{vb:raw footer}
</body>
</html>

How could I display this variable $item ?!:confused:

kh99
06-08-2015, 03:42 PM
In the template it should be:
{vb:raw out}


That's if you want the name to be able to contain html, or if you're sure it doesn't contain any special characters. If you think it could contain special characters (or if you're getting the field from a user so you're not sure what it might contain) you could use {vb:var out} instead.

TheAdminMarket
06-08-2015, 03:43 PM
Try this:

articles : {vb:raw out} {vb:raw item}

Bastien
06-08-2015, 05:39 PM
I'm so stupid .... I'll try ! :)

Thank you for helping, I'm back to vbulletin after about 10years without coding, and it's really not easy, everything has so much changed !!! This code is prety simple, but I have to understand how ever

This was my old account : https://vborg.vbsupport.ru/search.php?searchid=22636405

I'll b back :)

--------------- Added 1433801253 at 1433801253 ---------------

It works ! thank you, but now I've another problem :D

Bastien
06-17-2015, 05:08 PM
So, my page fournisseurs.php is now finished and it works well, thanks to you :)

Now I need, when a user is in the wanted forum, to display a select box to choose the type of product he needs.

I added it to the newthread template :

<vb:if condition="$foruminfo['forumid']=='7'">

<label for="subject" class="full">Produit concern? :</label>
<select name="produit">
<option value="" selected="selected">Faites votre choix</option>
{vb:raw template_liste}
<option value="7" style="font-weight:bold; background:#EBEBE6">7</option>
<option value="8" style="font-weight:italic;">8</option>
</select>
<br />
<font size=1>
<i>Un produit "gris?" est une cat?gorie rassemblant la liste de tous SES produits, soit tous les produits en dessous de celle ci, jusqu'? la prochaine cat?gorie</i>
</font>
<br /><br />
</vb:if>

and added a hook linked to newthread_start :

$liste="
<option value=\"3\">3</option>
<option value=\"4\">4</option>";

$templater=vB_Template::create('liste_produits');
$templater->register('liste ', $liste);
$liste_produits .= $templater->render();

And finally created this template liste_produits
<option value="1">1</option>
<option value="2">2</option>

{vb:raw liste}

But the content of this new template is not displayed, what did I do wrong ? :confused:

Bastien
06-17-2015, 08:22 PM
Pfiouuuuuuuuuuuu, I did it ....

In the newthread template, added :


<vb:if condition="$foruminfo['forumid']=='7'">
<label for="subject" class="full">Produit concern? :</label>
<select name="produit">
<option value="" selected="selected">Faites votre choix</option>
{vb:raw liste_produits}

</select><br />
<font size=1><i>Un produit "gris?" est une cat?gorie rassemblant la liste de tous SES produits, soit tous les produits en dessous de celle ci, jusqu'? la prochaine cat?gorie</i></font><br /><br />
</vb:if>

In my hook linked to newthread_start :
$listes_produits = $vbulletin->db->query_read("
SELECT *
FROM devis_produits
ORDER by id
");


while ($liste_produit = $vbulletin->db->fetch_array($listes_produits))
{

if ($liste_produit[est_parent]==1)
$liste .="<option value=\"$liste_produit[id]\" style=\"font-weight:bold; background:#EBEBE6\">$liste_produit[nom]</option>";
else $liste .="<option value=\"$liste_produit[id]\">$liste_produit[nom]</option>";
}


$templater = vB_Template::create('liste_produits');
$templater->register('liste', $liste);
$templatevalues['liste_produits'] = $templater->render();
vB_Template::preRegister('newthread', $templatevalues);

And my template liste_produits :

{vb:raw liste}

This is the result :)

MarkFL
06-17-2015, 09:13 PM
Thank you for taking the time to post your solution...others who may face a similar situation will benefit from your post. :D

Bastien
06-17-2015, 09:27 PM
That's why I do it ;)

--------------- Added 1434660501 at 1434660501 ---------------

I get an other problem.

So I get this in newthread

https://vborg.vbsupport.ru/external/2015/06/6.png (http://www.servimg.com/view/14591051/704)

which is, in HTML :

<label for="subject" class="full">Produit concern? :</label>
<select name="produit">
<option value="" selected="selected">Faites votre choix</option>
<option value="1" style="font-weight:bold; background:#EBEBE6">Platre</option>
<option value="2">Classe I - de Paris</option>
<option value="3">classe III</option>
<option value="4">classe IV</option>
<option value="5" style="font-weight:bold; background:#EBEBE6">CFAO</option>
<option value="6">Scanner 3D</option>
<option value="7">Imprimante 3D</option>
<option value="8" style="font-weight:bold; background:#EBEBE6">Moteurs</option>
<option value="9">Pi?ce ? main</option>
<option value="11">Turbine</option>
<option value="12">Aspirations</option>
<option value="13">avion</option>
<option value="15" style="font-weight:bold; background:#EBEBE6">C?ramique</option>


</select>

I would like to force the user, to select a product when creating a new thread, so I created a hook linked to newthread_form_complete :

if(THIS_SCRIPT == newthread AND $post['produit'] == '')
{
$errors[] = $vbphrase["force_produit_error"];
}

but it doesn't return an error if the user has not touched at the select box.

Could someone help me ?

--------------- Added 1434661051 at 1434661051 ---------------

Solved !

The hook used has to be linked to newpost_process :)

--------------- Added 1434661142 at 1434661142 ---------------

Not solved :D

It always display the error, even if the select box is filled ... :rolleyes:

--------------- Added 1434662169 at 1434662169 ---------------

I added in a hook linked to newthread_start :

$vbulletin->input->clean_array_gpc('p', array(
'produit' => TYPE_STR));

$newpost['produit'] =& $vbulletin->GPC['produit'];

It seems to be good :) I just need to restrict it to the wanted forum now :)