Белк на PhpBB 3.0.14
https://belk.info/phpbb/

Genders phpbb3
https://belk.info/phpbb/viewtopic.php?f=2&t=193
Страница 1 из 1

Автор:  Belk [ 30 май 2026, 13:24 ]
Заголовок сообщения:  Genders phpbb3

Genders / Пол пользователя

мод позволяет вывести в профиль пользователя его пол (гендер). можно выбрать один из двух полов (муж.) или (жен.). остальное "разнообразие" не рассматривается.

сам мод взял здесь.

Скрины вывода получившегося творения в профиле пользователя и в теме:
Вложение:
gender_item.png
gender_item.png [ 57.47 КБ | Просмотров: 45 ] gender_item.png



Вложение:
gender_profil.png
gender_profil.png [ 42.46 КБ | Просмотров: 45 ] gender_profil.png



Установка:

скачать из архива сайта

Распаковать, содержимое папки root загрузить на сервер вашего сайта (где файл config.php).

Редактирование файлов:

Общие правки
Открыть memberlist.php
Найти

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

include($phpbb_root_path . 'includes/functions_display.' . $phpEx);


Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
include($phpbb_root_path . 'includes/functions_genders.' . $phpEx);
//-- fin mod : Genders --------------------------------------------------------


Найти (показана только часть строки)

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

, u.user_allow_pm


Вставить в строчку после найденной части

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

, u.user_gender


Найти

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

            'U_VIEW_PROFILE'   => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
            'USER_GENDER'      => get_user_gender($row['user_gender']),
//-- fin mod : Genders --------------------------------------------------------


Найти

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

      'S_JABBER_ENABLED'   => ($config['jab_enable']) ? true : false,


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
      'USER_GENDER_IMG'   => get_user_gender($data['user_gender']),
      'USER_GENDER'      => get_user_gender($data['user_gender'], true),
//-- fin mod : Genders --------------------------------------------------------


Открыть viewtopic.php
Найти

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

include($phpbb_root_path . 'includes/bbcode.' . $phpEx);


Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
include($phpbb_root_path . 'includes/functions_genders.' . $phpEx);
//-- fin mod : Genders --------------------------------------------------------


Найти

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

            'age'            => '',


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
            'gender_img'      => '',
            'gender'         => '',
//-- fin mod : Genders --------------------------------------------------------


Найти

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

            'age'         => '',


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
            'gender_img'   => get_user_gender($row['user_gender']),
            'gender'      => get_user_gender($row['user_gender'], true),
//-- fin mod : Genders --------------------------------------------------------


Найти

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

      'POSTER_AGE'      => $user_cache[$poster_id]['age'],


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
      'POSTER_GENDER_IMG'   => $user_cache[$poster_id]['gender_img'],
      'POSTER_GENDER'      => $user_cache[$poster_id]['gender'],
//-- fin mod : Genders --------------------------------------------------------


Открыть adm/style/acp_users_profile.html
Найти

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

      <dd>{L_DAY}: <select id="birthday" name="bday_day">{S_BIRTHDAY_DAY_OPTIONS}</select> {L_MONTH}: <select name="bday_month">{S_BIRTHDAY_MONTH_OPTIONS}</select> {L_YEAR}: <select name="bday_year">{S_BIRTHDAY_YEAR_OPTIONS}</select></dd>
   </dl>


Вставить после найденного

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

   <dl>
      <dt><label for="gender_x">{L_GENDER}:</label><br /><span>{L_GENDER_EXPLAIN}</span></dt>
      <dd>
         <input type="radio" name="gender" id="gender_m" value="{GENDER_M}"<!-- IF S_GENDER_M --> checked="checked"<!-- ENDIF --> /> {L_GENDER_M}
         <input type="radio" name="gender" id="gender_f" value="{GENDER_F}"<!-- IF S_GENDER_F --> checked="checked"<!-- ENDIF --> /> {L_GENDER_F}
         <input type="radio" name="gender" id="gender_x" value="{GENDER_X}"<!-- IF S_GENDER_X --> checked="checked"<!-- ENDIF --> /> {L_GENDER_X}
      </dd>
   </dl>


