Опыты чайника с экстами

Обсуждение новой системы расширения функциональности phpBB 4.0-dev, разработки новых расширений.
Аватара пользователя
Sheer
Сообщения: 23
Зарегистрирован: 22 янв 2014, 01:10

Опыты чайника с экстами

Сообщение Sheer »

Я долго крепился и воротил нос... Но чё-то меня пробрало, и решил поэкспериментировать. Сваял некое подобие расширения, и чем дальше в лес тем толще партизаны, и я понимаю, что ничего не понимаю.
Итак куча вопросов, просветите болвана.
1. Как добавить ссылку в меню (навигацию в шапку)?
Вроде бы понятно. Но как, скажем, вставить ссылку между Администрировать и Модерировать?
Или вот есть два расширения, две отдельных страницы, Навигация выглядит так:
Ссылки Экст_1 Demo FAQ Администрировать Модерировать
Каким образом определяется местоположение ссылок Экст_1 и Demo, и как поменять их местами?

2. В БД создана своя таблица, скажем phpbb_my_table
Где определить глобальную константу MY_TABLE_TABLE

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

define('MY_TABLE_TABLE',                $table_prefix . 'my_table'); 
чтобы обратиться к ней в скуль-запросе так

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

        $sql = 'SELECT *
            FROM ' .MY_TABLE_TABLE. '
            ORDER BY id ASC'; 
Я выкурутился так

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

        global $table_prefix;
        $sql = 'SELECT *
            FROM ' . $table_prefix . 'my_table'
            ORDER BY d ASC';
но понимаю, что это не комильфо.

3. Дальше ваще....
Как добавить строку на странице поиска пользователей, например, чтобы было так
user_from.jpg
4. Ну а тут совсем ничего не понимаю. Как добавить новый аргумент поиска в Поиске пользователей, например добавить поиск по полю user_from ? Чего, куда и как - темный лес...

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

Опыты чайника с экстами

Сообщение rxu »

Sheer писал(а):QR_BBPOST 1. Как добавить ссылку в меню (навигацию в шапку)?
Смотря по событиям шаблона. Если оно есть - можно добавить. Если нет - пути 2: или использовать то, что есть, и идти на изменения вида того, что делал мод, или добавлять событие (это можно ко мне).
В данном случае имеем в navbar_header.html:

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

		<!-- EVENT overall_header_navigation_prepend -->
		<li class="small-icon icon-faq" <!-- IF not S_USER_LOGGED_IN -->data-skip-responsive="true"<!-- ELSE -->data-last-responsive="true"<!-- ENDIF -->><a href="{U_FAQ}" rel="help" title="{L_FAQ_EXPLAIN}" role="menuitem">{L_FAQ}</a></li>
		<!-- EVENT overall_header_navigation_append -->
		<!-- IF U_ACP --><li class="small-icon icon-acp" data-last-responsive="true"><a href="{U_ACP}" title="{L_ACP}" role="menuitem">{L_ACP_SHORT}</a></li><!-- ENDIF -->
		<!-- IF U_MCP --><li class="small-icon icon-mcp" data-last-responsive="true"><a href="{U_MCP}" title="{L_MCP}" role="menuitem">{L_MCP_SHORT}</a></li><!-- ENDIF -->
Т.е. можно добавить ссылку только до через событие EVENT overall_header_navigation_append либо, например, с правой стороны через событие EVENT navbar_header_username_prepend.
Sheer писал(а):QR_BBPOST 2. В БД создана своя таблица, скажем phpbb_my_table
Где определить глобальную константу MY_TABLE_TABLE
Два способа. Первый - определить константу класса, типа

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

const MY_TABLE_TABLE = 'phpbb_my_table';
Второй - определить имя таблицы в сервисах, добавив в начало services.yml напрмиер такое

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

parameters:
    tables.thanks: %core.table_prefix%thanks
и потом использовать в списке аргументов сервисов так

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

            - %tables.thanks%
Передавая в конструктор в список аргументов через переменную вида $thanks_table.

Отправлено спустя 2 минуты 56 секунд:
Sheer писал(а):QR_BBPOST Как добавить строку на странице поиска пользователей, например, чтобы было так
Боюсь, что пока никак, ибо в memberlist_search.html вообще нет событий никаких.

