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

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

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
Администратор
Администратор
Сообщения: 1272
Зарегистрирован: 08.08.2014, 14:26
Репутация: 362

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 === )
                        {
                            
trigger_error('NOT_AUTHORISED');
                        }
 

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

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

Сообщение 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
Администратор
Администратор
Сообщения: 1272
Зарегистрирован: 08.08.2014, 14:26
Репутация: 362

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
Администратор
Администратор
Сообщения: 1272
Зарегистрирован: 08.08.2014, 14:26
Репутация: 362

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

Сообщение 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
Администратор
Администратор
Сообщения: 1272
Зарегистрирован: 08.08.2014, 14:26
Репутация: 362

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) ? '' : '&amp;');
      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'); - Добавит параметр &amp;versiya=printer или ?versiya=printer (в зависимости как это требуется)

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

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

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

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

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

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

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

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

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 -->


Вернуться в «Расширения, модули и хаки»