Вы проверили, что никакой другой фрагмент кода не вызывает JError :: riseWarning или событие "onAfterInitialise" ?. Эта статическая переменная должна работать, если у вас нет двух разных экземпляров плагина.
Вы можете попробовать это:
class plgSystemTest extends JPlugin {
function onAfterInitialise(){
static $showWarnings;
if ( !isset( $showWarnings ) ) {
JError::raiseWarning(100,'Some warning that shows up twice.');
$showWarnings = false;
}
}
}
}
, если это все еще не работает, попробуйте это:
class plgSystemTest extends JPlugin {
protected static $showWarnings;
function onAfterInitialise(){
if ( !isset( self::$showWarnings ) ) {
JError::raiseWarning(100,'Some warning that shows up twice.');
$showWarnings = false;
}
}
}
}
Надеюсь, это помогло!
Я редактирую ответ, чтобы ответить на ваш комментарий
Прежде всего: извините, я допустил ошибку в своем коде. Во втором фрагменте кода вы должны изменить это:
$showWarnings = false
Для этого:
self::$showWarnings = false;
Если это все еще не работает, попробуйте это:
class plgSystemTest extends JPlugin {
protected static $showWarnings = true;
function onAfterInitialise(){
static $call_count = null;
if ( self::$showWarnings === true ) {
if( !isset( $call_count ) ) {
$call_count = 1;
} else {
$call_count++;
}
JError::raiseWarning(100,'Some warning that shows up twice. Total: ' . $call_count);
self::$showWarnings = false;
}
}
}
Привет