Mini Micro Mods - Полезные мелочи

Поддержка, переводы и разработка модификаций, расширений для форумов phpbb 3.0\3.1
Правила форума
Не загружайте скриншоты(изображения) на внешние хостинги и размещения их ссылок в сообщениях. Такие сообщения могут остаться без ответа или будут удалены!
Ответить
Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Mini Micro Mods - Полезные мелочи

Сообщение Anvar » 26.08.2014, 22:32 #1

Минимальные модификации, небольшие правки или куски полезного кода которые могут пригодится пользователям phpBB.

Отключаем страницу подтверждения при регистрации.

Открываем /includes/ucp/ucp_register.php
Find Найти содержимое с полным или частичным совпадением.

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

		$agreed			= (!empty($_POST['agreed'])) ? 1 : 0;
Replace with Замените найденное выше, новым содержимым.

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

		$agreed			= (!empty($_POST['agreed'])) ? 1 : 1;
Пользователь после регистрации уже будет авторизованным на форуме, в случае доступа к форуму без активации.

Открываем /includes/ucp/ucp_register.php
Add after Добавьте после найденного на новую строку.

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

					$message = $user->lang['ACCOUNT_ADDED'];
					$email_template = 'user_welcome';
Add after Добавьте после найденного на новую строку.

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

					if ($user->session_create($user_id, 0, 1))
					{
						$message .= '<br />' . $user->lang['LOGIN_REDIRECT'];
					}
Не пишите в ЛС и ICQ вопросы которые можете задать на форуме!
Заказы по разработке не выполняю!

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Re: Micro Mods - Полезные мелочи

Сообщение Anvar » 26.08.2014, 22:37 #2

Закрываем возможность редактировать свой профиль пользователям.

Отрываем ./includes/ucp/ucp_profile.php

Находим

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

                        if ($config['allow_birthdays'])
                        {
                            $sql_ary['user_birthday'] = $data['user_birthday'];
                        }
 
Вставляем после
где 1, 2, 3, 4, 5, 6, 7, 8, 9 - id пользователей кому запрещаем изменять профиль.

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

                        $user_no_id = '1, 2, 3, 4, 5, 6, 7, 8, 9'; // id пользователей через запятую.
                        $user_no_id = explode(',', $user_no_id);
                        $user_no_edit = array_search($user->data['user_id'], $user_no_id);
                        if ( $user_no_edit || $user_no_edit === 0 )
                        {
                            trigger_error('NOT_AUTHORISED');
                        }
 

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Фейковый онлайн пользователей

Сообщение Anvar » 07.09.2014, 09:00 #3

Делаем случайный, фейковый онлайн пользователей на форуме. Можно указать администраторов и модераторов, тогда они будут отображаться даже когда их нет в сети. Кому и как это может пригодится, решайте сами.

Открываем includes/functions.php

Находим

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

	$online_users['total_online'] = $online_users['guests_online'] + $online_users['visible_online'] + $online_users['hidden_online'];
Добавляем перед

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

	$users_id = array("2", "3", "4", "5", "6", "7", "8", "9"); // id Пользователей
	$users_random = array_rand($users_id, 5);
	$users_random = array(
		$users_id[$users_random[0]],
		$users_id[$users_random[1]],
		$users_id[$users_random[2]],
		$users_id[$users_random[3]],
		$users_id[$users_random[4]]
	);
	foreach ($users_random as &$user_feik_id)
	{
		@$online_users['online_users'][$user_feik_id] .= (int) $user_feik_id;
		@$online_users['visible_online']++;
	}
в данном примере можно увеличить количество выводимых случайных пользователей изменив значение, например 5 на 7 и после $users_id[$users_random[4]] добавляем в массив:

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

, $users_id[$users_random[5]], $users_id[$users_random[6]]
и т.д.

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Mini Micro Mods - Автор темы

Сообщение Anvar » 09.09.2014, 08:43 #4

Показываем автора темы [автор]

Открываем styles/bb3-mobi/template/viewtopic_body.html

Находим

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

<!-- IF postrow.POSTER_POSTS --> [<a href="{postrow.U_MINI_POST}">{postrow.POSTER_POSTS}</a>]<!-- ENDIF -->
Добавляем после

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

<!-- IF postrow.S_TOPIC_POSTER and S_USER_LOGGED_IN --> <span style="color:green;">[автор]</span><!-- ENDIF -->
А можно и заменить, если не хотите видеть счётчик постов)))

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Аватар пользователя на страницах

Сообщение Anvar » 19.09.2014, 12:11 #5

Вывод аватарки на любой странице форума

Открываем includes/functions.php

Находим

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

		'SITE_LOGO_IMG'			=> $user->img('site_logo'),
Добавляем после

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

		'USER_AVATAR'			=>($user->optionget('viewavatars') && function_exists('get_user_avatar')) ? get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']) : '',
(можно указать конкретные размеры, заменив $user->data['user_avatar_width'], $user->data['user_avatar_height'] например на 60, 60)

Далее в шаблоне вашего стиля выводим аватарку так:

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

