Перейти к контенту
  • 0

Меню выбора скина форума


kindermix

Вопрос

Нужна помощь в изменение кода выбора скина (шаблона форума), сейчас он выглядит так:

 

<if test="uagentlocked:|:$this->memberData['userAgentLocked'] AND ! $this->memberData['userAgentBypass']">
					<p id='useragent_msg'>
						{$this->lang->words['skin_browser_set']} <a href='{parse url="{$this->settings['query_string_formatted']}&unlockUserAgent=1" base="public"}'>{$this->lang->words['override_browser_theme']}</a>
					</p>
				<else />
					<form action="{parse url="{$this->settings['query_string_formatted']}" base="public"}" method="post" class='left'>
						<fieldset>
							<input type='hidden' name='k' value='{$this->member->form_hash}' />
							<label for='newSkin' class='hide'>{$this->lang->words['theme_prefix']}</label>
							<select name="settingNewSkin" id='newSkin'>
								{$footer_items['skin_chooser']}
							</select>
							<input type='submit' value='{$this->lang->words['jmp_go']}' class='input_submit alt' id='newSkinSubmit' />
						</fieldset>
					</form>
				</if>
			</if>

 

В HTML это выглядит примерно так:

 

						<form action="http://www.phantoms.su/index.php?" method="post" class='left'>
						<fieldset>
							<input type='hidden' name='k' value='1e54073898612396 3676186yjsgd2137d1b315637' />

							<label for='newSkin' class='hide'>Стиль:</label>
							<select name="settingNewSkin" id='newSkin'>

<option id='skinSetDD_1'  value="1">IP.Board</option>
<option id='skinSetDD_8'  value="8">skinSetDD_8</option>
<option id='skinSetDD_10'  value="10">IP.Board Lo-Fi</option>
<option id='skinSetDD_11'  value="11">skinSetDD_11</option>
<option id='skinSetDD_29'  value="29">skinSetDD_29</option>
<option id='skinSetDD_40'  value="40">skinSetDD_40</option>
<option id='skinSetDD_48' selected="selected" value="48">skinSetDD_48</option>
							</select>
							<input type='submit' value='ОК' class='input_submit alt' id='newSkinSubmit' />
						</fieldset>
					</form>

 

Хотел бы сделать так, чтобы в стили, просто были картинки, при клике на который выбирался тот или иной стиль (на тот, что нажать), а вот не как не могу понять, структуры ссылки, как это можно воплотить?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
{$footer_items['skin_chooser']}, к сожалению, приходит из другого шаблони или из кода. Попробуйте найти этот шаблон, возможно он примерно так и называется.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

К сожалению, в шаблон стили передаются не массивом, а готовым блоком текста. Так что все, что вам остается, это жеско задать свои стили:

 

<a href='{parse url="{parse url="{$this->settings['query_string_formatted']}&k={$this->member->form_hash}&settingNewSkin=skinSetDD_1" base="public"}"><img src='...' alt='IP.Board' /></a>

 

Не проверял, но должно сработать. IP.Board по большому счету плевать, GET или POST запрос. Как вариант, можно сделать много POST-форм:

 

  <form action="{parse url="{$this->settings['query_string_formatted']}" base="public"}" method="post" class='left'>
							<input type='hidden' name='k' value='{$this->member->form_hash}' />
							<input type='settingNewSkin' value='skinSetDD_1' />
							<input type='image' src='...' value='IP.Board' size='32,32' border='0' />
					</form>

 

 

А потом менять их вручную....)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Надо бы оформить это в трекер :D Сколько уже можно такое в скриптах делать.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
К сожалению, в шаблон стили передаются не массивом, а готовым блоком текста. Так что все, что вам остается, это жеско задать свои стили:

 

<a href='{parse url="{parse url="{$this->settings['query_string_formatted']}&k={$this->member->form_hash}&settingNewSkin=skinSetDD_1" base="public"}"><img src='...' alt='IP.Board' /></a>

 

Не проверял, но должно сработать. IP.Board по большому счету плевать, GET или POST запрос. Как вариант, можно сделать много POST-форм:

 

  <form action="{parse url="{$this->settings['query_string_formatted']}" base="public"}" method="post" class='left'>
							<input type='hidden' name='k' value='{$this->member->form_hash}' />
							<input type='settingNewSkin' value='skinSetDD_1' />
							<input type='image' src='...' value='IP.Board' size='32,32' border='0' />
					</form>

 

 

А потом менять их вручную....)

 

Не первый, не второй вариант не работает, вставил в Footer:

 

<a href='{parse url="{parse url="{$this->settings['query_string_formatted']}&k={$this->member->form_hash}&settingNewSkin=skinSetDD_1" base="public"}"><img src='...' alt='IP.Board' /></a>

 

