CLANGAMING.Net Форуми CLANGAMING.Net
Българският портал за CS 1.6
 
 Въпроси/ОтговориВъпроси/Отговори   ТърсенеТърсене   ПотребителиПотребители   Потребителски групиПотребителски групи   Регистрирайте сеРегистрирайте се 
 ПрофилПрофил   Влезте, за да видите съобщенията сиВлезте, за да видите съобщенията си   ВходВход 

Урок: Как да се показва подписът в профила

 
Създайте нова тема   Напишете отговор    CLANGAMING.Net Форуми -> Уеб програмиране
Предишната тема :: Следващата тема  
Автор Съобщение
AetheldredaBG
Главен Администратор
Главен Администратор
AetheldredaBG

Регистриран на: 14 Сеп 2026
Мнения: 15
Местожителство: София, България

МнениеПуснато на: Сря Сеп 16, 2026 11:18 pm    Заглавие: Урок: Как да се показва подписът в профила Отговорете с цитат

Урок: Как да се показва подписът в профила
Тема: subSilver • phpBB 2.x • страница на профила • CLANGAMING.NET

Внимание: Този урок е писан специално за CLANGAMING.NET. Копирането, препубликуването или разпространението му без знание и съгласие на администрацията на CLANGAMING.NET не е позволено.

Какво ще получиш:
В профила на потребителя, най-отдолу, се появява блок Подпис. Текстът се показва със BBCode, линкове и усмивки, както в мненията. Ако потребителят няма подпис, блокът не се показва.

Файлове:

  1. includes/usercp_viewprofile.php
  2. templates/subSilver/profile_view_body.tpl


Направи копие на двата файла преди да пипаш.
Нови езикови редове не са нужни — phpBB2 вече има $lang['Signature'].


Стъпка 1 — Обработи подписа в PHP

Отвори:
Код:
includes/usercp_viewprofile.php


Намери този край (след иконите за търсене):

Код:
$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($profiledata['username']) . "&showresults=posts");
$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '" title="' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '" border="0" /></a>';
$search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '</a>';

//
// Generate page
//


Между $search = ... и коментара Generate page постави:

Код:
if ( !function_exists('bbencode_second_pass') )
{
   include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
}

$user_sig = '';
if ( $board_config['allow_sig'] && $profiledata['user_sig'] != '' )
{
   $user_sig = $profiledata['user_sig'];
   $user_sig_bbcode_uid = $profiledata['user_sig_bbcode_uid'];

   if ( !$board_config['allow_html'] )
   {
      $user_sig = preg_replace('#(<)([\/]?.*?)(>)#is', "&lt;\\2&gt;", $user_sig);
   }

   if ( $user_sig_bbcode_uid != '' )
   {
      $user_sig = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($user_sig, $user_sig_bbcode_uid) : preg_replace("/\:$user_sig_bbcode_uid/si", '', $user_sig);
   }

   $user_sig = make_clickable($user_sig);

   if ( $board_config['allow_smilies'] && $profiledata['user_allowsmile'] )
   {
      $user_sig = smilies_pass($user_sig);
   }

   $orig_word = array();
   $replacement_word = array();
   obtain_word_list($orig_word, $replacement_word);
   if ( count($orig_word) )
   {
      $user_sig = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "@preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $user_sig . '<'), 1, -1));
   }

   $user_sig = str_replace("\n", "\n<br />\n", $user_sig);
}


Този код:

  • взима подписа от профила
  • обработва BBCode
  • прави линковете кликаеми
  • показва усмивки
  • цензурира забранени думи
  • пази новите редове



Стъпка 2 — Предай подписа към шаблона

Все още в includes/usercp_viewprofile.php намери в $template->assign_vars:

Код:
   'INTERESTS' => ( $profiledata['user_interests'] ) ? $profiledata['user_interests'] : '&nbsp;',
   'AVATAR_IMG' => $avatar_img,


Става:

Код:
   'INTERESTS' => ( $profiledata['user_interests'] ) ? $profiledata['user_interests'] : '&nbsp;',
   'AVATAR_IMG' => $avatar_img,
   'USER_SIG' => $user_sig,



После намери:

Код:
   'L_INTERESTS' => $lang['Interests'],


Директно под него добави:

Код:
   'L_SIGNATURE' => $lang['Signature'],



Накрая намери:

Код:
   'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
);

$template->pparse('body');


Става:

Код:
   'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
);

if ( $user_sig != '' )
{
   $template->assign_block_vars('switch_user_sig', array());
}

$template->pparse('body');


Без switch_user_sig HTML блокът няма да се покаже.

Запази файла.


Стъпка 3 — Покажи блока в HTML

Отвори:
Код:
templates/subSilver/profile_view_body.tpl


Намери края на основната таблица. Преди затварящия </table> на голямата forumline таблица (не на малката вътрешна) има:

Код:
     </table>
   </td>
  </tr>
</table>


Това е след контактите (ICQ и т.н.). Замени го с:

Код:
     </table>
   </td>
  </tr>
  <!-- BEGIN switch_user_sig -->
  <tr>
   <td class="catLeft" colspan="2" height="28"><b><span class="gen">{L_SIGNATURE}</span></b></td>
  </tr>
  <tr>
   <td class="row1" colspan="2"><span class="postbody">{USER_SIG}</span></td>
  </tr>
  <!-- END switch_user_sig -->
</table>


Запази файла.


Стъпка 4 — Проверка


  1. Качи файловете, ако редактираш локално
  2. Отвори профил на потребител, който има подпис
  3. Натисни Ctrl + F5
  4. Най-отдолу трябва да има заглавие Подпис и самият текст
  5. Отвори профил без подпис — този блок трябва да липсва



Често срещани грешки


  • HTML е пипнат, но няма switch_user_sig в PHP — блокът не се показва
  • В Админ панела подписите са изключени (allow_sig) — тогава нарочно не се показва нищо
  • Потребителят няма попълнен подпис в Профил → Подпис
  • Пипнат е грешният </table> (вътрешната таблица за контакти, а не голямата)



Авторски права
Този урок е писан за CLANGAMING.NET.
Копирането му без знание и съгласие не е позволено.
_________________
CLANGAMING.Net Administrator
Гейминг общност & Уеб разработки
Гледайте ни в Twitch: AetheldredaBG
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
Покажи мнения от преди:   
Създайте нова тема   Напишете отговор    CLANGAMING.Net Форуми -> Уеб програмиране Часовете са според зоната GMT
Страница 1 от 1

 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети


Powered by phpBB © 2001, 2005 phpBB Group
Translation by: Boby Dimitrov