PDA

View Full Version : Plugin for Genders: Help!


Kiros72
05-29-2008, 09:12 PM
Alright, let me give a little background info before everyone notices my lack of intelligence. I have a decent amount of programming experience (at least enough to be able to read much of anything and write a good bit). However, I'm new to plugins, in fact, I'm new to many coding aspects of vBulletin, but I've been able to edit templates on my own and fix things up for sometime. With the help of a person over at vBulletin.com, I was able to make my first plugin to add advert content into the Ad Location templates automatically.

Now I'm trying to make a plugin to automatically use a gender modification.

I'm using the hook parse_templates:
<if condition="((THIS_SCRIPT == 'showthread') OR (THIS_SCRIPT == 'showpost')">
$vbulletin->cachedtemplates['postbit'] = str_replace('$post[age]</div></if>', '$post[age]</div></if> <if condition=\"$post[field6]\">$vbphrase[gender]: <img src=\"$stylevar[imgdir_misc]/$post[field6].gif\" alt=\"$post[field6]\" /></if>', $vbulletin->cachedtemplates['postbit']);
<else />
<if condition="(THIS_SCRIPT == 'memberlist')">
$vbulletin->cachedtemplates['memberlist_resultsbit'] = str_replace('$userinfo[usertitle]</div></if>', '$userinfo[usertitle]</div></if> <if condition=\"$userinfo[field6]\"><div class=\"smallfont\">$vbphrase[gender] <img src=\"$stylevar[imgdir_misc]/$userinfo[field6].gif\" alt=\"$userinfo[field6]\" /></div></if>', $vbulletin->cachedtemplates['memberlist_resultsbit']);
</if>
</if>

I need some help... What am I doing wrong? =[

MoT3rror
05-29-2008, 09:20 PM
You can't use PHP in templates. You must do all PHP in plugins.

Paul M
05-29-2008, 09:58 PM
You can't use PHP in templates. You must do all PHP in plugins.He is, parse_templates is a hook.

I need some help... What am I doing wrong?
You are trying to insert template conditionals into a cached template - the cached versions are not the same as the raw versions - they are compiled into php code so you cannot do the replacements you are trying to do.

Kiros72
05-29-2008, 10:34 PM
Thanks Paul! But I don't know what else to do. I'm just trying to replace it with what the modification requires:

POSTBIT TEMPLATE EDIT

-----------

POSTBIT OR POSTBIT_LEGACY
-------

FIND

<if condition="$post['age']"><div>$vbphrase[age]: $post[age]</div></if>

ADD BELOW

<if condition="$post[field6]">$vbphrase[gender]: <img src="$stylevar[imgdir_misc]/$post[field6].gif" alt="$post[field6]" /></if>

CHANGE X TO THE FIELD NUMBER NOTED IN STEP 2 (6)
----------------------------------------------
MEMBERS LIST TEMPLATE EDIT

In Template memberlist_resultsbit

FIND

<if condition="$show['usertitlecol']"><div class="smallfont">$userinfo[usertitle]</div></if>

AFTER ADD

<if condition="$userinfo[field6]"><div class="smallfont">$vbphrase[gender] <img src="$stylevar[imgdir_misc]/$userinfo[field6].gif" alt="$userinfo[field6]" /></div></if>

Paul M
05-30-2008, 12:08 AM
You cannot do that on the fly easily, you will either need to manually edit the template, or find a suitable template hook.

Kiros72
05-30-2008, 08:09 PM
Okay, I see. Is there anyway I can edit the raw versions of the templates through plugins?

--------------- Added 1212182629 at 1212182629 ---------------

Oh wait, can't I use something like this in the plugin code?

if (($vbulletin->THIS_SCRIPT == 'showthread' OR $vbulletin->THIS_SCRIPT == 'showpost') AND $vbulletin->$post[field6]) // I have no clue if that would be right
{
$vbulletin->cachedtemplates['postbit'] = str_replace('$post[age]</div>', '$post[age]</div> <div class=\"postbit\">$vbphrase[gender]: <img src=\"$stylevar[imgdir_misc]/$post[field6].gif\" alt=\"$post[field6]\" />', $vbulletin->cachedtemplates['postbit']);
}
else if ($vbulletin->THIS_SCRIPT == 'memberlist') // again, no idea if that is even possible
{
if ($vbulletin->$userinfo[field6]) // be gentle
{
$vbulletin->cachedtemplates['memberlist_resultsbit'] = str_replace('$userinfo[usertitle]</div>', '$userinfo[usertitle]</div> <div class=\"smallfont\">$vbphrase[gender] <img src=\"$stylevar[imgdir_misc]/$userinfo[field6].gif\" alt=\"$userinfo[field6]\" /></div>', $vbulletin->cachedtemplates['memberlist_resultsbit']);
}
}


I know that must look horrible and completely incorrect, but could I use something like that (if the code and variables were right)?