Открыть includes/constants.php
Найти

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

// Additional constants


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
define('GENDER_F', 2); // Ladies first ;)
define('GENDER_X', 0);
define('GENDER_M', 1);
//-- fin mod : Genders --------------------------------------------------------


Открыть includes/acp/acp_styles.php
Найти (показана только часть строки)

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

, 'icon_foe'


Вставить в эту же строчку после найденного фрагмента

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

, 'icon_gender_x', 'icon_gender_m', 'icon_gender_f'


Открыть includes/acp/acp_users.php
Найти

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

               'bday_year'      => 0,


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
               'gender'      => request_var('gender', $user_row['user_gender']),
//-- fin mod : Genders --------------------------------------------------------


Найти

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

                  'bday_year'      => array('num', true, 1901, gmdate('Y', time())),


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
                  'gender'      => array('num', true, 0, 2),
//-- fin mod : Genders --------------------------------------------------------


Найти

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

                     'user_birthday'   => $data['user_birthday'],


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
                     'user_gender'   => $data['gender'],
//-- fin mod : Genders --------------------------------------------------------


Найти

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

               'S_BIRTHDAY_DAY_OPTIONS'   => $s_birthday_day_options,


Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
               'GENDER_X'      => GENDER_X,
               'GENDER_M'      => GENDER_M,
               'GENDER_F'      => GENDER_F,

               'S_GENDER_X'   => ($data['gender'] == GENDER_X) ? true : false,
               'S_GENDER_M'   => ($data['gender'] == GENDER_M) ? true : false,
               'S_GENDER_F'   => ($data['gender'] == GENDER_F) ? true : false,
//-- fin mod : Genders --------------------------------------------------------


Открыть includes/ucp/ucp_profile.php
Найти

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

               'interests'      => utf8_normalize_nfc(request_var('interests', $user->data['user_interests'], true)),


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
               'gender'      => request_var('gender', $user->data['user_gender']),
//-- fin mod : Genders --------------------------------------------------------


Найти

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

                  'interests'      => array('string', true, 2, 500),


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
                  'gender'      => array('num', true, 0, 2),
//-- fin mod : Genders --------------------------------------------------------


Найти

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

                        'user_interests'=> $data['interests'],


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
                     'user_gender'   => $data['gender'],
//-- fin mod : Genders --------------------------------------------------------


Найти

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

               'INTERESTS'   => $data['interests'],


Вставить после найденного

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

//-- mod : Genders ------------------------------------------------------------
//-- add
               'GENDER_X'      => GENDER_X,
               'GENDER_M'      => GENDER_M,
               'GENDER_F'      => GENDER_F,

               'S_GENDER_X'   => ($data['gender'] == GENDER_X) ? true : false,
               'S_GENDER_M'   => ($data['gender'] == GENDER_M) ? true : false,
               'S_GENDER_F'   => ($data['gender'] == GENDER_F) ? true : false,
//-- fin mod : Genders --------------------------------------------------------


языковые правки en
Открыть language/en/common.php
Найти



Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
$lang = array_merge($lang, array(
   'GENDER'         => 'Gender',
   'GENDER_EXPLAIN'   => 'Please enter your gender here.',
   'GENDER_X'         => 'None specified',
   'GENDER_M'         => 'Male',
   'GENDER_F'         => 'Female',
));
//-- fin mod : Genders --------------------------------------------------------


Открыть language/en/acp/styles.php
Найти



Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
$lang = array_merge($lang, array(
   'IMG_ICON_GENDER_X'   => 'Gender: None specified',
   'IMG_ICON_GENDER_M'   => 'Gender: Male',
   'IMG_ICON_GENDER_F'   => 'Gender: Female',
));
//-- fin mod : Genders --------------------------------------------------------


языковые правки ru
Открыть language/ru/common.php
Найти



Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
$lang = array_merge($lang, array(
   'GENDER'         => 'Пол',
   'GENDER_EXPLAIN'   => 'Пожалуйста, укажите ваш пол',
   'GENDER_X'         => 'Не указано',
   'GENDER_M'         => 'Мужчина',
   'GENDER_F'         => 'Женщина',
));
//-- fin mod : Genders --------------------------------------------------------


