Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Мод Show user groups

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Chainik
phpBB 1.2.0
Сообщения: 17
Стаж: 18 лет 9 месяцев
Контактная информация:

Мод Show user groups

Сообщение Chainik »

Установил мод Show user groups (добавляет информацию о группах, в которых состоит пользователь, в профиль пользователя и на страницу просмотра темы).

Скачать с phpbbGuru

Drypal refreshe

При заходе не страницу просмотра темы viewtopic.php выдает ошибку:
Fatal error: Call to undefined function: flush_block_vars() in /home/www/csbp/htdocs/forum/includes/functions_usergroup.php on line 43
В английском не силен, насколько понимаю - ссылка на отсутствующую функцию flush_block_vars()
Как и где ее прописать?
Кусок кода functions_usergroup.php со строкой 43:
{
$template->set_filenames(array(
'group_body' => ($template_file) ? $template_file.'.tpl' : 'show_usergroup.tpl'));
$template->flush_block_vars('group');

while (list($group_number, $group) = each($group_list))
{
$group_img = ($images['groups'][$group['group_id']]) ? '<img src="'.$images['groups'][$group['group_id']].'" border="0" alt="'.$group['group_name'].'">' : '';
$group_url = append_sid("groupcp.$phpEx?g=".$group['group_id']);
$template->assign_block_vars('group', array(
'GROUP_ID' => $group['group_id'],
'GROUP_NAME' => $group['group_name'],
'GROUP_IMG' => $group_img,
'U_GROUP' => $group_url
));
Надеюсь на помощь.
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 19 лет 11 месяцев
Откуда: Estonia, Tallinn
Контактная информация:

Сообщение Vladson »

Проверьте правильность установки мода, 99% что была допущена ошибка во время установки (точнее сказать не могу, я себе никогда не ставил этот мод, но пологаю что вы что-то пропустили)
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Chainik
phpBB 1.2.0
Сообщения: 17
Стаж: 18 лет 9 месяцев
Контактная информация:

Сообщение Chainik »

Вся сложность состоит в том, что у меня установлен eXtreme Styles Mod.

Добавлено спустя 1 час 49 минут 58 секунд:

Ну, все, пашет - разобрался сам. Кто сталкивался с такой же проблемой, что и я, делайте так:

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

# 
#-----[ ОТКРЫТЬ ]------------------------------------------------ 
# 
includes/template.php 

# 
#-----[ НАЙТИ ]------------------------------------------------ 
# 
{
            $varref = '<'.'?php echo ' . $varref . '; ?'.'>';
        }

        return $varref;

    }
# 
#-----[ ПОСЛЕ, ВСТАВИТЬ ]----------------------------------------- 
# 

// Start add - Show usergroups MOD 
function append_var_from_handle_to_block($blockname,$varname, $handle) 
{ 
if (!$this->loadfile($handle)) 
{ 
die("Template->assign_var_from_handle(): Couldn't load template file for handle $handle"); 
} 
// Compile it, with the "no echo statements" option on. 
$_str = ""; 
$code = $this->compile($this->uncompiled_code[$handle], true, '_str'); 
// evaluate the variable assignment. 
eval($code); 
// assign the value of the generated variable to the given varname. 
$this->append_block_vars($blockname, array($varname => $_str)); 
return true; 
} 

function append_block_vars($blockname, $vararray) 
{ 
if (strstr($blockname, '.')) 
{ 
// Nested block. 
$blocks = explode('.', $blockname); 
$blockcount = sizeof($blocks) - 1; 
$str = '$this->_tpldata'; 
for ($i = 0; $i <= $blockcount; $i++) 
{ 
$str .= '[\'' . $blocks[$i] . '.\']'; 
eval('$lastiteration = sizeof(' . $str . ') - 1;'); 
$str .= '[' . $lastiteration . ']'; 
} 
// Now we add the block that we're actually assigning to. 
// We're adding a new iteration to this block with the given 
// variable assignments. 
$str .= '= array_merge('.$str.',$vararray);'; 
// Now we evaluate this assignment we've built up. 
eval($str); 
} 
else 
{ 
// Top-level block. 
// Add a to existing block with the variable assignments 
// we were given. 
$current_iteration = sizeof($this->_tpldata[$blockname . '.'])-1; 
$this->_tpldata[$blockname . '.'][$current_iteration] = array_merge($this->_tpldata[$blockname . '.'][$current_iteration],$vararray); 
} 

return true; 
} 

/** 
* Flush a root level block, so it becomes empty. 
*/ 
function flush_block_vars($blockname) 
{ 
// Top-level block. 
// flush a existing block we were given. 
$current_iteration = sizeof($this->_tpldata[$blockname . '.'])-1; 
unset($this->_tpldata[$blockname . '.']); 
return true; 
} 
// End add - Show usergroups MOD
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 19 лет 2 месяца
Откуда: Novosibirsk,RU
Контактная информация:

Сообщение [R: R@m$e$ :U] »

Я бы предложил проще... вставить перед

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

/** 
* Constructor. Installs XS mod on first run or updates it and sets the root dir. 
*/ 
function Template($root = '.') 
{
... это работает наверняка... а в вообще... по такому принципу... то перед первой функцией внутри класса вставлять проще всего... :)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Chainik
phpBB 1.2.0
Сообщения: 17
Стаж: 18 лет 9 месяцев
Контактная информация:

Сообщение Chainik »

Да, так работает, спасибо. :lol:
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

Тоже так сказать вопросо-запрос. Есть необходимость что бы скрытые группы этим модом не отображались вообще. Можно такое сотворить?

Поясню: мне нужно, чтобы скрытые группы при просмотре профиля и просмотре темы не отображались ни для кого, ну или максимум для админов и модеров.
я люблю daft punk | новый sugoi.ru
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет
Поблагодарили: 2 раза
Контактная информация:

Сообщение Xpert »

Пробуй:

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

[open]
includes/functions_usergroup.php

[find]
	global $db,$template,$phpEx,$images;

[in-line find]
global $db

[in-line after add]
,$userdata

[find]
			if ($group['group_type']!=GROUP_HIDDEN)
			{
				$template->assign_block_vars('group.is_not_hidden', array());
			} else

[in-line find]
else

[in-line replace with]
elseif ($userdata['user_level'] > USER)
Будет отображаться для всех модераторов в форуме и конечно же админа.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

Xpert
Работает. Только заменил на

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

else if ($userdata['user_level'] > USER)
Это имеет значение?
И так же необходимо использовать тогда tpl'ку
такого вида

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

<br />
<!-- BEGIN group -->
<!-- BEGIN is_hidden -->
<table cellpadding="0" cellspacing="0" border="0"><tr><td align="left" width="100%"><span class="gensmall">[ <a href="{group.U_GROUP}">{group.GROUP_IMG} <i>{group.GROUP_NAME}</i></a> ]</span></td></tr></table>
<!-- END is_hidden -->
<!-- BEGIN is_not_hidden -->
<table cellpadding="0" cellspacing="0" border="0"><tr><td align="left" width="100%"><span class="gensmall">[ <a href="{group.U_GROUP}">{group.GROUP_IMG} {group.GROUP_NAME}</a> ]</span></td></tr></table>
<!-- END is_not_hidden -->
<!-- END group -->
Иначе получается вместо скрытой группы отображается [ ]
Но в профиле пользователя всё попрежнему. Не столь критично, но всё же.

Ещё не знаю из-за мода ли, но: гости видять скрытые группы и их модераторов по ссылке "группы", но не могут просмотреть состав группы, а зарегистрированные пользователи не видят скрытые вообще, какой-то непорядок.

Добавлено спустя 7 минут 43 секунды:

И соответственно tpl'ку для профиля, такого вида

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

<table cellpadding="0" cellspacing="0" border="0">
<tr><td>
	<!-- BEGIN group -->
   <span class="gensmall">
	<a href="{group.U_GROUP}">{group.GROUP_IMG}</a></span>
	<!-- END group -->
</td></tr>
<tr><td><span class="gensmall">
<form action="groupcp.php" name="ShowGroupFrm" size="1" method="post">
<select name="g" onChange="submit();">
	<!-- BEGIN group -->
		<!-- BEGIN is_hidden -->
	<option value="{group.GROUP_ID}">
		*{group.GROUP_NAME}</option>
		<!-- END is_hidden -->
		<!-- BEGIN is_not_hidden -->
	<option value="{group.GROUP_ID}">
		{group.GROUP_NAME}</option>
		<!-- END is_not_hidden -->
	<!-- END group -->
	</select>
	<noscript>
		<input type="submit" value="{L_GO}" class="liteoption" />
	</noscript>
</form>
</span></td></tr>

</table>
Всё живет. Спасибо.
я люблю daft punk | новый sugoi.ru
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет
Поблагодарили: 2 раза
Контактная информация:

Сообщение Xpert »

VVVas писал(а):Это имеет значение?
Нет. Код абсолютно равнозначен.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Darth Reed
phpBB 1.0.0
Сообщения: 2
Стаж: 18 лет 9 месяцев
Контактная информация:

Сообщение Darth Reed »

Вопрос по данному моду. Есть у меня определенная группа, как присвоить ей картинку?
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

В инструкции
// Start add - Show usergroups MOD
//
// Add as many as these as you have usergroups, the ID is the same
// as the usergroup ID, these examples covers grop id 1->6
//
$images['groups']['1'] = "$current_template_images/groups_snow.gif";
$images['groups']['2'] = "$current_template_images/groups_star2.gif";
$images['groups']['3'] = "$current_template_images/groups_diamond3.gif";
$images['groups']['4'] = "$current_template_images/groups_snow.gif";
$images['groups']['5'] = "$current_template_images/groups_star2.gif";
$images['groups']['6'] = "$current_template_images/groups_diamond3.gif";
// End add - Show usergroups MOD
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Grenky
phpBB 1.2.0
Сообщения: 17
Стаж: 18 лет 5 месяцев
Контактная информация:

Сообщение Grenky »

как сделать чтоб не отображались группы в которых пользователь является модератором. А только те в которых он фактически состоит как ее обычный участник.

Добавлено спустя 19 минут 24 секунды:

+ в Show Member of in memberlist
тут написано

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

# 
#-----[ OPEN ]------------------------------------------ 
# 
memberlist.php

# 
#-----[ FIND ]------------------------------------------ 
# 
require_once($phpbb_root_path . 'common.'.$phpEx);
но я нашел только:

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

include($phpbb_root_path . 'common.'.$phpEx);
и далее сделал

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

#-----[ AFTER, ADD ]------------------------------------------ 
#
include($phpbb_root_path . 'includes/functions_usergroup.'.$phpEx);
далее все по инструкции
но почемуто в Пользователи
у кого группы нет то пишется в графе Группы - НЕТ
если пользователь включен какую-нить группу - ничего не пишет - пустая ячейка.
видимо что то не то в этом куске:

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

if (!display_usergroups($userdata['user_id'],$user_id,'memberrow','show_usergroup_image_only'))
{
	$template->append_block_vars('memberrow',array(
	'L_NO_USERGROUPS'=> $lang['None']));
} 
Русские на войне своих не бросают!
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

Grenky
Я так понимею в мемберлисте будут отображаться не надписи, а картинки, потому что
Grenky писал(а):$userdata['user_id'],$user_id,'memberrow','show_usergroup_image_only')
Посему мне кажется вам нужно прописать картинки для каждой группы, как это сделать написал выше.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Grenky
phpBB 1.2.0
Сообщения: 17
Стаж: 18 лет 5 месяцев
Контактная информация:

Сообщение Grenky »

Grenky писал(а):как сделать чтоб не отображались группы в которых пользователь является модератором. А только те в которых он фактически состоит как ее обычный участник.
а как на счет этой проблеммы?

Добавлено спустя 13 минут 49 секунд:

не сочтите за назойливость перечитал и не понял - какже присвоить картинку группе? пример!
Русские на войне своих не бросают!
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

VVVas писал(а):В инструкции
// Start add - Show usergroups MOD
//
// Add as many as these as you have usergroups, the ID is the same
// as the usergroup ID, these examples covers grop id 1->6
//
$images['groups']['1'] = "$current_template_images/groups_snow.gif";
$images['groups']['2'] = "$current_template_images/groups_star2.gif";
$images['groups']['3'] = "$current_template_images/groups_diamond3.gif";
$images['groups']['4'] = "$current_template_images/groups_snow.gif";
$images['groups']['5'] = "$current_template_images/groups_star2.gif";
$images['groups']['6'] = "$current_template_images/groups_diamond3.gif";
// End add - Show usergroups MOD
я люблю daft punk | новый sugoi.ru
Закрыто

Вернуться в «Поддержка модов для phpBB 2.0.x»