Проблема связи функции, скрипта и шаблона

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Exn
phpBB 1.0.0
Сообщения: 3
Стаж: 16 лет 3 месяца

Проблема связи функции, скрипта и шаблона

Сообщение Exn »

Доброго времени суток.

Мне нужно изменить значение переменной topicrow.TOPIC_FOLDER_IMG_SRC (viewforum_body.html, ~135 строка, стиль основан на prosilver`е), которая отвечает за иконку темы.
Для этого я редактирую viewforum.php: меняю

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

template->assign_block_vars('topicrow', array(
...
'TOPIC_FOLDER_IMG_SRC'	=> $user->img($folder_img, $folder_alt, false, '', 'src'),
...
);
на

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

template->assign_block_vars('topicrow', array(
...
'TOPIC_FOLDER_IMG_SRC'	=> $user->img($folder_img, $folder_alt, false, '', 'src', true),
...
);
т.е. добавляю к функции img ещё один параметр; на его основе я буду определять, значок ли это для темы или какое-то другое изображение (т.к. функция img используется для формирования многих изображений).
Соответственно, редактирую саму функцию, которая располагается в includes/session.php: меняю

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

function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag')
на

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

function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag', $var = false)
Далее, если $var равна true, то я произвожу некоторые действия, меняя путь к картинке. Меняю

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

function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag', $var = false)
{
...
$img_data['src'] = $root_path . 'styles/' . rawurlencode($this->theme['imageset_path']) . '/imageset/' . ($this->img_array[$img]['image_lang'] ? $this->img_array[$img]['image_lang'] .'/' : '') . $this->img_array[$img]['image_filename'];
...
}
на

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

function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag', $var = false)
{
...
if ($var) 
{
    if ($user->data['is_registered']) $theme = $user->data['user_theme']; // нужное мне поле из phpbb_users, стандартно его нет
    else $theme = $_COOKIE['theme'];
    if (!$theme) $theme = 'default';
    $img_data['src'] = $root_path . 'styles/' . rawurlencode($this->theme['imageset_path']) . '/theme/images/' . $theme . '/' . $this->img_array[$img]['image_filename'];
}
else $img_data['src'] = $root_path . 'styles/' . rawurlencode($this->theme['imageset_path']) . '/imageset/' . ($this->img_array[$img]['image_lang'] ? $this->img_array[$img]['image_lang'] .'/' : '') . $this->img_array[$img]['image_filename'];
...
}
---

Но проблема в том, что значение переменной topicrow.TOPIC_FOLDER_IMG_SRC не меняется при этом, т.е. как будто последний параметр (true) не передаётся функции:

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

template->assign_block_vars('topicrow', array(
...
'TOPIC_FOLDER_IMG_SRC'	=> $user->img($folder_img, $folder_alt, false, '', 'src', true),
...
);
Я подумал, что дело в функции, и для проверки поставил значение по умолчанию на true, т.е.

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

function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag', $var = false)
заменил на

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

function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag', $var = true)
И всё заработало. Но только значение true нужно лишь для иконок тем, а не для обработки остальных изображений, вроде логотипа и т.п.

Уважаемые гуру, надеюсь на вашу помощь.
Последний раз редактировалось FEAR93 21.06.2011 17:43, всего редактировалось 1 раз.
Причина: Перенесено.

Вернуться в «Для авторов (phpBB 3.0.x)»