Открыть language/ru/acp/styles.php
Найти



Вставить перед найденным

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

//-- mod : Genders ------------------------------------------------------------
//-- add
$lang = array_merge($lang, array(
   'IMG_ICON_GENDER_X'   => 'Пол: не указано',
   'IMG_ICON_GENDER_M'   => 'Пол: мужчина',
   'IMG_ICON_GENDER_F'   => 'Пол: женщина',
));
//-- fin mod : Genders --------------------------------------------------------


для стилей на основе prosilver
Открыть styles/prosilver/imageset/imageset.cfg
Найти

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

img_icon_user_warn = icon_user_warn.gif*20*20


Вставить после найденного

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

img_icon_gender_x = icon_gender_x.gif
img_icon_gender_m = icon_gender_m.gif
img_icon_gender_f = icon_gender_f.gif


Открыть styles/prosilver/template/memberlist_body.html
Найти (показана только часть строки)

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

{memberrow.USERNAME_FULL}


Вставить в эту же строку после найденного

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

 {memberrow.USER_GENDER_IMG}


Открыть styles/prosilver/template/memberlist_leaders.html
Найти (показана только часть строки)

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

{admin.USERNAME_FULL}


Вставить после найденного фрагмента в эту же строку

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

 {admin.USER_GENDER}


Найти (показана только часть строки)

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

{mod.USERNAME_FULL}


Вставить после найденного фрагмента в эту же строку

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

 {mod.USER_GENDER}


Открыть styles/prosilver/template/memberlist_view.html
Найти

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

      <!-- IF LOCATION --><dt>{L_LOCATION}:</dt> <dd>{LOCATION}</dd><!-- ENDIF -->


Вставить перед найденным

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

      <!-- IF USER_GENDER --><dt>{L_GENDER}:</dt> <dd>{USER_GENDER_IMG}</dd><!-- ENDIF -->


Открыть styles/prosilver/template/ucp_profile_profile_info.html
Найти

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

            <label for="bday_year">{L_YEAR}: <select name="bday_year" id="bday_year" style="width: 6em;">{S_BIRTHDAY_YEAR_OPTIONS}</select></label>
         </dd>
      </dl>
   <!-- ENDIF -->


Вставить после найденного

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

   <dl>
      <dt><label for="gender_x">{L_GENDER}:</label><br /><span>{L_GENDER_EXPLAIN}</span></dt>
      <dd>
         <label for="gender_m"><input type="radio" name="gender" id="gender_m" value="{GENDER_M}"<!-- IF S_GENDER_M --> checked="checked"<!-- ENDIF --> /> {L_GENDER_M}</label>
         <label for="gender_f"><input type="radio" name="gender" id="gender_f" value="{GENDER_F}"<!-- IF S_GENDER_F --> checked="checked"<!-- ENDIF --> /> {L_GENDER_F}</label>
         <label for="gender_x"><input type="radio" name="gender" id="gender_x" value="{GENDER_X}"<!-- IF S_GENDER_X --> checked="checked"<!-- ENDIF --> /> {L_GENDER_X}</label>
      </dd>
   </dl>


Открыть styles/prosilver/template/viewtopic_body.html
Найти

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

      <!-- IF postrow.POSTER_FROM --><dd><strong>{L_LOCATION}:</strong> {postrow.POSTER_FROM}</dd><!-- ENDIF -->


Вставить после найденного

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

      <!-- IF postrow.POSTER_GENDER --><dd><strong>{L_GENDER}:</strong> {postrow.POSTER_GENDER_IMG}</dd><!-- ENDIF -->


для стилей на основе subsilver2
Открыть styles/subsilver2/imageset/imageset.cfg
Найти

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

img_icon_topic_unapproved = icon_topic_unapproved.gif*18*19


Вставить после найденного

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

img_icon_gender_x = icon_gender_x.gif
img_icon_gender_m = icon_gender_m.gif
img_icon_gender_f = icon_gender_f.gif


Открыть styles/subsilver2/template/memberlist_body.html
Найти (показана только часть строки)

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

{memberrow.USERNAME_FULL}


Вставить в эту же строку после найденного

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

 {memberrow.USER_GENDER_IMG}


