Posted March 5, 20223 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, 20223 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, 20223 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, 20223 yr by CodingJungle
March 5, 20223 yr Just to mention, if you are on latest beta, no custom block templates are loaded at the moment:
March 5, 20223 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, 20223 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, 20223 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, 20223 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, 20223 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!