https://area51.phpbb.com/docs/dev/3.1.x ... -listeners
При обработке события возвращаете нужные значения в параметре
$event
.$event
.Вот это можно поподробнее?nissin писал(а): 31.05.2018 11:26 При обработке события возвращаете нужные значения в параметре$event
listener.php
Код: Выделить всё
<?php
namespace moonrise\nickname\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
static public function getSubscribedEvents()
{
return array(
'core.modify_username_string ' => 'load_language_on_setup',
);
}
public function load_language_on_setup($event)
{
$lang_set_ext = $event['lang_set_ext'];
$lang_set_ext[] = array(
'ext_name' => 'moonrise/nickname',
'lang_set' => 'common',
);
$event['lang_set_ext'] = $lang_set_ext;
}
protected $template;
protected $phpbb_root_path;
public function __construct($phpbb_root_path, \phpbb\template\template $template)
{
$this->phpbb_root_path = $phpbb_root_path;
$this->template = $template;
}
}
common.php
Код: Выделить всё
<?php
if (!defined('IN_PHPBB'))
{
exit;
}
if (empty($lang) || !is_array($lang))
{
$lang = array();
}
$lang = array_merge(
$lang, array(
)
);
get_username_string
перехватил и заменил переменную username
- не понимаю Код: Выделить всё
$testvar = $event['username'];
Тоже самое но в обратную сторону:
Код: Выделить всё
$event['username'] = $testvar;
Код: Выделить всё
public function load_language_on_setup($event)
{
$lang_set_ext = $event['lang_set_ext'];
$lang_set_ext[] = array(
'ext_name' => 'krab24/nickname',
'lang_set' => 'common',
);
$event['lang_set_ext'] = $lang_set_ext;
$testvar = 'TEST_NICK';
$event['username'] = $testvar;
}
'TEST_NICK'
нужно значение допполя nick
, то правильный синтаксис такой? Код: Выделить всё
if (!class_exists('custom_profile'))
{
include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
}
$cp = new custom_profile();
$username_custom = $cp->generate_profile_fields_template('grab', $user->data['user_id']);
$testvar = $username_custom[$user->data['user_id']]['nick']['value'];
Вы прописали весь код в событии, предназначенном для добавления языковых переменных. Конечно же ничего не работает.
Код: Выделить всё
static public function getSubscribedEvents()
{
return array(
'core.modify_username_string ' => 'my_funclion',
);
}
public function my_funclion($event)
{
if (!class_exists('custom_profile'))
{
include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
}
$cp = new custom_profile();
$username_custom = $cp->generate_profile_fields_template('grab', $user->data['user_id']);
$testvar = $username_custom[$user->data['user_id']]['nick']['value'];
$event['username'] = $testvar;
}
Код: Выделить всё
static public function getSubscribedEvents()
{
return array(
'core.user_setup ' => 'load_language_on_setup',
'core.modify_username_string ' => 'my_funclion',
);
}
getSubscribedEvents
я "подписываюсь" на события и говорю какую функцию (дополнительно?) по ним запускать.'core.user_setup ' => 'load_language_on_setup',
?Да.moonrise писал(а): 31.05.2018 16:30 в getSubscribedEvents я "подписываюсь" на события и говорю какую функцию (дополнительно?) по ним запускать.
Для вызова функции load_language_on_setup, в которой прописано подключение языкового файла. Если вы не будете использовать языковые файлы, можете удалить. Вторая строка для вызова вашей функции.
Код: Выделить всё
static public function getSubscribedEvents()
{
return array(
'core.user_setup' => 'load_language_on_setup',
'core.modify_username_string' => 'my_funclion',
);
}
public function load_language_on_setup($event)
{
$lang_set_ext = $event['lang_set_ext'];
$lang_set_ext[] = array(
'ext_name' => 'sniper/stklinks',
'lang_set' => 'common',
);
$event['lang_set_ext'] = $lang_set_ext;
}
public function my_funclion($event)
{
if (!class_exists('custom_profile'))
{
include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
}
$cp = new custom_profile();
$username_custom = $cp->generate_profile_fields_template('grab', $user->data['user_id']);
$testvar = $username_custom[$user->data['user_id']]['nick']['value'];
$event['username'] = $testvar;
}
functions_profile_fields
- failed to open stream: No such file or directory
Ищу куда оно переместилось в 3.2.2Код: Выделить всё
public function my_funclion($event)
{
$testvar = postrow.custom_fields.NICK_FIELD_VALUE;
$event['username'] = $testvar;
}
А с чего бы ей работать, когда postrow.custom_fields никто не определил?
Здесь уже речь идёт не о phpBB, а о PHP как языке.
Не имеет смысла: не путайте с кодом в шаблонах.
Даже если бы не переместилось, файл бы всё равно был не найден из-за того, что переменные
$phpbb_root_path
и $phpEx
не объявлены./ext/krab24/flatslist/styles/all/template/
лежит файлик mytest_body.html
в котором среди прочего есть строчка Код: Выделить всё
<td><a href="{row.U_DETAILS}">{row.FTYPE}
row.FTYPE
(там или 0 или 1) и вывода значения языковой переменной {L_FTYPE0}
или {L_FTYPE1}
соответственно? а еще лучше - картинку или одну или другую.Код: Выделить всё
<!-- IF row.FTYPE eq 0 -->{L_FTYPE0}<!-- ELSE -->{L_FTYPE1}<!-- ENDIF -->