Взглянув по новому на пример (по ссылке) я задумался - если кнопку объявить не как img, а скажем как блок <div> или <span> с фоном кнопки и стилями обычным и hover - может получится. Другое дело что все равно надо дописывать функцию img, чтобы она принимала новый параметр, который ей укажет генерировать конкретную кнопку по иному, а для каждой кнопки прописывать в php файле этот 6-й параметр к запуску. Но мы избежим проблемы идентификации конкретной одинаковой кнопки, что стоит выше. Завтра подумаю и отпишу что вышло.
К слову - меняем функции из моего поста выше на вот эти и у нас загораются все кнопки, включая одинаковые. Вот только незадача - все одинаковые кнопки загораются при наведении одновременно =^_^=. Хотя как это исправить есть мысль...
Код: Выделить всё
function LightOn(name)
{
if (name.length > 0)
{
for (var i = 0; i < name.length; i++) name.item(i).src=name.item(i).src.substring(0, name.item(i).src.length-4) + "_l" + name.item(i).src.substring(name.item(i).src.length-4, name.item(i).src.length);
}
else
name.src=name.src.substring(0, name.src.length-4) + "_l" + name.src.substring(name.src.length-4, name.src.length);
}
function LightOut(name)
{
if (name.length > 0)
{
for (var i = 0; i < name.length; i++) name.item(i).src=name.item(i).src.substring(0, name.item(i).src.length-6) + name.item(i).src.substring(name.item(i).src.length-4, name.item(i).src.length);
}
else
name.src=name.src.substring(0, name.src.length-6) + name.src.substring(name.src.length-4, name.src.length);
}
Добавлено спустя 1 час 33 минуты 58 секунд:
Я таки наконец вспомнил, что CSS шаблон мы спокойно можем включить прямо в текст генерируемого html и все встало на свои места.
Промежуточный вариант (или "брюки превращаются в...").
На чистый шаблон делаем:
1) Открываем
includes/session.php
Код: Выделить всё
function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag')
Заменяем:
Код: Выделить всё
function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag', $lightbtn = '')
2) Ниже ищем:
Код: Выделить всё
default:
$use_width = ($width === false) ? $img_data['width'] : $width;
return '<img src="' . $img_data['src'] . '"' . (($use_width) ? ' width="' . $use_width . '"' : '') . (($img_data['height']) ? ' height="' . $img_data['height'] . '"' : '') . ' alt="' . $alt . '" title="' . $alt . '" />';
break;
}
Заменяем:
Код: Выделить всё
default:
$use_width = ($width === false) ? $img_data['width'] : $width;
if (empty($lightbtn))
{
return '<img src="' . $img_data['src'] . '"' . (($use_width) ? ' width="' . $use_width . '"' : '') . (($img_data['height']) ? ' height="' . $img_data['height'] . '"' : '') . ' alt="' . $alt . '" title="' . $alt . '" />';
}
else
{
return '<style type="text/css"><!-- .tbl_btn {background-image: url(' . $img_data['src'] . '); background-position: right bottom; } .tbl_btn:hover {background-image: url(' . $img_data['src'] . '); background-position: left top; }--></style> <table class="tbl_btn" cellpadding="0" cellspacing="0" border="0"' . (($use_width) ? ' width="' . $img_data['height'] . '"' : '') . (($img_data['height']) ? ' height="' . $img_data['height'] . '"' : '') . '><tr><td> </td></tr></table>';
}
break;
}
Сие требует четкого задания размеров всех картинок во всех файлах
imageset.cfg стиля, причем размер указывать одного изображения в сплайне. В самом графическом файле изображение снизу - старое, сверху - заменяемое.
Встает несколько "
НО" (требуется помощь):
1) в старом варианте у нас был параметр alt, который задавал выводимый всплывающий текст когда наведена мышка на кнопку, а здесь надписи нет. В голову приходит только нечто упоротое вроде создания прозрачной пустой картинки аналогичного размера и ее размещения в теле таблицы в теге img c размерами и этим самым alt. Само по себе - опять лишняя работа. Какие мнения?
2) почему то вместо того, чтобы располагаться рядом, кнопки (то есть таблицы) оказываются друг над другом в случае, когда несколько кнопок заданы последовательно в ряд. В старом варианте такой проблемы не возникало...
Сия модификация для работы по прежнему требует следующих шагов:
1) Создать альтернативный вид кнопки и добавить его в тот же файл над оригинальным + проверить размеры в
imageset.cfg
2) Найти представление этой кнопки в html файле вашего стиля
3) По имени переменной изображения отыскать ее определение в соответствующем PHP файле
4) В определении добавить к вызову функции img() шестым по счету параметром некое уникальное название (проще придумать его из первых двух переменных), чтобы для разных элементов не совпадали классы ни с чем другим.
Пример (кнопка "
Новая тема"):
1) редактируем
button_topic_new.png в
imageset/ru
В
imageset.cfg (*высота*ширина):
Код: Выделить всё
img_button_topic_new = button_topic_new.png*30*100
Название и размеры конкретно из моего стиля.
2) На странице просмотра форумов (
viewforum_body.html) выглядит так:
Код: Выделить всё
<a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a>
3) Соответствующий PHP файл -
viewforum.php в корневом каталоге
Код: Выделить всё
'POST_IMG' => ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', $post_alt) : $user->img('button_topic_new', $post_alt),
4) Добавляем в конец нужное, получается:
Код: Выделить всё
'POST_IMG' => ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', $post_alt) : $user->img('button_topic_new', $post_alt, false, '', '', 'ButtonTopicNew'),