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

Вывод дополнительной информации рядом с переменной $username как?

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

Нет, добавить всё написанное в listener.php вашего расширения
(Чтобы внести все нужные правки без расширения придётся перепортить полдвижка, так что лучше разберитесь сначала с расширениями)
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Sheer »

Создайте расширение при помощи этой фичи Skeleton Extension - расширение для создания расширений или [dev] STK for phpBB 3.1.x
Все, что вам нужно, это добавить в файл listener.php две функции под два события (Татьяна5 уже почти все написала тут).

Отправлено спустя 1 минуту 38 секунд:
Для общего развития Создание страниц в стиле конференции
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Так?

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

<?php
/**
*
* @package phpBB Extension - Rename joomla forum
* @copyright (c) 2016 josname
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
namespace Sergey\renamejos\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
/**
* Assign functions defined in this class to event listeners in the core
*
* @return array
* @static
* @access public
*/


	public function viewtopic_get_post_data($event){

	$sql_ary = $event['sql_ary'];
	$sql_ary['SELECT'] .= ', idx.name as josname';
	$sql_ary['LEFT_JOIN'] = array_merge($sql_ary['LEFT_JOIN'], array(
	      array(
	         'FROM'   => array('rust1ru_idx.em0s6_users' => 'idx'),
	         'ON'   => 'idx.username = u.username',
	      ),
	   )
	);
	$event['sql_ary'] = $sql_ary;

	}


	static public function getSubscribedEvents(){

	$rowset_data = $event['rowset_data'];
	$row = $event['row'];
	$rowset_data['username'] = $row['josname'];
	$event['rowset_data'] = $rowset_data;

	}

	static public function getSubscribedEvents()
	{
		return array(
		);
	}

	/** @var \phpbb\template\template */
	protected $template;

	//** @var string phpbb_root_path */
	protected $phpbb_root_path;

	/**
	* Constructor
	*/
	public function __construct($phpbb_root_path, \phpbb\template\template $template)
	{
		$this->phpbb_root_path = $phpbb_root_path;
		$this->template = $template;
	}
}
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

Не так
Сначала надо объявить переменные, после них конструктор, после в getSubscribedEvents подписаться на события, а потом добавлять код с соответствующие событиям функции

Не особо запутанный пример как всё в целом должно выглядеть: https://github.com/Tatiana5/profile_sid ... stener.php
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Как просто добавить username_nick в шаблон? что нужно сделать что бы заменить {USERNAME} заменить на {USERNAME_NICK} и что бы никнейм брался из соседнего поля username_nick?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

Вручную, открыть все файлы шаблона и заменить
Только до этого придётся задать {USERNAME_NICK} в php, для каждого случая где он будет выводиться отдельно. Иначе вместо ников выведется USERNAME_NICK
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Подскажите пожалуйста, какие файлы необходимо править? нужны только уведомления, форум и личные сообщения, остальное не нужно. Помогите пожалуйста найти выход из ситуации уже пол месяца бъюсь над этим вопросом и все не как не получается его решить.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

viewtopic_body.html
viewforum_body.html
ucp_pm_viewfolder.html
ucp_pm_viewmessage.html
А уведомления формируются полностью в php

(Да, файлы лучше править в своём стиле на основе prosilver)
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Ну если я впишу в шаблон {USERNAME_NICK} будет пустая переменная он же не знает что это, как ему объявить что в эту переменную нужно выводить данные из таблицы USERNAME_NICK?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

viewtopic.php - события core.viewtopic_get_post_data, core.viewtopic_cache_guest_data, core.viewtopic_cache_user_data и core.viewtopic_modify_post_row
viewforum.php - предполагаю что core.viewforum_get_topic_data, core.viewforum_get_shadowtopic_data, core.viewforum_modify_topicrow, но не исключаю что при написании кода могут понадобиться и другие события
includes/functions_display.php - core.display_forums_modify_sql, core.display_forums_modify_forum_rows, core.display_forums_modify_template_vars (про шаблон forumlist_body.html, кстати говоря, забыла)

ЛС - искать среди файлов includes/ucp/ucp_pm*
С уведомлениями задача не так проста, так что копать начиная от includes/functions.php в сторону всей папки phpbb/notification, а также отдельно разбирать все сторонние расширения, использующие уведомления
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение LavIgor »

S3cur1ty, ну Вы хотя бы базовые знания по phpBB приобретите, пожалуйста.
Чтобы править движок, его нужно сначала изучить. На это на самом деле надо не так уж много времени в Вашем случае.
В phpBB 3.1 есть такой объект класса \phpbb\template\template, у него есть методы, которые, соответственно, нужно вызывать для работы с шаблонами.
И за вывод шаблонов он отвечает, и за переменные, используемые в них.

В самом же движке есть некая глобальная функция вывода шапки - page_header.
Если пройтись поиском, то можно заметить, что глобальные переменные шаблонов, в том числе USERNAME, задаются именно там.

Но не спешите браться за правку этой функции - для добавления или редактирования данных в ней предусмотрено специальное событие.
Что такое события (events), как их использовать в слушателе своего расширения (listener) и как работать с объектом template - это Вам предстоит изучить самостоятельно на основе материалов на Гуру и официальном англоязычном сайте, а также на основе уже созданных расширений (их сотни, и они самых разных размеров).

Просто возьмите готовое расширение, изучите, как оно работает, и создайте своё.
Неделя максимум, если правильно подходить к делу.
KGB1st
phpBB 1.4.2
Сообщения: 55
Стаж: 8 лет 5 месяцев
Благодарил (а): 11 раз
Поблагодарили: 2 раза

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение KGB1st »

Эм, люди. Подскажите как запихнуть значение через viewtopic_modify_post_row в профиль юзера, но не просто так как обычно, а с определенной позицией поля. Например на этом форуме выводится ник самым первым после аватары, как перебрать массив, что бы поставить его в какую нибудь другую позицию, на несколько строк выше или ниже, неважно.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

KGB1st, аватара и ник не в цикле с допполями выводятся, сами по себе

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

			<dt class="<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF postrow.POSTER_AVATAR -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
				<div class="avatar-container">
					<!-- EVENT viewtopic_body_avatar_before -->
					<!-- IF postrow.POSTER_AVATAR -->
						<!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}" class="avatar">{postrow.POSTER_AVATAR}</a><!-- ELSE --><span class="avatar">{postrow.POSTER_AVATAR}</span><!-- ENDIF -->
					<!-- ENDIF -->
					<!-- EVENT viewtopic_body_avatar_after -->
				</div>
				<!-- EVENT viewtopic_body_post_author_before -->
				<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
				<!-- EVENT viewtopic_body_post_author_after -->
			</dt>
Можно скрыть строку с ником через css (добавить блок с классом через события viewtopic_body_post_author_before и viewtopic_body_post_author_after) и вывести эту же строку через другое событие шаблона
KGB1st
phpBB 1.4.2
Сообщения: 55
Стаж: 8 лет 5 месяцев
Благодарил (а): 11 раз
Поблагодарили: 2 раза

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение KGB1st »

Есть такое расширение, называется NationalFlags. Так вот там реализована своя внутренняя сортировка.
Однако я так и не понял как она работает. Очень тяжелей и запутанный PHP.
Но примерно так как вы и сказали, через JS и CSS
KGB1st
phpBB 1.4.2
Сообщения: 55
Стаж: 8 лет 5 месяцев
Благодарил (а): 11 раз
Поблагодарили: 2 раза

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение KGB1st »

не силен я на столько в этом коде, по этому сделал всё через contact_fields_after и CSS
Ответить

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