Открыть styles/subsilver2/template/memberlist_leaders.html
Найти (показана только часть строки)

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

{admin.USERNAME_FULL}</strong>


Вставить в эту же строку после найденного

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

 {admin.USER_GENDER}


Найти (показана только часть строки)

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

{mod.USERNAME_FULL}</strong>


Вставить в эту же строку после найденного

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

 {mod.USER_GENDER}


Открыть styles/subsilver2/template/memberlist_view.html
Найти

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

            <td><!-- IF INTERESTS --><b class="genmed">{INTERESTS}</b><!-- ENDIF --></td>
         </tr>


Вставить после найденного

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

         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" nowrap="nowrap">{L_GENDER}: </td>
            <td><b class="genmed">{USER_GENDER_IMG}</b></td>
         </tr>


Открыть styles/subsilver2/template/ucp_profile_profile_info.html
Найти

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

      <td class="row2"><span class="genmed">{L_DAY}:</span> <select name="bday_day">{S_BIRTHDAY_DAY_OPTIONS}</select> <span class="genmed">{L_MONTH}:</span> <select name="bday_month">{S_BIRTHDAY_MONTH_OPTIONS}</select> <span class="genmed">{L_YEAR}:</span> <select name="bday_year">{S_BIRTHDAY_YEAR_OPTIONS}</select></td>
   </tr>
<!-- ENDIF -->


Вставить после найденного

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

<tr>
   <td class="row1" width="35%"><b class="genmed"><label for="gender_x">{L_GENDER}:</label> </b><br /><span class="gensmall">{L_GENDER_EXPLAIN}</span></td>
   <td class="row2">
      <label for="gender_m"><input type="radio" name="gender" id="gender_m" value="{GENDER_M}"<!-- IF S_GENDER_M --> checked="checked"<!-- ENDIF --> /> {L_GENDER_M}</label>
      <label for="gender_f"><input type="radio" name="gender" id="gender_f" value="{GENDER_F}"<!-- IF S_GENDER_F --> checked="checked"<!-- ENDIF --> /> {L_GENDER_F}</label>
      <label for="gender_x"><input type="radio" name="gender" id="gender_x" value="{GENDER_X}"<!-- IF S_GENDER_X --> checked="checked"<!-- ENDIF --> /> {L_GENDER_X}</label>
   </td>
</tr>


Открыть styles/subsilver2/template/viewtopic_body.html
Найти

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

               <!-- IF postrow.POSTER_FROM --><br /><b>{L_LOCATION}:</b> {postrow.POSTER_FROM}<!-- ENDIF -->


Вставить после найденного

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

               <!-- IF postrow.POSTER_GENDER --><br /><b>{L_GENDER}:</b> {postrow.POSTER_GENDER_IMG}<!-- ENDIF -->


Для завершения установки запустите файл genders_mod_install.php
через ваш браузер по адресу

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

http://ваш сайт/genders_mod_install.php


После этого очистите кэши шаблонов, тем и рисунков и можете, в личном разделе, выбрать то, что вам необходимо.

Доработка по созданию поля выбора пола при регистрации на сайте.
предложена пользователем Dmitry (Дмитрий):

доработка
Выглядеть будет так:

Вложение:
Вложение gender_registr.png больше недоступно


данное поле получается обязательным при регистрации и без его заполнения регистрацию не пройти.

Правка (выберите себе правки по стилю и языку):

Открыть includes/ucp/ucp_register.php
Найти

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

               'tz'            => request_var('tz', (float) $config['board_timezone']),


Вставить после найденного

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

                  //-- mod : BB Genders Plus ------------------------------------------------------------
                                        'gender'            => request_var('gender', $user->data['user_gender']),
                                //-- end mod : Genders --------------------------------------------------------


Найти

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

            'tz'            => request_var('tz', (float) $timezone),


Вставить после найденного

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

      //-- mod : BB Genders Plus ------------------------------------------------------------
                        'gender'            => request_var('gender', $user->data['user_gender']),
      //-- end mod : Genders -------------------------------------------------------


Найти

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

            'lang'            => array('language_iso_name'),


