Invision Community 4: SEO, prepare for v5 and dormant account notifications Matt November 11, 2024Nov 11
Posted May 5, 20195 yr I've created a custom static method in \IPS\Member: static function hello() { $hello = "something"; return $hello; } Now I need to retrieve it in a template: {{$hello = \IPS\Member::hello();}} but forums/topicRow template, where I'm working, start with a foreach and I can't hook before it to assign passing $hello. I've found a dirty workaround but what is the best way to do it?
May 5, 20195 yr You need to create a theme hook on the template and add the code in the beginning. So you'd set up a theme hook on forums -> front -> forums. Add one to topicRow. Your selector will be li.ipsDataItem Then you can insert php code before the selector. Something like {{expression="\IPS\Member::hello();"}}
May 5, 20195 yr Author <ips:template parameters="$table, $headers, $rows" /> {{$rowIds = array();}} {{foreach $rows as $row}} {{$idField = $row::$databaseColumnId;}} {{$rowIds[] = $row->$idField;}} {{endforeach}} {{if \count( $rows )}} {{$rowCount=0;}} {{foreach $rows as $row}} {{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}} <li class="ipsDataItem"> {$advertisement|raw} </li> {{endif}} {{$rowCount++;}} {{$idField = $row::$databaseColumnId;}} {{if $row->mapped('moved_to')}} {{if $movedTo = $row->movedTo() AND $movedTo->container()->can('view')}} <li class="ipsDataItem"> If I've a query inside my hello() then if I hook on li.ipsDataItem I've 1 query x num topics
May 6, 20195 yr If I'm understanding you correctly, you want to hook in to the topicRow template before the foreach loop, is that right? Create a theme hook on the appropriate template file, and this will create a plugin file in your plugin directory with nothing but a hookData() method in it. This plugin file extends the template code, so you can then manually define the topicRow template and call the parent like so //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { exit; } class hook347 extends _HOOK_CLASS_ { /* !Hook Data - DO NOT REMOVE */ public static function hookData() { return array_merge_recursive( array (), parent::hookData() ); } /* End Hook Data */ public function topicRow( $table, $headers, $rows ) { // Do whatever you need to do here return parent::topicRow( $table, $headers, $rows ); } }
Archived
This topic is now archived and is closed to further replies.