PDA

View Full Version : Use of output on php code


cloferba
09-18-2012, 06:54 PM
I?ve read this manual (https://www.vbulletin.com/forum/showthread.php/371709-Creating-an-HTML-or-PHP-Block) but I don?t understand very well how to implement this on my custom code.

I need to show this php code on a block, but I don?t know how to use $output variables:
<?php

// Each sponsor is an element of the $sponsors array:

$sponsors = array(
array('facebook','The biggest social network in the world.','http://www.facebook.com/'),
array('adobe','The leading software developer targeted at web designers and developers.','http://www.adobe.com/'),
array('microsoft','One of the top software companies of the world.','http://www.microsoft.com/'),
array('sony','A global multibillion electronics and entertainment company ','http://www.sony.com/'),
array('dell','One of the biggest computer developers and assemblers.','http://www.dell.com/'),
array('ebay','The biggest online auction and shopping websites.','http://www.ebay.com/'),
array('digg','One of the most popular web 2.0 social networks.','http://www.digg.com/'),
array('google','The company that redefined web search.','http://www.google.com/'),
array('ea','The biggest computer game manufacturer.','http://www.ea.com/'),
array('mysql','The most popular open source database engine.','http://www.mysql.com/'),
array('hp','One of the biggest computer manufacturers.','http://www.hp.com/'),
array('yahoo','The most popular network of social media portals and services.','http://www.yahoo.com/'),
array('cisco','The biggest networking and communications technology manufacturer.','http://www.cisco.com/'),
array('vimeo','A popular video-centric social networking site.','http://www.vimeo.com/'),
array('canon','Imaging and optical technology manufacturer.','http://www.canon.com/')
);


// Randomizing the order of sponsors:

shuffle($sponsors);


// Looping through the array:

foreach($sponsors as $company)
{
echo'
<div class="sponsor" title="Click to flip">
<div class="sponsorFlip">
<img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
</div>

<div class="sponsorData">
<div class="sponsorDescription">
'.$company[1].'
</div>
<div class="sponsorURL">
<a href="'.$company[2].'">'.$company[2].'</a>
</div>
</div>
</div>

';
}

?>

Can anybody help me?

pd: I will pay if you want money :)

kh99
09-18-2012, 09:02 PM
Try changing the word "echo" to "$output .= ", so that the line looks like this:

$output .= '


Edit: you may also have to remove the <?php and ?> from the beginning and end - I can't remember if they're allowed or not.