Отправлено спустя 1 минуту 52 секунды:
Sheer писал(а):QR_BBPOST 4. Ну а тут совсем ничего не понимаю. Как добавить новый аргумент поиска в Поиске пользователей, например добавить поиск по полю user_from ? Чего, куда и как - темный лес...
Тут надо привязываться к какому-нибудь событию ядра, видимо, в memberlist.php, которое находится в подходящем месте (смотреть такое, которое находится в месте, куда можно было бы внести нужные правки ручками. Только тут их надо делать в слушатель в функцию, подписанную на нужное событие).

Аватара пользователя
Sheer
Сообщения: 23
Зарегистрирован: 22 янв 2014, 01:10

Опыты чайника с экстами

Сообщение Sheer »

rxu писал(а):QR_BBPOST Т.е. можно добавить ссылку только до через событие EVENT overall_header_navigation_append либо, например, с правой стороны через событие EVENT navbar_header_username_prepend.
Эттта я понял, но вот это мне и не нраа... что только до, или только после. Посему и возник вопрос.
rxu писал(а):QR_BBPOST определить константу класса
Где? В class listener ?

Отправлено спустя 2 минуты 17 секунд:
rxu писал(а):QR_BBPOST Боюсь, что пока никак, ибо в memberlist_search.html вообще нет событий никаких.
Что событий там нет я увидел... и вот это жопа.

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

Опыты чайника с экстами

Сообщение rxu »

Sheer писал(а):QR_BBPOST Где? В class listener ?
В любой класс, где она нужна. Если в listener-e - то там.
Sheer писал(а):QR_BBPOST и вот это жопа
Особой нет, события обычно принимают нормально. Определяйтесь, какие надо, сделаю ПР в основной репо, добавят в ядро.

Аватара пользователя
Татьяна5
Сообщения: 570
Зарегистрирован: 02 фев 2014, 15:05

Опыты чайника с экстами

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

Sheer писал(а):QR_BBPOST Каким образом определяется местоположение ссылок Экст_1 и Demo, и как поменять их местами?
Как определяется - вопрос сложный, никто на оффе толкового ответа на него не дал. Поменять местами - никак (разве что "через пень-колоду" можно, добавлять ссылку Экст_1 с помощью jQuery в строго определённое место)

Аватара пользователя
Sheer
Сообщения: 23
Зарегистрирован: 22 янв 2014, 01:10

Опыты чайника с экстами

Сообщение Sheer »

rxu писал(а):QR_BBPOST события обычно принимают нормально
Хех... На каждую хотелку просить добавить событие? Это ли не жопа?

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

Опыты чайника с экстами

Сообщение rxu »

Это не жопа, их и должно быть на каждую (или почти) хотелку. Даже в финалке их намного меньше, чем нужно, и разрабы только спасибо говорят за добавление. Сами они придумать все места, где добавить события, просто не в состоянии.

Аватара пользователя
Sheer
Сообщения: 23
Зарегистрирован: 22 янв 2014, 01:10

Опыты чайника с экстами

Сообщение Sheer »

rxu писал(а):QR_BBPOST Сами они придумать все места, где добавить события, просто не в состоянии
И я тоже не в состоянии. Мало ли какое расширение нужно будит сваять. Под заказ такое бывает просят...
Ну лана, тады пусть добавят в поиск пользователей после

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

<!-- IF S_IP_SEARCH_ALLOWED -->
	<dl>
		<dt><label for="ip">{L_POST_IP}{L_COLON}</label></dt>
		<dd><input class="inputbox medium" type="text" name="ip" id="ip" value="{IP}" /></dd>
	</dl>
<!-- ENDIF -->


Аватара пользователя
Sheer
Сообщения: 23
Зарегистрирован: 22 янв 2014, 01:10

Опыты чайника с экстами

Сообщение Sheer »

Пойдет надо полагать.

Кстати, я так сделал

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

            - %core.table_prefix%
потом

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

        define('ZOO_SHOP_TABLE',                $this->table_prefix . 'zoo_shop'); 
и

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

        $sql = 'SELECT *
            FROM ' . ZOO_SHOP_TABLE . '
            '. $sql_sort; 
Пойдет?

Ответить