Страница 1 из 2

[3.1][3.2] Ссылка на сообщение

Добавлено: 16.08.2018 18:12
Perfecthus
В файле viewtopic.php есть такая конструкция

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

'U_MINI_POST'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'],
судя по всему, она должна выдавать абсолютный путь если использовать её в шаблоне лексемой

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

{postrow.U_MINI_POST}
т.е. например: http://domain.ru/viewtopic.php?p=10#p10 или я не прав?
У меня почему-то выдаёт относительный путь ./viewtopic.php?p=10#p10
Как получить абсолютный? Полдня бьюсь, мозги уже кипят. :?

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 16.08.2018 18:37
nissin
Perfecthus, нет, она должна дать относительный путь.
Абсолютный немного по другому формируется:

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

'U_MINI_POST' => generate_board_url() . '/' . append_sid("viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'],

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 16.08.2018 18:59
Perfecthus
Так это код на php, его же в шаблоне не сформируешь. :|

Отправлено спустя 1 минуту 10 секунд:
Надо как-то его в listener.php прописать? :?:

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 16.08.2018 19:37
rxu
Perfecthus писал(а): 16.08.2018 19:00 его же в шаблоне не сформируешь
В шаблоне точно так же только лексема остается.
Perfecthus писал(а): 16.08.2018 19:00 Надо как-то его в listener.php прописать?
Как и обычно, передаете этот код в шаблон из слушателя через объект template. В чем неясность?

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 16.08.2018 20:54
Perfecthus
rxu, Можно рабочий пример. А то у меня всё белый экран.

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 16.08.2018 20:59
Татьяна5
Perfecthus писал(а): 16.08.2018 20:54 белый экран
Логи смотрите, где-то синтаксическая ошибка

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 8:06
nissin
Perfecthus писал(а): 16.08.2018 19:00 Надо как-то его в listener.php прописать?
Cобытие core.viewtopic_modify_post_row
Парочка набросков.

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

	static public function getSubscribedEvents()
	{
		return array(
			'core.viewtopic_modify_post_row'	=> 'modify_post_row',
		);
	}

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

	public function modify_post_row($event)
	{
		$post_row = $event['post_row'];
		$row = $event['row'];
		$phpEx = $this->php_ext;
		$post_row['U_MINI_POST'] = generate_board_url() . '/' . append_sid("viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'];
		$event['post_row'] = $post_row;
	}
Нужно ещё инициализацию $this->php_ext в конструктор добавить.

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 8:45
Perfecthus
nissin,

listener.php

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

class listener implements EventSubscriberInterface
{
	protected $template;
	protected $php_ext;

	public function __construct(\phpbb\template\template $template, $php_ext)
	{
		$this->template = $template;
		$this->php_ext = $php_ext;
	}

	static public function getSubscribedEvents()
	{
		return array(
			'core.user_setup'					=>	'load_language_on_setup',
			'core.viewtopic_modify_post_row'	=>	'modify_post_row',
		);
	}
	
	public function modify_post_row($event)
	{
		$post_row = $event['post_row'];
		$row = $event['row'];
		$phpEx = $this->php_ext;
		$post_row['U_MINI_POST'] = generate_board_url() . '/' . append_sid("viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'];
		$event['post_row'] = $post_row;
	}

	public function load_language_on_setup($event) {
		$lang_set_ext = $event['lang_set_ext'];
		$lang_set_ext[] = array(
			'ext_name' => 'pwg/ext_name',
			'lang_set' => 'postsnumber',
		);
		$event['lang_set_ext'] = $lang_set_ext;
	}
}

services.yml

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

services:
    pwg.ext_name.listener:
        class: pwg\ext_name\event\listener
        arguments:
            - @template
            - @php_ext
        tags:
            - { name: event.listener }

Получаю такую картину
Снимок.PNG
Что я сделал неверно? :?

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 10:33
Pazh
Perfecthus,
А в чем сама ошибка - смотреть в логах ошибок сервера или включить отображение ошибок в php и на форуме

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 10:38
Perfecthus
Вопрос не о «sid», а о том, что приведённый выше код «ложит» сайт напрочь. Что там не верно, не могу понять?
Ткните носом, сам не вижу!

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 10:54
Татьяна5
Perfecthus писал(а): 17.08.2018 10:38 Ткните носом
Тыкаем: логи!!! error.log или нечто подобное

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 11:23
Pazh
Perfecthus, в приведенном выше коде listener.php не хватает в начале

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

<?php 
namespace pwg\ext_name\event;
и в services.yml
вместо

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

- @php_ext
должно быть

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

            - %core.php_ext%

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 11:43
Perfecthus
Татьяна5 писал(а): 17.08.2018 10:54 Тыкаем: логи!!! error.log или нечто подобное
'The service "pwg.ext_name.listener" has a dependency on a non-existent service "php_ext".'

Pazh писал(а): 17.08.2018 11:23 в приведенном выше коде listener.php не хватает в начале namespace pwg\ext_name\event;
Присутствует, просто не скопировал.

Pazh писал(а): 17.08.2018 11:23 - %core.php_ext%
Исправил, но всё-равно сайт в даун...


В логах ругается на эту строку в listene.php public function __construct(\phpbb\template\template $template, $php_ext)

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 11:46
Pazh
Perfecthus, после правок кеш очистили?

Re: [3.1][3.2] Ссылка на сообщение

Добавлено: 17.08.2018 12:05
Perfecthus
Pazh писал(а): 17.08.2018 11:46 после правок кеш очистили?
Удалил всё из папки cache - заработало. Вот жешь, два дня голову ломал, а папку забыл почистить. Изображение
Значит изначально делал всё правильно, ещё до всех вопросов в этом топике, ну надо ж было забыть очистить папку. Изображение

Всем спасибо за помощь! Изображение