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

Хочу сделать функцию user_id

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Хочу сделать функцию user_id

Сообщение flautr »

Мне нужно вставить user_id, но я не знаю, как это сделать=( Для чего: как только юзер авторизуется, мне нужно показать ему его значения из таблицы phpbb_profile_fields_data, поля pfoon его user_id. База данных форума на postgres. Вот что я сделал:

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

<!-- IF S_REGISTERED_USER -->
<!-- PHP -->
$dbconn = pg_connect("host=localhost port=5432 dbname=ххх user=postgres password=хххххх");

$result = pg_query($dbconn, "SELECT pfoon FROM phpbb_profile_fields_data 
WHERE user_id = 'вот тут нужен user id авторизовавшегося пользователя'");

if (!$result) {
  echo "Произошла ошибка.\n";
  exit;
}

while ($row = pg_fetch_row($result)) {
		  echo "$row[0] <b>$row[1]</b>$row[3]";
}<!-- ENDPHP -->
<!-- ENDIF -->
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16358
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1741 раз

Re: Хочу сдлать функцию user_id

Сообщение rxu »

Делайте это не в шаблоне, а в скрипте, а в шаблон просто выводите результат. Тогда идентификатор будет просто $user->data['user_id'].
Изображение
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Re: Хочу сдлать функцию user_id

Сообщение flautr »

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

Re: Хочу сдлать функцию user_id

Сообщение Sheer »

Если версия phpBB 3.0.x, то открыть ./includes/functions.php
Найти

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

        'SITE_LOGO_IMG'            => $user->img('site_logo'), 
После вставить

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

        'USER_ID'                => $user->data['user_id'], 
В шаблоне (любом) использовать {USER_ID}
Если версия phpBB 3.1.x, то следует создать простое расширение.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Re: Хочу сдлать функцию user_id

Сообщение flautr »

Спасибо, сделал

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

$result = pg_query($dbconn, "SELECT pf_poff FROM phpbb_profile_fields_data
WHERE user_id = '" . $user->data['user_id'] . "'");
Работает, но результат показывается просто наверху страницы, даже до ее загрузки. Но нужно показать результат в определенном месте. А для этого нужно передать переменную в шаблон, а как? Т.е. вывести результат на страницу шаблона overal_header.php в нужное место так {PEREMENNAYA}

Я пробовал в index.php добавлять, но не работает.

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

$template->assign_vars => 'PEREMENNAYA' ('PEREMENNAYA', $output);
//***
'PEREMENNAYA' => $template->assign_vars('PEREMENNAYA', $output),
в свой скрипт я вставил (находится в файле index.php)

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

$output='PEREMENNAYA';
$dbconn = pg_connect("host=localhost port=5432....
Последний раз редактировалось Sheer 11.04.2016 11:07, всего редактировалось 1 раз.
Причина: bb-код
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 830 раз

Re: Хочу сдлать функцию user_id

Сообщение LavIgor »

flautr, ну вы весь кусок кода и вставьте, куда нужно.
Зачем же в шапку тогда?

Отправлено спустя 1 минуту 24 секунды:
Re: Хочу сделать функцию user_id
Исправил опечатку в названии темы.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12422
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2474 раза

Re: Хочу сделать функцию user_id

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

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

$sql = 'SELECT pf_poff FROM ' . PROFILE_FIELDS_TABLE . ' WHERE user_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('my_array', array(
        'VAR_0'     => $row[0],
        'VAR_1'     => $row[1],
        'VAR_3'     => $row[3]
    );
}
$db->sql_freeresult($result);

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

<!-- BEGIN my_array -->
{my_array.VAR_0} <b>{my_array.VAR_1}</b> {my_array.VAR_3}
<!-- END my_array -->
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Re: Хочу сделать функцию user_id

Сообщение flautr »

Татьяна5, спасибо большое. Я проверил, но что-то в ваше коде не работает, пока не понимаю что, но пример то что нужно) Отвечу, LavIgor. дело в том, что если скрипт поместить прямо в шаблон в нужное место, то не будет работать $user->img('site_logo'), он работает только из скрипта.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Хочу сделать функцию user_id

Сообщение Sheer »

flautr писал(а): если скрипт поместить прямо в шаблон в нужное место
Кто вам сказал, что это нужно сделать? Как раз наоборот, вставлять php код в шаблон нужно только в крайнем случае, когда другого выхода нет. То есть в версии 3.0.x есть возможность редактировать шаблоны прямо в админке. Так вот, в случае, если нет доступа к FTP и есть доступ в ACP и нужно что-то там сделать, то можно прибегнуть к такому способу. Во всех остальных случаях этого делать категорически не рекомендуется.
flautr, давайте по порядку, какая версия phpBB и что вы хотите сделать, конкретно.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Re: Хочу сделать функцию user_id

Сообщение flautr »

Здравствуйте, Sheer . Моя версия 3.1.8. Доступы и FTP и все остальные у меня есть. Что я делаю: я хочу вывести на главную страницу, т.е. в шаблон overall_header.html данные из личного кабинета пользователя. Как только пользователь авторизуется, я хочу показать ему его же значения полей из таблицы phpbb_profile_fields_data. Для этого сделал такой код (ниже) и вставил его прямо в скрипт в файл index.php. Он работает, я получаю значение колонки pfoon по полю user_id (т.е. каждый пользователь видит свое значение как бы из своего кабинета). Но что не получается: я не могу поставить результат на страницу в шаблон в нужное место. Вывод идет в верхний левый угол сайта, а чтобы его поставить туда куда мне надо нужно как-то сделать темплейт вставить {результат}, но у меня не получается это сделать. Код, Татьяна5, близок но что-то тоже не работает.

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

$dbconn = pg_connect("host=localhost port=5432 dbname=xxxx user=postgres password=xxxx");
$result = pg_query($dbconn, "SELECT pfoon FROM phpbb_profile_fields_data
  WHERE user_id = '" . $user->data['user_id'] . "'");
if (!$result) {
  echo "Произошла ошибка.\n";
  exit;
}

while ($row = pg_fetch_row($result))
	{
          echo "$row[0] <b>$row[1]</b>$row[3]&nbsp;&nbsp;";
}
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Хочу сделать функцию user_id

Сообщение Sheer »

flautr писал(а): сделал такой код (ниже) и вставил его прямо в скрипт в файл index.php
Теперь верните все файлы из дистрибутива 3.1.8 на место, и забудьте о внесении изменений в файлы движка. Для достижения своей цели используйте возможность создания расширений --> Для авторов (phpBB 3.1.x)
Забудьте о всяких $dbconn = pg_connect("host=localhost port=5432 dbname=xxxx user=postgres password=xxxx");
Для работы с базой данных в движке имеется весь необходимый набор собственных функций.

Когда что-то не получается, включайте debug и смотрите лог ошибок.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Re: Хочу сделать функцию user_id

Сообщение flautr »

Спасибо. Писать расширение для этого думаю не верно, хотя понимаю вас и идею целостности системы. Но мы живем в реальном мире и смысл не только делать правильно, но разумно с точки зрения затрат. Я потрачу кучу времени на поиск исполнителя и еще в добавок 3-4 тыс. руб. Для того что я могу сделать и так, пусть не так фиолетово как задумали отцы основатели) Для пользователя сайта же будет без разницы как я это сделаю, а мне для каждого движения писать расширение будет адом. Извините что потратил ваше время. В любом случае, мне было это полезно)
Последний раз редактировалось flautr 11.04.2016 14:05, всего редактировалось 1 раз.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Хочу сделать функцию user_id