Вставить после найденного

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

                    //-- mod : BB Genders Plus ------------------------------------------------------------
                                'gender'            => array('num', false, 1, 2),
                    //-- end mod : Genders -------------------------------------------------------


Найти

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

              'user_inactive_time'   => $user_inactive_time,


Вставить после найденного

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

                              //-- mod : BB Genders Plus ------------------------------------------------------------
                                        'user_gender'         => $data['gender'],
                              //-- end mod : Genders --------------------------------------------------------


Найти

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

         'S_TZ_OPTIONS'      => tz_select($data['tz']),


Вставить после найденного

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

         //-- mod : BB Genders Plus ------------------------------------------------------------
                        'GENDER_X'         => GENDER_X,
                        'GENDER_M'         => GENDER_M,
                        'GENDER_F'         => GENDER_F,

                        'S_GENDER_X'         => ($data['gender'] == GENDER_X) ? true : false,
                        'S_GENDER_M'         => ($data['gender'] == GENDER_M) ? true : false,
                        'S_GENDER_F'         => ($data['gender'] == GENDER_F) ? true : false,
                   //-- end mod : Genders --------------------------------------------------------


Открыть styles/prosilver/template/ucp_register.html
Найти

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

   <dl>
      <dt><label for="tz">{L_TIMEZONE}:</label></dt>
      <dd><select name="tz" id="tz" tabindex="7" class="autowidth">{S_TZ_OPTIONS}</select></dd>
   </dl>


Вставить после найденного

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

        <dl>
                <dt><label for="gender_x">{L_GENDER}:</label><br /><span>{L_GENDER_EXPLAIN}</span></dt>
                <dd>
                <label for="gender_m"><input type="radio" name="gender" id="gender_m" value="{GENDER_M}"<!-- IF S_GENDER_M --> checked="checked"<!-- ENDIF --> /> {L_GENDER_M}</label>
                <label for="gender_f"><input type="radio" name="gender" id="gender_f" value="{GENDER_F}"<!-- IF S_GENDER_F --> checked="checked"<!-- ENDIF --> /> {L_GENDER_F}</label>
                <label for="gender_x"><input type="radio" name="gender" id="gender_x" value="{GENDER_X}"<!-- IF S_GENDER_X --> checked="checked"<!-- ENDIF --> /> {L_GENDER_X}</label>
                <br /><br />{L_GENDER_REGISTER}
                </dd>
        </dl>


Открыть styles/subsilver2/template/ucp_register.html
Найти

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

<tr>
   <td class="row1"><b class="genmed">{L_TIMEZONE}: </b></td>
   <td class="row2"><select name="tz">{S_TZ_OPTIONS}</select></td>
</tr>


Вставить после найденного

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

<tr>
   <td class="row1" width="35%"><b class="genmed"><label for="gender_x">{L_GENDER}:</label> </b><br /><span class="gensmall">{L_GENDER_EXPLAIN}</span></td>
   <td class="row2">
      <label for="gender_m"><input type="radio" name="gender" id="gender_m" value="{GENDER_M}"<!-- IF S_GENDER_M --> checked="checked"<!-- ENDIF --> /> {L_GENDER_M}</label>
      <label for="gender_f"><input type="radio" name="gender" id="gender_f" value="{GENDER_F}"<!-- IF S_GENDER_F --> checked="checked"<!-- ENDIF --> /> {L_GENDER_F}</label>
      <label for="gender_x"><input type="radio" name="gender" id="gender_x" value="{GENDER_X}"<!-- IF S_GENDER_X --> checked="checked"<!-- ENDIF --> /> {L_GENDER_X}</label>
                <br />{L_GENDER_REGISTER}
   </td>
</tr>


Открыть language/ru/common.php
Найти

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

   'GENDER_F'         => 'Женщина',


Вставить после найденного

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

   'GENDER_REGISTER'  => '<strong>!! Указание вашего пола обязательно</strong>',


Открыть language/en/common.php
Найти

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

   'GENDER_F'         => 'Female',


Вставить после найденного

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

        'GENDER_REGISTER'  => '<strong>!! Your gender is mandatory</strong>',




Вроде бы всё. Успехов в применении.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/