Invision Community 4: SEO, prepare for v5 and dormant account notifications Matt November 11, 2024Nov 11
Posted March 5, 20222 yr Hello, I have strange (for me) problem with one of the widgets on PHP 8. On 7.4 was fine. Error code: #0 /.../plugins/sdstreamcontent/widgets/sdStreamContent.php(56): IPS\_Theme->getTemplate('plugins', 'core', 'global') #1 /.../system/Widget/Widget.php(103): IPS\plugins\sdstreamcontent\widgets\_sdStreamContent->init() #2 /.../system/Widget/Widget.php(396): IPS\_Widget->__construct('34y8hagzy', Array, NULL, 'vertical') #3 /.../system/Dispatcher/Front.php(626): IPS\_Widget::load(Object(IPS\Plugin), 'sdStreamContent', '34y8hagzy', Array, NULL, 'vertical') #4 /.../system/Dispatcher/Dispatcher.php(155): IPS\Dispatcher\_Front->finish() #5 /.../index.php(13): IPS\_Dispatcher->run() #6 {main} What is might be? Init function in the widget file is standard: /** * Initialise this widget * * @return void */ public function init() { $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) ); parent::init(); } Template bit is there: Any tips, advices? Thanks in advance.
March 5, 20222 yr 56 minutes ago, Adriano Faria said: You don’t need to return parent in that case. See that only applies to applications, not plugins. it checks to see if the $app property is populated, plugins that property is empty. @DawPi what is the error message? you provide the trace log, but excluded the actual error message?
March 5, 20222 yr my best guess, is $this->key is either empty or its not the name of the template, try setting the name of the template there instead of using $this->key in: $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) ); (as the template class will throw an unexpectevalueexception if it can't find the template group) Edited March 5, 20222 yr by CodingJungle
March 5, 20222 yr Just to mention, if you are on latest beta, no custom block templates are loaded at the moment:
March 5, 20222 yr Author 46 minutes ago, CodingJungle said: my best guess, is $this->key is either empty or its not the name of the template, try setting the name of the template there instead of using $this->key in: $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) ); (as the template class will throw an unexpectevalueexception if it can't find the template group) Quote /** * sdStreamContent Widget */ class _sdStreamContent extends \IPS\Widget { /** * @brief Widget Key */ public $key = 'sdStreamContent'; Theme: 43 minutes ago, Sonya* said: Just to mention, if you are on latest beta, no custom block templates are loaded at the moment: I'm on 4.6.10.
March 5, 20222 yr what is the content of the template if you don't mind posting it? cause looking at the code for getTemplate, it throws that exception in one place, and it is a ParseError from eval'ing the template group, so it might be something in the template.
March 5, 20222 yr Author Sure: <h3 class='ipsType_reset ipsWidget_title'>{$title|raw}</h3> {{if $viewType}} <div class='ipsWidget_inner ipsPad_half'> <ul class='ipsDataList ipsDataList_reducedSpacing' data-controller='core.front.core.ignoredComments'> {{foreach $results as $result}} {template="sdResult" group="plugins" app="core" location="global" params="$result[ 'indexData' ], $result[ 'authorData' ], $result[ 'itemData' ], $type"} {{endforeach}} </ul> </div> {{else}} {{if $orientation == 'vertical'}} <div class='ipsPad_half ipsWidget_inner'> <ul class='ipsDataList ipsDataList_reducedSpacing' data-controller='core.front.core.ignoredComments'> {{foreach $results as $result}} {template="sdResultRow" group="plugins" app="core" location="global" params="$result[ 'indexData' ], $result[ 'authorData' ], $result[ 'itemData' ], $result[ 'containerData' ]"} {{endforeach}} </ul> </div> {{else}} <div class='ipsWidget_inner'> <ul class='ipsDataList' data-controller='core.front.core.ignoredComments'> {{foreach $results as $result}} {template="sdResultRow2" group="plugins" app="core" location="global" params="$result[ 'indexData' ], $result[ 'authorData' ], $result[ 'itemData' ], $result[ 'containerData' ]"} {{endforeach}} </ul> </div> {{endif}} {{endif}}
March 5, 20222 yr template looks fine, i'm assuming the other 3 templates being called are also clean? have you checked the server error log to see if it gives any more information? from what i can tell, one of the plugins templates is causing the eval to throw an error (it might not even be your plugin that is the culprit, cause any plugin with a template is gonna be apart of that template group).
March 5, 20222 yr Author Solution Hello, I've modified IPS4 files and found. Someone else (other modder) add something like this to the template bit "and\count" and it was it!