cloferba
09-18-2012, 09:11 PM
Can?t get this work :(

kh99
09-18-2012, 09:38 PM
OK, what happened? Did you try my suggestion, and if so, did you get any errors?

cloferba
09-18-2012, 09:52 PM
I?m using borbole?s mod (http://www.forumservices.eu/vb/threads/34-Unlimited-PHP-amp-HTML-amp-BB-Code-Custom-Pages-15) and I receive an error) and I?m inserting php inside html code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sponsor Flip Wall With jQuery &amp; CSS | Tutorialzine demo</title>

<link rel="stylesheet" type="text/css" href="styles.css" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="jquery.flip.min.js"></script>

<script type="text/javascript" src="script.js"></script>

</head>

<body>

<h1>PET&PET PARTNERS</h1>
<h2><a href="http://www.petandpet.com">Go Back to Pet&Pet &raquo;</a></h2>

<?php

// Each sponsor is an element of the $sponsors array:

$sponsors = array(
array('facebook','The biggest social network in the world.','http://www.facebook.com/'),
array('adobe','The leading software developer targeted at web designers and developers.','http://www.adobe.com/'),
array('microsoft','One of the top software companies of the world.','http://www.microsoft.com/'),
array('sony','A global multibillion electronics and entertainment company ','http://www.sony.com/'),
array('dell','One of the biggest computer developers and assemblers.','http://www.dell.com/'),
array('ebay','The biggest online auction and shopping websites.','http://www.ebay.com/'),
array('digg','One of the most popular web 2.0 social networks.','http://www.digg.com/'),
array('google','The company that redefined web search.','http://www.google.com/'),
array('ea','The biggest computer game manufacturer.','http://www.ea.com/'),
array('mysql','The most popular open source database engine.','http://www.mysql.com/'),
array('hp','One of the biggest computer manufacturers.','http://www.hp.com/'),
array('yahoo','The most popular network of social media portals and services.','http://www.yahoo.com/'),
array('cisco','The biggest networking and communications technology manufacturer.','http://www.cisco.com/'),
array('vimeo','A popular video-centric social networking site.','http://www.vimeo.com/'),
array('canon','Imaging and optical technology manufacturer.','http://www.canon.com/')
);


// Randomizing the order of sponsors:

shuffle($sponsors);

?>



<div id="main">

<div class="sponsorListHolder">


<?php

// Looping through the array:

foreach($sponsors as $company)
{
echo'
<div class="sponsor" title="Click to flip">
<div class="sponsorFlip">
<img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
</div>

<div class="sponsorData">
<div class="sponsorDescription">
'.$company[1].'
</div>
<div class="sponsorURL">
<a href="'.$company[2].'">'.$company[2].'</a>
</div>
</div>
</div>

';
}

?>



<div class="clear"></div>
</div>

</div>

<p class="note">We thank to all of them :)</p>

</body>
</html>

I?ve deleted the <?php and ?> and also changed "echo" to "$output .= '" and I can?t see the code, it seems that something is wrong

kh99
09-18-2012, 10:00 PM
I don't understand what that mod has to do with this, I thought you were trying to create a php type forum block. In that case you'd be entering that code (from the first post) in the Forum Block manager when you create a new "Custom HTML/PHP" block. But one thing I forgot is that using $output is for widgets. For forum blocks you need to return the value, so you'd also have to add

return $output;


as the last line.

ForumsMods
09-18-2012, 10:08 PM
If I understand, you want this:

foreach($sponsors as $company)
{
$output = '
<div class="sponsor" title="Click to flip">
<div class="sponsorFlip">
<img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
</div>

<div class="sponsorData">
<div class="sponsorDescription">
'.$company[1].'
</div>
<div class="sponsorURL">
<a href="'.$company[2].'">'.$company[2].'</a>
</div>
</div>
</div>
';
}

echo $output;

cloferba
09-18-2012, 10:13 PM
I will make things clear, sorry guys.

From the beginning I said that was for a forumblock to don?t give more details about the situations (it seems complex but it is not)

Actually, I want implement a sponsor wall on my forum, using a custom page created with Borbole?s mod:
http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-css/

What I need to do is adapt the code of the index.php file (http://demo.tutorialzine.com/2010/03/sponsor-wall-flip-jquery-css/demo.php) to work on vBulletin...

That php file has html inside, but to work with php on vbulletin you need to use $output variables and that?s my main problem, I don?t know how can I adapt this code.

Scanu
09-19-2012, 06:40 PM
Should'nt be "return $output"?

foreach($sponsors+as+$company)
{
++++$output+=+'
++++<div+class="sponsor"+title="Click+to+flip">
++++++++<div+class="sponsorFlip">
++++++++++++<img+src="img/sponsors/'.$company[0].'.png"+alt="More+about+'.$company[0].'"+/>
++++++++</div>
+++++
++++++++<div+class="sponsorData">
++++++++++++<div+class="sponsorDescription">
++++++++++++++++'.$company[1].'
++++++++++++</div>
++++++++++++<div+class="sponsorURL">
++++++++++++++++<a+href="'.$company[2].'">'.$company[2].'</a>
++++++++++++</div>
++++++++</div>
++++</div>
++++';
}

return+$output;+


--------------- Added 1348083681 at 1348083681 ---------------

Sorry for ++, i copied text from my iPad and it looked like that :confused:

Crotan
10-05-2012, 05:50 AM
I don't mean to threadcrap, but is there a consensus on this?

I have php code that works fine, and the only way I've found to use it in a cms widget is using an html iframe to the php file because I'm not really sure what needs to change for it to be usable in a php widget?

kh99
10-05-2012, 11:54 AM
If you create a "PHP Direct Execution" CMS widget, then you need all the output to be assigned to $output. So if you have php code that uses echo (or other "print" functions) to send output, or uses ?>...<?php tags to include html, then you either need to rewrite the code to assign the output to the $output variable (such as ForumsMods did above), or else use ob_start()/ob_get_contents()/ob_end_clean() to capture the output to a string.