Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Вопросы, ответы и примеры решений

  • Список форумов
  • Форумы по phpBB 3.0
  • Мод трекера ppkBB3cker
  • Вопросы, ответы и примеры решений

Статус пользователя в виде картинки 32х32 возле лычки.

3 сообщения
 • Страница 1 из 1
Просмотры: 1477 • 
  • VoVZiK13 Сообщение 29.01.2011
    Постараюсь более полно описать что я хочу и что уже смог сделать.
    Задача:
    Хочу сделать статусы в виде картинок 32х32 рядом с Лычкой группы.
    Подобная функция была реализована Тетриком через дополнительные поля в профиле. НО много очевидных минусов
    1. Пользователь видит это поле у себя в личном разделе (Нужно чтоб был отдельный модуль который можно скрыть, это я решил)
    2. Файл должен называться точно также как и статус, и подсказка всплывающая тоже берётся из того поля.
    итд.
    Моё решение (скорей всего не правильно, так как работает не правильно):
    Добавил Два поля в html "acp_users_profile.html"

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

    <fieldset>
    	
    	<legend>{L_USER_STATUS_REMOTE}</legend>
    	<dl>
    		<dt><label for="pf_statusesis_1">{L_STATUS_PUT}:</label><br /><span>{L_STATUS_PUT_EXPLAIN}</span></dt>
    		<dd><input type="text" id="pf_statusesis_1" name="pf_statusesis_1" value="{PF_STATUSESIS_1}" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="pf_statusesis_inf">{L_STATUS_INF}:</label><br /><span>{L_STATUS_INF_EXPLAIN}</span></dt>
    		<dd><input type="text" id="pf_statusesis_inf" name="pf_statusesis_inf" value="{PF_STATUSESIS_INF}" /></dd>
    	</dl>
    	</fieldset>
    Добавил строку в \includes\ucp\info\ucp_profile.php

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

    'status'	=> array('title' => 'UCP_PROFILE_STATUS', 'auth' => '', 'cat' => array('UCP_PROFILE')),
    Создал html файл назвал ucp_profile_status.html и расположил в \styles\...\template

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

    <!-- INCLUDE ucp_header.html -->
    
    <form id="ucp" method="post" action="{S_UCP_ACTION}"{S_FORM_ENCTYPE}>
    
    <h2>{L_TITLE}</h2>
    
    <div class="panel">
    	<div class="inner"><span class="corners-top"><span></span></span>
    	<p>{L_PROFILE_INFO_STATUS}</p>
    
    	<fieldset>
    	<dl>
    		<dt><label for="pf_statusesis_1">{L_STATUS_PUT}:</label></dt>
    		<dd><input type="text" id="pf_statusesis_1" name="pf_statusesis_1" value="{PF_STATUSESIS_1}" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="pf_statusesis_inf">{L_STATUS_INF}:</label></dt>
    		<dd><input type="text" id="pf_statusesis_inf" name="pf_statusesis_inf" value="{PF_STATUSESIS_INF}" /></dd>
    	</dl>
    	</fieldset>
    
    </div>
    
    <fieldset class="submit-buttons">
    	<dl>
    	{S_HIDDEN_FIELDS}<input type="reset" value="{L_RESET}" name="reset" class="button2" />&nbsp; 
    	<input type="submit" name="submit" value="{L_SUBMIT}" class="button1" />
    	{S_FORM_TOKEN}
    	</dl>
    </fieldset>
    </form>
    
    <!-- INCLUDE ucp_footer.html -->
    В администраторском разделе в СИСТЕМА -> Личный раздел. Создал модуль в котором указана мою созданная новая форма.

    Отредактировал два php файла acp_users.php и ucp_profile.php
    в acp_users.php добавлял две строчки в case 'profile': в каждую обработку

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

    'pf_statusesis_1'		=> request_var('pf_statusesis_1', $user_row['pf_statusesis_1']),
    'pf_statusesis_inf'		=> request_var('pf_statusesis_inf', $user_row['pf_statusesis_inf']),
    
    'pf_statusesis_1'		=> array('string', true, 2, 500),
    'pf_statusesis_inf'		=> array('string', true, 2, 500),
    
    'pf_statusesis_1'	=> $data['pf_statusesis_1'],
    'pf_statusesis_inf'	=> $data['pf_statusesis_inf'],
    
    'PF_STATUSESIS_1'		=> $data['pf_statusesis_1'],
    'PF_STATUSESIS_INF'		=> $data['pf_statusesis_inf'],
    
    В ucp_profile.php добавил полностью новую обработку

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

    			case 'status':
    
    				include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
    
    				$cp = new custom_profile();
    
    				$cp_data = $cp_error = array();
    
    				$data = array(
    					'pf_statusesis_1'		=> utf8_normalize_nfc(request_var('pf_statusesis_1', $user->data['pf_statusesis_1'], true)),
    					'pf_statusesis_inf'		=> utf8_normalize_nfc(request_var('pf_statusesis_inf', $user->data['pf_statusesis_inf'], true)),
    				);
    
    				add_form_key('ucp_profile_info');
    
    				if ($submit)
    				{
    					$validate_array = array(
    						'pf_statusesis_1'		=> array('string', true, 2, 500),
    						'pf_statusesis_inf'		=> array('string', true, 2, 500),
    					);
    
    					$error = validate_data($data, $validate_array);
    
    					// validate custom profile fields
    					$cp->submit_cp_field('profile', $user->get_iso_lang_id(), $cp_data, $cp_error);
    
    					if (sizeof($cp_error))
    					{
    						$error = array_merge($error, $cp_error);
    					}
    
    					if (!check_form_key('ucp_profile_info'))
    					{
    						$error[] = 'FORM_INVALID';
    					}
    
    					if (!sizeof($error))
    					{
    						$data['notify'] = $user->data['user_notify_type'];
    
    						if ($data['notify'] == NOTIFY_IM && (!$config['jab_enable'] || !$data['jabber'] || !@extension_loaded('xml')))
    						{
    							// User has not filled in a jabber address (Or one of the modules is disabled or jabber is disabled)
    							// Disable notify by Jabber now for this user.
    							$data['notify'] = NOTIFY_EMAIL;
    						}
    
    						$sql_ary = array(
    							'pf_statusesis_1'	=> $data['pf_statusesis_1'],
    							'pf_statusesis_inf'	=> $data['pf_statusesis_inf'],
    						);
    
    						$sql = 'UPDATE ' . USERS_TABLE . '
    							SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
    							WHERE user_id = ' . $user->data['user_id'];
    						$db->sql_query($sql);
    
    
    					}
    
    					// Replace "error" strings with their real, localised form
    					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
    				}
    
    				$template->assign_vars(array(
    					'ERROR'		=> (sizeof($error)) ? implode('<br />', $error) : '',
    
    					'PF_STATUSESIS_1'	=> $data['pf_statusesis_1'],
    					'PF_STATUSESIS_INF'	=> $data['pf_statusesis_inf'],
    				));
    
    				// Get additional profile fields and assign them to the template block var 'profile_fields'
    				$user->get_profile_fields($user->data['user_id']);
    
    				$cp->generate_profile_fields('profile', $user->get_iso_lang_id());
    
    			break;
    Добавил два столбца в таблице БД phpbbc_users столбцы pf_statusesis_1 и pf_statusesis_inf

    Всё замечательно данные заносятся и отображаются и в админ разделе и в личном разделе. И вот тут я столкнулся с непреодолимой для меня проблемой. В файле viewtopic_tracker_body.html и viewtopic_body.html было прописано
    <img src="{T_IMAGESET_PATH}/group/{postrow.PROFILE_STATUSESIS_VALUE}1.png" alt="" title="Статус: {postrow.PROFILE_STATUSESIS_VALUE}" /> что означало что берётся то что прописано в дополнительном поле профиля пользователя.
    Как так? Мой мозг не может это переварить! Откуда это значение берётся? каким образом движёк обрабатывает такой запрос? я всевозможными способами поиска перерыл все папки но так и не нашёл такой команды где она и куда передаётся кем чем обрабатывается. Но зато нашёл файл functions.php в котором прописал строчку, нет две строчки:

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

    	$template->assign_vars(array(
    ...
    ...
    ...
    		'PF_STATUSESIS_1'		=> ($user->data['pf_statusesis_1']),
    		'PF_STATUSESIS_INF'		=> ($user->data['pf_statusesis_inf']),
    ...
    ...
    ...
    И прописал PF_STATUSESIS_1 и PF_STATUSESIS_INF в той строчке у меня получилось:
    <img src="{T_IMAGESET_PATH}/group/{PF_STATUSESIS_1}1.png" alt="" title="Статус: {PF_STATUSESIS_INF}" />
    Обновил кэш страницу и возрадовался работает. Но как оказалось чуть позже не правильно. Теперь отображается статус у все пользователей и только под тем аккаунтом в котором записано в тех дополнительных полях что я создал.

    Внимание вопрос :)
    Что нужно написать и где написать чтобы значение из поля (я так понимаю value которое выводит информацию) отображалось только в тех профилях где это прописано и всем.
    Я уже исчерпал весь свой запас предположений и догадок ))

    Добавлено спустя 22 часа 51 минуту 35 секунд:
    Желающих помочь прям лес рук :)
    Я может непонятно описал ситуацию? укажите что не понятно я постараюсь более подробно описать.
    Может кто за платно может помочь? :roll:

    Добавлено спустя 22 часа 8 минут 25 секунд:
    Сам решил проблему.
    Всем спасибо.
    Россия, такая Россия.
VoVZiK13
  • VoVZiK13 Сообщение 01.02.2011
    А есть инструкция как оформлять и выкладывать готовые моды?
    Россия, такая Россия.
VoVZiK13
  • Аватара пользователя
    PPK Сообщение 01.02.2011
    Если нет последющего желания выложить мод для валидации на phpbb.com - можно просто обычной инструкцией, открыть файл, найти то, заменить это и т.д., например: viewtopic.php?f=38&t=1420
PPK
3 сообщения
 • Страница 1 из 1

Вернуться в «Вопросы, ответы и примеры решений»

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума