I’m posting this because I could find NO answers to this question anywhere.
I wanted to pass a Smarty variable (for example {$hello}) through to the PHP side in Serendipity, get an extended property from the Serendipity database, run a query on the SMF database based on that property, and echo the output.
Comments are ***, which should be removed when copying and pasting.
In entries.tpl:
***Checks if the entry is one its own page or not.
{if !$is_single_entry}
***Assigns a new variable from a Smarty variable {$entry.id}. Note the backticks (``) around the variable name.
{assign var='entryid' value=`$entry.id`}
***Capture the output of the Smarty function, within which is passed the variable $entryid
{capture name=plural}
{numbersmfcomments entryid="$entryid"}
{/capture}
***Outputs some HTML with the Smarty function. Distinguishes "Comment" or "Comments" based on the capture output.
{numbersmfcomments entryid="$entryid"}
{if $smarty.capture.plural == 1}
Comment
{else}
Comments
{/if}
--Add yours!
{/if}
In config.inc.php:
***Makes a new Smarty function
$serendipity['smarty']->register_function('numbersmfcomments', 'numbersmfcomments');
function numbersmfcomments($params, &$smarty) {
***Gets access to the SMF database and Serendipity globals.
require_once('/home/pmp6nl/public_html/talk/SSI.php');
global $serendipity;
***Gets entry id out of passed variable in Smarty function.
$id=$params['entryid'];
***Gets extended info about entries, which is where the SMF topic ID is stored.
$props = serendipity_fetchEntryProperties($id);
$SMFTopic = $props['ep_SMFTopic'];
***Run a query to count the number of messages in that SMF topic.
$result = mysql_query("SELECT * FROM pmp6nl_talk.smf_messages WHERE ID_TOPIC = '$SMFTopic'");
$numbercomments = mysql_num_rows($result);
***Output that number, minus the original message.
echo $numbercomments-1;
}
I hope this may be helpful to someone in the future.
References:
http://www.s9y.org/78.html#A4
http://www.smarty.net/manual/en/language.custom.functions.php#language.function.assign
http://www.programmingtalk.com/showthread.php?t=11586
http://www.smarty.net/manual/en/language.builtin.functions.php#language.function.capture
Thanks a lot. You are a savior)