<!-- IF USER_AVATAR -->{USER_AVATAR}</a><!-- ENDIF -->

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Mini Micro Mods - URL текущей страницы

Сообщение Anvar » 25.09.2014, 15:11 #6

Функция которая позволит определить текущий URL страницы в phpBB, может добавить параметры к URL или вырезать их. Очень полезная в некоторых случаях, например создать закладку или ссылку на текущую страницу с мобильной версией.

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

function request_url($get_path = false, $clear = false)
{
	global $config, $user;

	$server_name = $user->host;
	$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT');

	// Forcing server vars is the only way to specify/override the protocol
	if ($config['force_server_vars'] || !$server_name)
	{
		$server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://');
		$server_name = $config['server_name'];
		$server_port = (int) $config['server_port'];

		$url = $server_protocol . $server_name;
		$cookie_secure = $config['cookie_secure'];
	}
	else
	{
		// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection
		$cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0;
		$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name;
	}

	if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80)))
	{
		// HTTP HOST can carry a port number (we fetch $user->host, but for old versions this may be true)
		if (strpos($server_name, ':') === false)
		{
			$url .= ':' . $server_port;
		}
	}

	// Strip / from the end
	//if (substr($url, -1, 1) == '/')
	//{
	//	$url = substr($url, 0, -1);
	//}

	if (isset($_SERVER['REQUEST_URI']))
	{
		$url .= $_SERVER['REQUEST_URI'];
	}
	else if (isset($_SERVER['argv'])) 
	{
		$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['argv'][0];
	}
	else if (isset($_SERVER['QUERY_STRING']))
	{
		$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['QUERY_STRING'];
	}
	else
	{
		$url .= $_SERVER['SCRIPT_NAME'];
	}

	if ($get_path)
	{
		$url_delim = (strpos($url, '?') === false) ? '?' : ((strpos($url, '?') === strlen($url) - 1) ? '' : '&');
		if($clear)
		{
			$url_delim = array($url_delim . $get_path, '&' . $get_path, '?' . $get_path, $get_path);
			$url = str_replace($url_delim, "", $url);
		}
		else
		{
			$url .= $url_delim . $get_path;
		}
	}

	return $url;
}
Можно добавить её в includes/functions.php в самый низ перед ?>

Затем в шаблонах можно использовать так:
Найти: $template->assign_vars(array(
Добавить после:
'REQUEST_URL' => request_url(),


Применение:

echo request_url(); - Текущая страница.

echo request_url('versiya=priner'); - Добавит параметр &versiya=printer или ?versiya=printer (в зависимости как это требуется)

echo request_url('versiya=priner', true); - Удалит параметры (&versiya=printer, &versiya=printer или ?versiya=printer)

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Re: Mini Micro Mods - Полезные мелочи

Сообщение Anvar » 10.10.2014, 21:06 #7

Отправляем пользователю пароль после регистрации, в приветственном сообщении на e-mail.

Открываем language/ru/email/user_welcome.txt

Находим Имя пользователя: {USERNAME}
Добавляем после Пароль: {PASSWORD}

Аватара пользователя
Anvar
Администратор
Администратор
Сообщения: 1309
Зарегистрирован: 08.08.2014, 14:26

Re: Mini Micro Mods - Полезные мелочи

Сообщение Anvar » 14.10.2014, 10:34 #8

Делаем комментарии к файлам обязательными при загрузке вложений.

OPEN includes/message_parser.php

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

FIND
$upload_file = (isset($_FILES[$form_name]) && $_FILES[$form_name]['name'] != 'none' && trim($_FILES[$form_name]['name'])) ? true : false;
ADD AFTER

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

		if ($upload_file && !$this->filename_data['filecomment'])
		{
			$error[] = $user->lang('COMMENT_FIELDS_REQUIRED');
			$upload_file = false;
		}
FIND // Reindex Array

ADD BEFORE $num_attachments--;

FIND foreach ($error as $error_msg)

ADD BEFORE

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

if ($num_attachments && !empty($actual_comment_list) && array_search('', $actual_comment_list) !== false)
{
	$error[] = $user->lang('COMMENT_FIELDS_REQUIRED');
}
OPEN language/ru/posting.php

FIND

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

	'ATTACH_SIG'
ADD BEFORE

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

	'COMMENT_FIELDS_REQUIRED'				=> 'Комментарии к вложениям обязательны для заполнения',
Если используете jquery, то можно прокрутить к форме для загрузки вложений и заполнения комментария.

OPEN styles/prosilver/template/posting_attach_body.html

FIND

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

		<dd><textarea name="filecomment" id="filecomment" rows="1" cols="40" class="inputbox autowidth">{FILE_COMMENT}</textarea></dd>
ADD AFTER

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

		<!-- IF ERROR_ATTACHMENT -->
		<dd>
		<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
			<script type="text/javascript">
			$(document).ready(function() {
				$('#attach-panel').show("slow");
				$('#attach-panel-tab').toggleClass('activetab');
				$('#options-panel').hide(1000);
				destination = $('#message-box').offset().top;
				$('body, html').animate({scrollTop: destination}, 1100);
			});
			</script>
		</dd>
		<!-- ENDIF -->

Ответить