Jump to content

Hook at the start of file


Recommended Posts

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?

Link to comment
Share on other sites

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();"}}

 

Link to comment
Share on other sites

<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 

Link to comment
Share on other sites

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 );
}

}

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...