PHP in Templates / Complex Templates
Author Message
This is a relatively small plugin, but seems that a number of people wanted such a thing, so... here it is.

This plugin will allow you to use:
  • PHP in templates, using <?php ... ?> tags
  • Shortcut template conditionals, using <if ... then>...<elseif ... then>...<else>...</if>
  • Some shortcut string functions (see below), eg <func htmlspecialchars>...</func>
  • Call another template, using <template ...>, eg <template header>

For those that do not wish to allow arbitrary PHP code execution that this plugin offers, take a look at the Template Conditionals plugin.

Here's an example of some of the functions that this can be used for - for example, you may use this code in your postbit:

HTML Code
1
2
3
4
5
6
7
8
9
{$post['user_details']}

<if $post['fid5'] then>
Your game tag is <func htmlspecialchars_uni>{$post['fid5']}</func>
<elseif $post['fid6'] and $mybb->user['cancp'] then>
This user's lucky number is <func intval>{$post['fid6']}</func>
<else />Some other profile field: {$post['fid7']}</if>

<?php echo "Hi from PHP"; ?>


Some notes:

  • PHP tags must be closed with ?>
  • PHP runs slower than conditionals, so unless you need to use PHP, I recommend the conditionals
  • PHP inside the <?php ... ?> tags must be well formed, ie the following will not work:

    PHP Code:
    <?php if(true) { ?> some stuff <?php } ?>

    I'm thinking about whether to add support for the above, but there are performance reasons for me choosing not to.

  • The template insertion function is really basic - it performs no caching, so you should not call a lot of templates this way (there really isn't any nice way to get around this) however should be fine for small things.  Also, as it is basic, ensure that you don't stuff it up with recursive calls, that is, it's possible to try to get a template to call itself, but that will obviously cause MyBB to stuff up
  • As of v1.5, I've included the ability to perform additional cache checks, and enabled this option by default.  If you wish to disable this feature, it can be done by modifying a define in the .php file, but this is not necessary for most people (see post below this one for more info).
  • As of v2.1, PHP 5.3 or later is required

The functions available, with the shortcut, are:
htmlspecialchars, htmlspecialchars_uni, intval, file_get_contents, floatval, urlencode, rawurlencode, addslashes, stripslashes, trim, crc32, ltrim, rtrim, chop, md5, nl2br, strrev, strtoupper, strtolower, my_strtoupper, my_strtolower, alt_trow, get_friendly_size, filesize, strlen, my_strlen, my_wordwrap, random_str, unicode_chr, bin2hex, str_rot13, str_shuffle, strip_tags, ucfirst, ucwords, basename, dirname, unhtmlentities
(This post was last modified: 06-26-2023 10:42 PM by ZiNgA BuRgA.)
Find all posts by this user
Quote this message in a reply
Download: phptpl-2.3.7z (2.62 KB)
Plugin Version: 2.3
Last Updated: 06-26-2023, 10:42 PM

Downloads: 14,574
MyBB Compatibility: 1.2.x, 1.4.x, 1.6.x, 1.8.x
Plugin License: GPLv3
Uploader: ZiNgA BuRgA
ZiNgA BuRgA Offline
Fag
*******
Posts: 3,357
Joined: Jan 2008
Post: #121
RE: PHP in Templates / Complex Templates
v2.0 incorporates the <setvar> fix in v1.6 of Template Conditionals.  Also the plugin will no longer attempt to interpret stuff like <?xml ... ?> as PHP.

My Blog
06-18-2012 05:36 PM
Find all posts by this user Quote this message in a reply
Firefox Wins Offline
Member
***
Posts: 164
Joined: Mar 2008
Post: #122
RE: PHP in Templates / Complex Templates
Great plugin, thank you.
06-20-2012 11:33 AM
Find all posts by this user Quote this message in a reply
leefish Offline
Hamster
*****
Posts: 1,009
Joined: Apr 2010
Post: #123
RE: PHP in Templates / Complex Templates
Excellent update - thank you


[Image: leelink.gif]
MYBB1.6 & XThreads
06-20-2012 09:09 PM
Visit this user's website Find all posts by this user Quote this message in a reply
djqwert Offline
Junior Member
**
Posts: 2
Joined: Aug 2012
Post: #124
RE: PHP in Templates / Complex Templates
Hi, I use this plugin to make some changes in my forum.
If I modify the template "member_profile" created with Profile System by Tomm, here the plugin does not work. What can I do?

Thanks
(This post was last modified: 08-08-2012 02:50 AM by djqwert.)
08-08-2012 02:49 AM
Find all posts by this user Quote this message in a reply
leefish Offline
Hamster
*****
Posts: 1,009
Joined: Apr 2010
Post: #125
RE: PHP in Templates / Complex Templates
That is Tomm's myNetwork profile system that does not play nicely with other plugins. You should ask Tomm.


[Image: leelink.gif]
MYBB1.6 & XThreads
(This post was last modified: 08-08-2012 06:05 PM by leefish.)
08-08-2012 06:05 PM
Visit this user's website Find all posts by this user Quote this message in a reply
djqwert Offline
Junior Member
**
Posts: 2
Joined: Aug 2012
Post: #126
RE: PHP in Templates / Complex Templates
(08-08-2012 06:05 PM)leefish Wrote:  That is Tomm's myNetwork profile system that does not play nicely with other plugins. You should ask Tomm.

Ok.
08-10-2012 03:46 AM
Find all posts by this user Quote this message in a reply
Giangy94 Offline
Junior Member
**
Posts: 2
Joined: Aug 2012
Post: #127
RE: PHP in Templates / Complex Templates
Hi to all,

I use MyBB 1.6.8 and this plugin. I have to use it to insert ads only on first post. I inserted ads code in the postbit template and I used this conditional: <if $post['pid1'] then>ADS CODE</if> but ads isn't showed.
I absolutely need to use it beacuse other plugins for ads in first post don't work and if I don't use it, the ads is showed in all posts.
(This post was last modified: 08-12-2012 08:31 PM by Giangy94.)
08-12-2012 08:20 PM
Find all posts by this user Quote this message in a reply
RateU Offline
Administrator
*******
Posts: 2,350
Joined: Mar 2010
Post: #128
RE: PHP in Templates / Complex Templates
Something like this:

Code:
<if $post['pid'] == $thread['firstpost'] then>Ads Code Here</if>


08-13-2012 02:10 AM
Find all posts by this user Quote this message in a reply
Giangy94 Offline
Junior Member
**
Posts: 2
Joined: Aug 2012
Post: #129
RE: PHP in Templates / Complex Templates
Thanks a lot, it works Yipi
08-13-2012 09:02 AM
Find all posts by this user Quote this message in a reply
triley Offline
Junior Member
**
Posts: 1
Joined: Aug 2012
Post: #130
RE: PHP in Templates / Complex Templates
This is a really dumb question, but what sort of format is the file download in? I can't seem to open it on my mac.

Thanks to anyone that responds!
08-19-2012 01:56 PM
Find all posts by this user Quote this message in a reply


Forum Jump: