Right, OK, so I meant that you should modify the template and put in code with an "if" instead of a constant string. Maybe that's what you meant - the 'if' has to be part of the template string, and you have to make sure the string ends up being valid php code.
I think we already decided that $show['forumdescription'] isn't set yet when that template is used, so don't use that as your condition. Use if ($forum['description'] != '') {do something}.
Now that I think about it, I guess you *can* use process_templates_complete since what you want to do is change the template once. You can pretty much do the same thing, you just have to change your replace code and take it out of the 'if'.
Sorry if I confused you before.
BTW, did you read this thread:
https://vborg.vbsupport.ru/showthread.php?t=275713 ? He was trying to do exactly the same thing you're doing.