Страница 1 из 6
Мод Show user groups
Добавлено: 25.06.2005 16:28
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
));
Надеюсь на помощь.
Добавлено: 25.06.2005 16:35
Vladson
Проверьте правильность установки мода, 99% что была допущена ошибка во время установки (точнее сказать не могу, я себе никогда не ставил этот мод, но пологаю что вы что-то пропустили)
Добавлено: 25.06.2005 23:26
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
Добавлено: 26.06.2005 6:41
[R: R@m$e$ :U]
Я бы предложил проще... вставить перед
Код: Выделить всё
/**
* Constructor. Installs XS mod on first run or updates it and sets the root dir.
*/
function Template($root = '.')
{
... это работает наверняка... а в вообще... по такому принципу... то перед первой функцией внутри класса вставлять проще всего...
Добавлено: 26.06.2005 9:50
Chainik
Да, так работает, спасибо.
Добавлено: 26.06.2005 20:31
VVVas
Тоже так сказать вопросо-запрос. Есть необходимость что бы скрытые группы этим модом не отображались вообще. Можно такое сотворить?
Поясню: мне нужно, чтобы скрытые группы при просмотре профиля и просмотре темы не отображались ни для кого, ну или максимум для админов и модеров.
Добавлено: 29.06.2005 6:59
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)
Будет отображаться для всех модераторов в форуме и конечно же админа.
Добавлено: 29.06.2005 19:01
VVVas
Xpert
Работает. Только заменил на
Это имеет значение?
И так же необходимо использовать тогда 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>
Всё живет. Спасибо.
Добавлено: 30.06.2005 0:20
Xpert
VVVas писал(а):Это имеет значение?
Нет. Код абсолютно равнозначен.
Добавлено: 14.07.2005 12:59
Darth Reed
Вопрос по данному моду. Есть у меня определенная группа, как присвоить ей картинку?
Добавлено: 14.07.2005 13:07
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
Добавлено: 29.11.2005 4:41
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']));
}
Добавлено: 29.11.2005 10:48
VVVas
Grenky
Я так понимею в мемберлисте будут отображаться не надписи, а картинки, потому что
Grenky писал(а):$userdata['user_id'],$user_id,'memberrow','show_usergroup_image_only')
Посему мне кажется вам нужно прописать картинки для каждой группы, как это сделать написал выше.
Добавлено: 29.11.2005 11:47
Grenky
Grenky писал(а):как сделать чтоб не отображались группы в которых пользователь является модератором. А только те в которых он фактически состоит как ее обычный участник.
а как на счет этой проблеммы?
Добавлено спустя 13 минут 49 секунд:
не сочтите за назойливость перечитал и не понял - какже присвоить картинку группе? пример!
Добавлено: 29.11.2005 11:51
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