не пашет, ссылка вообще не отображается, попробовал изенить её на:

 

<a href="{parse url='{$this->settings['query_string_formatted']}&k={$this->member->form_hash}&settingNewSkin=skinSetDD_1' base='public'}" alt='IP.Board' /><img src='jkashdk.png' alt='IP.Board' /></a>

 

тоже самое, не работает...

 

Что касается второго варианта:

 

<form action="{parse url="{$this->settings['query_string_formatted']}" base="public"}" method="post" class='left'>
							<input type='hidden' name='k' value='{$this->member->form_hash}' />
							<input type='settingNewSkin' value='skinSetDD_1' />
							<input type='image' src='braodcast_footer.png' value='IP.Board' size='32,32' border='0' />
					</form>

 

"http://www.phantoms.su/%7Bparse%20url=

Not Found

The requested URL /{parse url= was not found on this server."

 

 

 

Также не работает.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
  /><img src='jkashdk.png'

http://www.phantoms.su/%7Bparse%20url=

Жжоте)))

 

http://www.htmlbook.ru/

И?

 

Что толк от ссылки, если я вставил тот код что вы написали и толка ноль. Не работает всё что ниже:

 

К сожалению, в шаблон стили передаются не массивом, а готовым блоком текста. Так что все, что вам остается, это жеско задать свои стили:

 

Код

<a href='{parse url="{parse url="{$this->settings['query_string_formatted']}&k={$this->member->form_hash}&settingNewSkin=skinSetDD_1" base="public"}"><img src='...' alt='IP.Board' /></a>

 

 

Не проверял, но должно сработать. IP.Board по большому счету плевать, GET или POST запрос. Как вариант, можно сделать много POST-форм:

 

Код

<form action="{parse url="{$this->settings['query_string_formatted']}" base="public"}" method="post" class='left'>

<input type='hidden' name='k' value='{$this->member->form_hash}' />

<input type='settingNewSkin' value='skinSetDD_1' />

<input type='image' src='...' value='IP.Board' size='32,32' border='0' />

</form>

 

 

 

А потом менять их вручную....)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ищите того, кто вам все разжует и в рот положит. Человек, хоть немного понимающий HTML уже все давно понял бы.

 

В первом случае у вас неверно указан путь к картинке, да еще и тег <a> наитупейшим образом сразу закрыт, до картинки. Во втором - что-то намудрили с кавычками. Возьмие action в одинарные что ли.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Всё ещё проблема актуальна, очень нужна помощь по изменению меню выбора стилей, чтобы можно было выбрать его просто кликнув на картинку, а не из меню списка.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

kindermix, в шаблоне globalTemplate поменяйте это:

								<select name="settingNewSkin" id='newSkin'>
								{$footer_items['skin_chooser']}
							</select>

 

на это:

<php>
preg_match_all("/<option id='([^']+)' (selected=\"selected\")? value=\"([^']+)\">([^<]+)<\/option>/", $footer_items['skin_chooser'], $skins);
$footer_items['skin_chooser_icons'] = '';
while(list($key, $val) = each($skins[0]))
{
	$style = ($skins[2][$key] == '') ? 'filter:alpha(opacity=50); -moz-opacity:0.5;	-khtml-opacity: 0.5; opacity: 0.5;' : '';
	$footer_items['skin_chooser_icons'] .= "<input type='image' name='settingNewSkin' title='{$skins[4][$key]}' value='{$skins[3][$key]}' src='/public/{$skins[3][$key]}.gif' style='{$style}' />";
}
</php>
{$footer_items['skin_chooser_icons']}

 

Положите картинки /public/0.gif - /public/N.gif, которые будут иконками для скинов. Здесь N - ID скина, можно подсмотреть в админке.

 

Можете меня обтискать в благодарность :D

 

Иконка выбранного скина будет непрозрачной, иконки остальных - с 50%-й прозрачностью.

 

И да, все заточено под IP.Board 3.0.5. В новых версиях структура кода в $footer_items['skin_chooser'] может поменяться, и тогда приходите снова в гости, или самостоятельно вкурите ман по регуляркам ;)

 

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

Изменено пользователем Ritsuka
Ссылка на комментарий
Поделиться на других сайтах

  • 0
kindermix, в шаблоне globalTemplate поменяйте это:

								<select name="settingNewSkin" id='newSkin'>
								{$footer_items['skin_chooser']}
							</select>

 

на это:

