Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Расширения - это просто!

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

хочу добавить в навигатор после "Список форумов" текст "Ваши темы"
для этого в файле overall_header_breadcrumb_append.html надо прописать условие включения расширения типа <!-- IF S_USERTOPICS_ENABLED-->.
в качестве примера заглянул в расширение boardrules - условие создается в файле listener.php
по примеру вставил в static public function getSubscribedEvents() строку

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

			'core.page_header'				=> 'add_page_header_link',
а вот дальше запутался, потому как у меня нет админ.части для этого расширения.
пока черновой вариант...

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

	public function add_page_header_link($event)
	{
		$this->template->assign_vars(array(
			'S_USERTOPICS_ENABLED' => (!empty($this->config['boardrules_enable']) && !empty($this->config['boardrules_header_link'])) ? true : false,
		));
	}

на что заменить эту часть config['boardrules_enable'])?
эта часть поидее вообще в моем случае не нужна !empty($this->config['boardrules_header_link'])) ? true : false?

хотя... здается мне, что я еще что-то упустил.
Последний раз редактировалось Alecto 16.03.2015 23:19, всего редактировалось 3 раза.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

Ничё не понял...
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

Alecto писал(а):хочу добавить в навигатор после "Список форумов" текст "Ваши темы"
остальное - что делаю.
исправил форматирование, может так понятней будет?
нужна помощь по функции public function add_page_header_link($event), либо пояснения, как это сделать.
или то, что хочу сделать нельзя?

Добавлено спустя 17 минут 9 секунд:
возникли сомнения, что можно такое сделать, поскольку я использую стандартную страницу поиска с параметрами в адресе.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

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

$this->template->assign_vars(array(
   'U_USERTOPICS' => append_sid(чего-то тут),
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

зачем мне сид? сид используется в формировании адреса для перехода, он формируется в другой функции.
мне надо как-то проверить, что в данный момент выполнен переход по ссылке, сформированной расширением, затем по этому условию добавить текст в навигатор.
в рассматриваемом примере вот что !empty($this->config['boardrules_enable']) используется в качестве условия.
но, мне непонятно, откуда берется boardrules_enable и что можно использовать в моем случае.

Добавлено спустя 2 минуты 59 секунд:
overall_header_breadcrumb_append.html вот в этот шаблон (я ошибся вначале)

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

<span class="crumb"><a href="{USER_TOPICS_OWN_LINK}">{L_USER_TOPICS_FROM_LINKS}</a></span>
если без условия, то выводится на всех страницах, а мне нужно только на странице поиска ВАШИ ТЕМЫ.
Untitled-1.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

Alecto писал(а):откуда берется boardrules_enable
Из таблицы config
Использовать в шаблоне

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

<!-- IF USER_TOPICS_OWN_LINK -->
Alecto писал(а):зачем мне сид?
Нужен всегда для формирования корректных внутренних ссылок
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

Sheer писал(а):Использовать в шаблоне
так не получится, потому что USER_TOPICS_OWN_LINK формируется в другой функции для вот здесь...
Untitled-1.jpg

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

	public function page_header_after($event)
	{
		$this->template->assign_vars(array(
			'USER_TOPICS_OWN_LINK'   => append_sid("{$this->phpbb_root_path}search.$this->php_ext", 'search_id=egosearch&sr=topics&sf=firstpost'),
			        ));
	}
ВАШИ ТЕМЫ вверху выводится на всех страницах сайта.

потому и завелся с другой функцией, хотя с событием промахнулся, надо другое брать, что-то типа breadcrumb_append, но все равно не пойму, что можно взять в качестве условия?
потому как только клик в хедере по ссылке ВАШИ ТЕМЫ определяет мою страницу.
значит ли это, что я никак не смогу сделать свою хотелку?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

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

<!-- IF SCRIPT_NAME == 'search' AND S_EGO_SEARCH -->
S_EGO_SEARCH определить используя событие core.search_modify_param_before

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

if ($event['search_id'] == 'egosearch')
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

так?

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

			'core.search_modify_param_before'		=> 'ego_search_modify_param_before',

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

	public function ego_search_modify_param_before($event)
	{
		if ($event['search_id'] == 'egosearch')
		{
			$this->template->assign_vars(array(
				'S_EGO_SEARCH'	=> true,
			));
		};
	}
Добавлено спустя 10 минут 7 секунд:
покрайней мере срабатывает и ошибок вроде нет.

Добавлено спустя 5 минут 43 секунды:
Sheer есть еще второй способ адресации.
не к собственным темам, а к темам любого пользователя.
например, страница
http://motobratva.com/search.php?author_id=1435&sr=topics&sf=firstpost
/search.php?author_id=1435&sr=topics&sf=firstpost

вот такую ссылку можно обработать аналогично предыдущему варианту, в той же функции, взяв в качестве условия author_id? только с чем его сравнивать?
if ($event['search_id'] == 'author_id')
будет корректно?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

Alecto писал(а):будет корректно?
Нет.
В данном случае в качестве индексом массива $event используются индексы массива $vars, какие, видно отсюда

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

	/**
	* Event to modify the SQL parameters before pre-made searches
	*
	* @event core.search_modify_param_before
	* @var	string	keywords		String of the specified keywords
	* @var	array	sort_by_sql		Array of SQL sorting instructions
	* @var	array	ex_fid_ary		Array of excluded forum ids
	* @var	array	author_id_ary	Array of exclusive author ids
	* @var	string	search_id		The id of the search request
	* @since 3.1.3-RC1
	*/
	$vars = array(
		'keywords',
		'sort_by_sql',
		'ex_fid_ary',
		'author_id_ary',
		'search_id',
	);
	extract($phpbb_dispatcher->trigger_event('core.search_modify_param_before', compact($vars)));
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

как правильно задать условие для 'author_id_ary',?
для проверки решил по одному пользователю поискать

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

		if ($event['author_id_ary'] == '53')
		{
			$this->template->assign_vars(array(
				'S_USERTOPICS_SEARCH'	=> true,
			));
		};
не работает, наверно author_id_ary - массив и с него надо выдернуть значение??
не знаю, что и как с ним делать.

Добавлено спустя 7 минут 36 секунд:
вот такое еще накопал

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

		if (sizeof($author_id_ary) > 0)

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

		if (sizeof($author_id_ary) > 0)
		{
			$this->template->assign_vars(array(
				'S_USERTOPICS_SEARCH'	=> true,
			));
		};
вроде должно работать, но не работает, хотя ошибок нет.

Добавлено спустя 2 минуты 52 секунды:
а нет, вру, есть ошибка

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

[phpBB Debug] PHP Notice: in file [ROOT]/ext/alecto/UserTopics/event/listener.php on line 45: Undefined variable: author_id_ary
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения - это просто!

Сообщение rxu »

Господа, для решения частных вопросов создавайте отдельные темы. Тут не свалка для решения всех проблем, а место для концептуальных вопросов.
Изображение
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Re: Расширения - это просто!

Сообщение Alecto »

можно отделить в новую тему, начиная с моего вопроса? либо отделить и приклеить к моей теме в бетах usertopics
спасибо.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

rxu писал(а): или создать собственную cron задачу, и т.п.

Будем разбираться по мере появления вопросов.
Вопрос таки появился. Нужна cron задача для очистки некой таблицы в БД.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Расширения - это просто!

Сообщение rxu »

Sheer писал(а): Нужна cron задача
Крон есть здесь https://github.com/rxu/advanced_warnings и здесь https://github.com/rxu/topic_actions.
Изображение

Вернуться в «Для разработчиков»