Мод реализует возможность вывести в полный профиль пользователя его реальную фотографию (на некоторых ресурсах пользуются. аватар - это для сообщений, а в профиле может быть и "настоящее лицо" пользователя). Фотография выводится как ссылка на фото, размещённое где-то на стороннем ресурсе. ссылка должен обязательно иметь "расширение", то есть .jpeg, например.
по умолчанию размер фотографии должен быть не больше 250 px по горизонтали и 400 px по вертикали. При клике по фотографии она открывается во внешнем слое на этой же странице (типа слайдера). В теме пользователя в его минипрофиле выводится иконка "фото", если он выставил свою фотографию в полном профиле.
данный мод создан на основе оригинального англоязычного варианта и варианта, переделанного автором Pthelovod. оба мода взяты здесь: оригинальная тема.
мною только добавлен вариант мода под стиль subsilver2.
Администратор может проверять и редактировать (удалять) некорректные ссылки-изображения.
Как это будет выглядеть в prosilver:
Как это будет выглядеть в subsilver2:
Ладно, со вступлением покончено, если вас заинтересовало - ставим.
Скачать мод из архива сайта:
Скачать из файлового архива сайта
Распаковать, содержимое папки root загрузить в корень сайта (где файл config.php)
После этого необходимо провести SQL-запрос для создания таблицы в базе данных:
Код: Выделить всё
ALTER TABLE `phpbb_users` ADD `user_profile_picture` VARCHAR( 255 ) NOT NULL DEFAULT '';
У кого проблемы с проведением запроса - можете скачать скрипт-установщик:
распаковать, файл db_update.php загрузить в корень сайта и провести запрос, набрав браузере
Код: Выделить всё
http://ваш сайт/db_update.php
после отработки запроса удалить файл db_update.php с сервера.
Теперь приступаем к правке файлов:
Общие правки для всех стилей:
Код: Выделить всё
<dd><textarea name="interests" id="interests" class="inputbox" rows="3" cols="30">{INTERESTS}</textarea></dd>
</dl>
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture -->
<dl>
<dt><label for="profile_picture">{L_PROFILE_PICTURE}:</label><br /><span>{L_LPP_EXPLAIN}</span></dt>
<dd><input type="text" id="profile_picture" name="profile_picture" size="53" value="{PROFILE_PICTURE}" title="{L_LPP_EXT}" /></dd>
</dl>
<!-- MOD: [END] -->
Код: Выделить всё
case 'profile':
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
$user->add_lang('mods/Linked_Profile_Picture');
Код: Выделить всё
'interests' => utf8_normalize_nfc(request_var('interests', $user_row['user_interests'], true)),
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'profile_picture' => request_var('profile_picture', $user_row['user_profile_picture']),
Код: Выделить всё
'interests' => array('string', true, 2, 500),
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'profile_picture' => array(
array('string', true, 12, 255),
array('match', true, '#^http[s]?://(.*?\.)*?[a-z0-9\-]+\.[a-z]{2,4}#i')),
Код: Выделить всё
'user_interests'=> $data['interests'],
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'user_profile_picture' => $data['profile_picture'],
Код: Выделить всё
'INTERESTS' => $data['interests'],
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'PROFILE_PICTURE' => $data['profile_picture'],
Код: Выделить всё
'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber',
Вставить после 'icon_contact_jabber',
Код: Выделить всё
'icon_contact_lpp',
Код: Выделить всё
$user->add_lang(array('viewtopic', 'memberlist'));
После 'memberlist'
Вставить
Код: Выделить всё
, 'mods/Linked_Profile_Picture'
Код: Выделить всё
'U_JABBER' => ($user_info['user_jabber'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&action=jabber&u=' . $author_id) : '',
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'U_LPP' => $auth->acl_get('u_viewprofile') && (!empty($user_info['user_profile_picture'])) ? $user_info['user_profile_picture'] : '',
Код: Выделить всё
'interests' => utf8_normalize_nfc(request_var('interests', $user->data['user_interests'], true)),
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'profile_picture' => request_var('profile_picture', $user->data['user_profile_picture']),
Код: Выделить всё
add_form_key('ucp_profile_info');
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
$user->add_lang('mods/Linked_Profile_Picture');
Код: Выделить всё
'interests' => array('string', true, 2, 500),
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'profile_picture' => array(
array('string', true, 12, 255),
array('match', true, '#^http[s]?://(.*?\.)*?[a-z0-9\-]+\.[a-z]{2,4}#i')),
Код: Выделить всё
'user_interests'=> $data['interests'],
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'user_profile_picture' => $data['profile_picture'],
Код: Выделить всё
'INTERESTS' => $data['interests'],
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'PROFILE_PICTURE' => $data['profile_picture'],
Код: Выделить всё
$user->setup(array('memberlist', 'groups'));
После 'groups'
Вставить
Код: Выделить всё
, 'mods/Linked_Profile_Picture'
Код: Выделить всё
'L_VIEWING_PROFILE' => sprintf($user->lang['VIEWING_PROFILE'], $username),
Вставить после найденного
Код: Выделить всё
//MOD_ Linked Profile Picture
'U_PROFILE_PICTURE' => (!empty($data['user_profile_picture'])) ? $data['user_profile_picture'] : '',
Код: Выделить всё
$user->setup('viewtopic', $topic_data['forum_style']);
Заменить 'viewtopic'
На данный код
Код: Выделить всё
array('viewtopic', 'mods/Linked_Profile_Picture')
Код: Выделить всё
'allow_pm' => 0,
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'lpp' => '',
Код: Выделить всё
'search' => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", 'search_author=' . urlencode($row['username']) .'&sr=posts') : '',
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'lpp' => $auth->acl_get('u_viewprofile') && $row['user_profile_picture'],
Код: Выделить всё
'U_JABBER' => $user_cache[$poster_id]['jabber'],
Вставить после найденного
Код: Выделить всё
// MOD: Linked Profile Picture
'U_LPP' => $user_cache[$poster_id]['lpp'],
Языковые файлы (ru/en):
Код: Выделить всё
'IMG_ICON_CONTACT_WWW' => 'Website',
Вставить после найденного:
Код: Выделить всё
//Mod: Linked Profile Picture
'IMG_ICON_CONTACT_LPP' => 'MOD: LPP',
Код: Выделить всё
'IMG_ICON_CONTACT_WWW' => 'Website',
Вставить после найденного:
Код: Выделить всё
//Mod: Linked Profile Picture
'IMG_ICON_CONTACT_LPP' => 'Мод: Фото в профиле (LPP)',
Стилевые правки:
Код: Выделить всё
img_icon_contact_msnm = icon_contact_msnm.gif*20*20
Вставить после найденного
Код: Выделить всё
# MOD: Linked Profile Picture
img_icon_contact_lpp = icon_contact_lpp.gif*20*20
Код: Выделить всё
<form method="post" action="{S_PROFILE_ACTION}" id="viewprofile">
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture --><!-- IF U_PROFILE_PICTURE -->
<!-- INCLUDE lpp/Linked_Profile_Picture.html --><!-- ENDIF --><!-- MOD: [END] -->
Код: Выделить всё
</body>
</html>
Вставить перед найденным
Код: Выделить всё
<!-- MOD: Linked Profile Picture - Hidden parts -->
<!-- IF U_PROFILE_PICTURE -->
<br clear="both" />
<div align="center" id="lpp_soft"></div><div align="center" id="lpp_w">
<div align="center" id="lpp_pic">
<img class="reflect ropacity35 rheight35" src="{U_PROFILE_PICTURE}" alt="" title="{L_LPP_USERNAME} {USERNAME}" onClick="MM_showHideLayers('lpp_soft','','hide');MM_showHideLayers('lpp_w','','hide')" />
</div>
</div><!-- ENDIF --><!-- MOD: [END] -->
Код: Выделить всё
<script type="text/javascript" src="{T_TEMPLATE_PATH}/forum_fn.js"></script>
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture --><!-- IF U_PROFILE_PICTURE -->
<script type="text/javascript" src="{T_TEMPLATE_PATH}/lpp/lpp.js"></script>
<link rel="stylesheet" href="{T_THEME_PATH}/x_custom.css" type="text/css" /><!-- ENDIF -->
Код: Выделить всё
<!-- IF U_PM or U_EMAIL or U_WWW or U_MSN or U_ICQ or U_YIM or U_AIM
После части строки U_AIM
Вставить
Код: Выделить всё
or U_LPP
Код: Выделить всё
<span>{L_JABBER}</span></a></li><!-- ENDIF -->
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture -->
<!-- IF U_LPP --><li class="lpp-icon"><a href="{U_MESSAGE_AUTHOR}" title="{L_PROFILE_PICTURE}"><span>{L_PROFILE_PICTURE}</span></a></li><!-- ENDIF -->
Код: Выделить всё
<dd><textarea name="interests" id="interests" class="inputbox" rows="3" cols="30">{INTERESTS}</textarea></dd>
</dl>
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture -->
<dl>
<dt><label for="profile_picture">{L_PROFILE_PICTURE}:</label><br /><span>{L_LPP_EXPLAIN}</span></dt>
<dd><input type="text" name="profile_picture" id="profile_picture" maxlength="255" value="{PROFILE_PICTURE}" class="inputbox" title="{L_LPP_EXT}" /></dd>
</dl>
<!-- MOD: [END] -->
Код: Выделить всё
<!-- IF postrow.U_PM or postrow.U_EMAIL or postrow.U_WWW or postrow.U_MSN or postrow.U_ICQ or postrow.U_YIM or postrow.U_AIM
После postrow.U_AIM
Добавить
Код: Выделить всё
or postrow.U_LPP
Код: Выделить всё
<span>{L_JABBER}</span></a></li><!-- ENDIF -->
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture -->
<!-- IF postrow.U_LPP --><li class="lpp-icon"><a href="{postrow.U_POST_AUTHOR}" title="{L_PROFILE_PICTURE}"><span>{L_PROFILE_PICTURE}</span></a></li><!-- ENDIF -->
Код: Выделить всё
.quote-icon, .quote-icon a { background: none top left no-repeat; }
Вставить после найденного
Код: Выделить всё
/* MOD: Linked Profile Picture */
.lpp-icon, .lpp-icon a { background: none top left no-repeat; }
Код: Выделить всё
ul.profile-icons li.jabber-icon { width: {IMG_ICON_CONTACT_JABBER_WIDTH}px; height: {IMG_ICON_CONTACT_JABBER_HEIGHT}px; }
Вставить после найденного
Код: Выделить всё
/* MOD: Linked Profile Picture */
ul.profile-icons li.lpp-icon { width: {IMG_ICON_CONTACT_LPP_WIDTH}px; height: {IMG_ICON_CONTACT_LPP_HEIGHT}px; }
Код: Выделить всё
.quote-icon, .quote-icon a { background-image: url("{IMG_ICON_POST_QUOTE_SRC}"); }
Вставить после найденного
Код: Выделить всё
/* MOD: Linked Profile Picture */
.lpp-icon, .lpp-icon a { background-image: url("{IMG_ICON_CONTACT_LPP_SRC}"); }
Код: Выделить всё
<table class="tablebg" width="100%" cellspacing="1">
<tr>
<th colspan="2" nowrap="nowrap">{L_VIEWING_PROFILE}</th>
</tr>
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture --><!-- INCLUDE lpp/Linked_Profile_Picture.html --><!-- MOD: [END] -->
Код: Выделить всё
</body>
</html>
Вставить перед найденным
Код: Выделить всё
<!-- MOD: Linked Profile Picture - Hidden parts -->
<!-- IF U_PROFILE_PICTURE -->
<br clear="both" />
<div align="center" id="lpp_soft"></div><div align="center" id="lpp_w">
<div align="center" id="lpp_pic">
<img class="reflect ropacity35 rheight35" src="{U_PROFILE_PICTURE}" alt="" title="{L_LPP_USERNAME} {USERNAME}" onClick="MM_showHideLayers('lpp_soft','','hide');MM_showHideLayers('lpp_w','','hide')" />
</div>
</div><!-- ENDIF --><!-- MOD: [END] -->
Код: Выделить всё
</head>
<body class="{S_CONTENT_DIRECTION}">
Вставить перед найденным
Код: Выделить всё
<!-- MOD: Linked Profile Picture --><!-- IF U_PROFILE_PICTURE -->
<script type="text/javascript" src="{T_TEMPLATE_PATH}/lpp/lpp.js"></script>
<link rel="stylesheet" href="{T_THEME_PATH}/x_custom.css" type="text/css" /><!-- ENDIF -->
Код: Выделить всё
<tr>
<td class="row1" width="35%"><b class="genmed">{L_INTERESTS}: </b></td>
<td class="row2"><textarea class="post" name="interests" rows="3" cols="30">{INTERESTS}</textarea></td>
</tr>
Вставить после найденного
Код: Выделить всё
<!-- MOD: Linked Profile Picture -->
<tr>
<td class="row1" width="35%"><b class="genmed">{L_PROFILE_PICTURE}: </b><br /><span class="gensmall">{L_LPP_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" name="profile_picture" id="profile_picture" size="30 maxlength="255" value="{PROFILE_PICTURE}" title="{L_LPP_EXT}" /></td>
</tr>
<!-- MOD: [END] -->
Открыть styles/subsilver2/template/viewtopic_body.html
Код: Выделить всё
<!-- IF postrow.ONLINE_IMG -->
<tr>
<td>{postrow.ONLINE_IMG}</td>
</tr>
<!-- ENDIF -->
Заменить найденное на
Код: Выделить всё
<tr>
<td>
<table width="100%">
<tr>
<td width="50% align="left"><!-- IF postrow.ONLINE_IMG -->{postrow.ONLINE_IMG}<!-- ENDIF --></td>
<td width="50% align="right"><!-- MOD: Linked Profile Picture --><!-- IF postrow.U_LPP --><a href="{postrow.U_POST_AUTHOR}" title="{L_PROFILE_PICTURE}"><img src="{T_IMAGESET_PATH}/icon_contact_lpp.gif" style="float:right;" /></a><!-- ENDIF --><!-- MOD: [END] --></td>
</tr>
</table>
</td>
</tr>
Вроде бы всё. где чего (если) накосячил - пишите. мод проверен в работе - глюков не замечено.
Теперь вам необходимо почистить кэши (для просилвера - картинки, темы, шаблон + кэш браузера, для сабсилвера достаточно очистить кэш шаблона и (может быть) браузера). всё должно заработать сразу.
Правок хватает, но они все несложные. делайте внимательно и всё получится.
Успехов в применении.
Код: Выделить всё
ALTER TABLE `phpbb_users` DROP `user_profile_picture`;
У кого трудности с проведением запроса - можно скачать установщик и инициировать его, как написано в начале темы:
если чего ещё появится информационного - напишу здесь.
вот такой код:
Код: Выделить всё
<!-- IF U_PROFILE_PICTURE -->здесь ваш код вывода фото<!-- ENDIF -->
даст вам полное сокрытие поля вывода при отсутствии фото.
вот такой код, который оборачивает условия вокруг картинки:
Код: Выделить всё
<!-- IF U_PROFILE_PICTURE --><img src="{U_PROFILE_PICTURE}" alt="" title="{L_LPP_TITLE}" /><!-- ELSE --> фотография отсутствует <!-- ENDIF -->
даст вывод надписи фотография отсутствует вместо пустого поля (отсутствующей фотографии. можете вместо надписи прописать изображение-заглушку. (при этом варианте надписи сверху и снизу, как
• Фото в профиле пользователя •
и
• Знакомьтесь, это я... •
будут выводится.
Успехов в применении.