Страница 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
rxu писал(а):QR_BBPOST там всё просто
кому как

Код: Выделить всё

   	$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;
   }
После этого во вьютопике будет доступно

Код: Выделить всё

{postrow.USER_TOPICS_MINIPROFILE_LINK}

Пояснение такое.
Сначала получаете из события значения нужных вам переменных, присвоением типа

Код: Выделить всё

 $postrow = $event['post_row'];
Потом свое значение добавляете в этот массив стандартным способом через array_merge().
Чтобы измененный вами массив, ранее полученный из события, был передан обратно в вызывающий событие скрипт, т.е. во viewtopic.php, делаете обратное присвоение

Код: Выделить всё

$event['post_row'] = $postrow;
Т.е. исходному значению переменной из события присваиваете свое, измененное в слушателе, значение. Напрямую использовать $event нельзя, таково ограничение, видимо, Symfony. Из-за этого используются временные переменные.