Страница 9 из 13
UserTopics
Добавлено: 12 сен 2014, 20:12
rxu
[ref]Alecto[/ref], посмотрите, что вам Татьяна5 пишет вверху.
UserTopics
Добавлено: 12 сен 2014, 20:17
Alecto
посмотрел, простите - не потянул.
слишком сложная для меня конструкция получается.
UserTopics
Добавлено: 12 сен 2014, 20:20
Татьяна5
Вместо S_FORUM_THANKS сложно задать свою переменную? Остальной код 1 в 1 копируется
UserTopics
Добавлено: 12 сен 2014, 20:22
rxu
[ref]Alecto[/ref], там всё просто - надо добавлять переменные в $post_row, чтобы в каждом посте было свое значение.
UserTopics
Добавлено: 12 сен 2014, 20:29
Alecto
кому как
Код: Выделить всё
$row = $event['row'];
$postrow = $event['post_row'];
$topic_data = $event['topic_data'];
$forum_id = (int) $row['forum_id'];
$poster_id = (int) $row['user_id'];
$poster_id = array_merge($postrow, array(
'S_MY' => ($this->auth->acl_get('poster_id', $postrow)) ? true : false,
));
и ничего.
UserTopics
Добавлено: 12 сен 2014, 20:32
rxu
Alecto писал(а):QR_BBPOST acl_get('poster_id', $postrow)
Что это должно значить?
UserTopics
Добавлено: 12 сен 2014, 20:33
Alecto
получить айди постера из строки.
наверно.
UserTopics
Добавлено: 12 сен 2014, 20:34
rxu
И вообще неясен смысл кода. Смотрите.
Смысл присвоения в том, что сначала присваивается какое-то значение из $event локальной переменной, а потом после изменения этой локальной переменной ее значение присваивается обратно в $event. Иначе не будет работать.
Отправлено спустя 49 секунд:
Alecto писал(а):QR_BBPOST получить айди постера из строки.
acl_get() получает значения прав доступа для определенных объектов, как это используется в данном случае - неясно.
UserTopics
Добавлено: 12 сен 2014, 22:50
Alecto
не могу понять все эти присвоения и переприсвоения... мне просто нужен айдишник.
ну да ладно, хрен с ним, я уже и сам заи...ся и вас всех достал.
извиняюсь за это.
ну не понимаю я, что делать, чтобы получить айди.
вернул все как было - ссылка формируется в шаблоне.
Код: Выделить всё
<!-- IF S_REGISTERED_USER -->
<dd class="profile-posts">
<strong>{L_PRIME_USER_TOPICS_MINIPROFILE_TEXT}</strong>
<a href="./search.php?author_id={postrow.POSTER_ID}&sr=topics&sf=firstpost">{L_PRIME_USER_TOPICS_FROM_MINIPROFILE}</a>
</dd>
<!-- ENDIF -->
тут все просто и красиво.
если у кого-то не будет работать - пусть сами голову ломают, или позже когда-нибудь вернусь к этому.
Отправлено спустя 49 минут 23 секунды:
Обновил. работает.
ссылка в первом сообщении.
UserTopics
Добавлено: 13 сен 2014, 08:00
rxu
[ref]Alecto[/ref], функция должна выглядеть следующим образом.
Код: Выделить всё
public function viewtopic_poster_topics($event)
{
$postrow = $event['post_row'];
$poster_id = $event['poster_id'];
$postrow = array_merge($postrow, array(
'USER_TOPICS_MINIPROFILE_LINK' => append_sid("{$this->phpbb_root_path}search.$this->php_ext", 'author_id=' . $poster_id . '&sr=topics&sf=firstpost'),
));
$event['post_row'] = $postrow;
}
После этого во вьютопике будет доступно
Пояснение такое.
Сначала получаете из события значения нужных вам переменных, присвоением типа
Потом свое значение добавляете в этот массив стандартным способом через array_merge().
Чтобы измененный вами массив, ранее полученный из события, был передан обратно в вызывающий событие скрипт, т.е. во viewtopic.php, делаете обратное присвоение
Т.е. исходному значению переменной из события присваиваете свое, измененное в слушателе, значение. Напрямую использовать $event нельзя, таково ограничение, видимо, Symfony. Из-за этого используются временные переменные.