<php>
preg_match_all("/<option id='([^']+)' (selected=\"selected\")? value=\"([^']+)\">([^<]+)<\/option>/", $footer_items['skin_chooser'], $skins);
$footer_items['skin_chooser_icons'] = '';
while(list($key, $val) = each($skins[0]))
{
	$style = ($skins[2][$key] == '') ? 'filter:alpha(opacity=50); -moz-opacity:0.5;	-khtml-opacity: 0.5; opacity: 0.5;' : '';
	$footer_items['skin_chooser_icons'] .= "<input type='image' name='settingNewSkin' title='{$skins[4][$key]}' value='{$skins[3][$key]}' src='/public/{$skins[3][$key]}.gif' style='{$style}' />";
}
</php>
{$footer_items['skin_chooser_icons']}

 

Положите картинки /public/0.gif - /public/N.gif, которые будут иконками для скинов. Здесь N - ID скина, можно подсмотреть в админке.

 

Можете меня обтискать в благодарность :D

 

Иконка выбранного скина будет непрозрачной, иконки остальных - с 50%-й прозрачностью.

 

И да, все заточено под IP.Board 3.0.5. В новых версиях структура кода в $footer_items['skin_chooser'] может поменяться, и тогда приходите снова в гости, или самостоятельно вкурите ман по регуляркам ;)

 

Огромное спасибо, вот это подарок к дню святого Валентина! XD

Суперски просто, работает на ура, именно так я хотел сделать.

 

Думаю пора уже приступить мне к изучению php...

 

Вот уже на форуме это выглядит так, картинки пока поставил простые, тестовые, потом заменю их...

 

Не знаю как Ваз завут, спасибо огромное Ritsuka за помощь!

Подхватил простуду, а тут после такого, настроение очень сильно поднялось, и лучше себя чувствую.

post-85181-1265919908_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 0
kindermix, в шаблоне globalTemplate поменяйте это:

								<select name="settingNewSkin" id='newSkin'>
								{$footer_items['skin_chooser']}
							</select>

 

на это:

<php>
preg_match_all("/<option id='([^']+)' (selected=\"selected\")? value=\"([^']+)\">([^<]+)<\/option>/", $footer_items['skin_chooser'], $skins);
$footer_items['skin_chooser_icons'] = '';
while(list($key, $val) = each($skins[0]))
{
	$style = ($skins[2][$key] == '') ? 'filter:alpha(opacity=50); -moz-opacity:0.5;	-khtml-opacity: 0.5; opacity: 0.5;' : '';
	$footer_items['skin_chooser_icons'] .= "<input type='image' name='settingNewSkin' title='{$skins[4][$key]}' value='{$skins[3][$key]}' src='/public/{$skins[3][$key]}.gif' style='{$style}' />";
}
</php>
{$footer_items['skin_chooser_icons']}

 

Положите картинки /public/0.gif - /public/N.gif, которые будут иконками для скинов. Здесь N - ID скина, можно подсмотреть в админке.

 

Можете меня обтискать в благодарность :D

 

Иконка выбранного скина будет непрозрачной, иконки остальных - с 50%-й прозрачностью.

 

И да, все заточено под IP.Board 3.0.5. В новых версиях структура кода в $footer_items['skin_chooser'] может поменяться, и тогда приходите снова в гости, или самостоятельно вкурите ман по регуляркам ;)

 

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

Я сделал так и у меня все получилось, кроме вывода самих картинок. Вместо них выводятся цифры, но все работает. Как сделать, чтобы выводились картинки?

post-76633-1271245672_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 0
<php>
preg_match_all("/<option id='([^']+)' (selected=\"selected\")? value=\"([^']+)\">([^<]+)<\/option>/", $footer_items['skin_chooser'], $skins);
$footer_items['skin_chooser_icons'] = '';
while(list($key, $val) = each($skins[0]))
{
	$style = ($skins[2][$key] == '') ? 'filter:alpha(opacity=50); -moz-opacity:0.5;	-khtml-opacity: 0.5; opacity: 0.5;' : '';
	$footer_items['skin_chooser_icons'] .= "<input type='image' name='settingNewSkin' title='{$skins[4][$key]}' value='{$skins[3][$key]}' src='/public/{$skins[3][$key]}.gif' style='{$style}' />";
}
</php>
{$footer_items['skin_chooser_icons']}

У меня после сохранения этого кода он изменяется. Добавляются лишние слеши.

 

<php>

preg_match_all("/<option id='([^']+)' (selected=\\"selected\\")? value=\\"([^']+)\\">([^<]+)<\/option>/", $footer_items['skin_chooser'], $skins);

$footer_items['skin_chooser_icons'] = '';

while(list($key, $val) = each($skins[0]))

{

$style = ($skins[2][$key] == '') ? 'filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5;' : '';

$footer_items['skin_chooser_icons'] .= "<input type='image' name='settingNewSkin' title='{$skins[4][$key]}' value='{$skins[3][$key]}' src='/forum/public/{$skins[3][$key]}.png' style='{$style}' />";

}

</php>

как это исправить, чтобы они не появлялись?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.