Сообщение Sheer »

Это элементарно, Ватсон.
Лови
ext.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
flautr
phpBB 1.2.0
Сообщения: 17
Стаж: 8 лет 5 месяцев
Благодарил (а): 7 раз

Re: Хочу сделать функцию user_id

Сообщение flautr »

Спасибо, Sheer))) Круто, работает, но подскажите плз, у меня результат вставляется в шаблон, но просто в низ. Таким образом, я не пойму (пробую изменить конечно) как его (результат) поставить например в определенное место шаблона? Я думал поставить кодом так

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

<!-- IF S_REGISTERED_USER --><!-- IF SCRIPT_NAME == "index" -->
	<!-- IF FIELD --><div><b>{FIELD}</b></div><!-- ENDIF -->
<!-- ENDIF --><!-- IF FIELD -->
А то сейчас результат просто внизу страницы.. а если я код этот ставлю, получаю два результата: один внизу страницы, другой в месте куда мне надо. Т.е. убрать бы по умолчанию внизу страницы, оставить только по желанию путем вставки <...> в нужное место стр.

Отправлено спустя 13 минут 34 секунды:
Все, разобрался. Спасибо огромное всем и особенно Sheer)))
Последний раз редактировалось Sheer 11.04.2016 15:39, всего редактировалось 1 раз.
Причина: bb-код
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Хочу сделать функцию user_id

Сообщение Sheer »

Для размещения этого кода в нужном месте нужно использовать нужное событие шаблона и переименовать соответствующим образом файл ext\sheer\fields\styles\all\template\event\overall_header_content_before.html
Со списком событий шаблонов можно ознакомиться здесь

Отправлено спустя 10 минут 12 секунд:
flautr писал(а): Я думал поставить кодом так
Да и кстати, этот код неправильный.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Перенесено из форума phpBB-пространство в форум Для авторов (phpBB 3.1.x) 11.04.2016 17:57 модератором rxu

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