こんにちは、お世話になります。
nao-ponさんの携帯対応レンダーを利用してxsnsの携帯対応に挑戦しています。
表題のとおりなのですが、アバター編集をプルダウンメニューにしたいと考えています。
というのも、私のサイトの登録アバター数が100くらいあり、xsns標準のアバター画像の下にフォームボタンでは、携帯表示の限界を超えてしまうようで、エラーが出てしまうためです。
mypage_profile_avatar.htmlの
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <{if $avatar_list}>
<!-- Avatar Select -->
<form name="<{$uploadavatar.name}>" action="<{$uploadavatar.action}>" method="<{$uploadavatar.method}>" <{$uploadavatar.extra}>>
<{foreach item=element from=$uploadavatar.elements}>
<{$element.body}>
<{/foreach}>
<{$lang.avatar_select}>
<{foreach item=avatar from=$avatar_list name=avatar}>
<{if $avatar.file && $avatar.name}>
<img src="<{$avatar.file}>" alt="<{$avatar.name}>" title="<{$avatar.name}>"><br>
<{$avatar.name}><br>
<input type="submit" name="avatar_id[<{$avatar.id}>]" class="submitS" value="<{$lang.submit}>">
<{/if}>
<{if $smarty.foreach.avatar.iteration%4==0 && !$smarty.foreach.avatar.last}>
<{/if}>
<{/foreach}>
</form>
<{/if}>
|
の部分をserectでアバター名を表示し選択させるようにするには、どのように書けばいいのでしょうか。
1
2
| <select name="" id="">
<option value=""></option>
|
を適当に書き換えて、アバター名を表示するところまではうまく言ったのですが、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <{if $avatar_list}>
<!-- Avatar Select -->
<form name="<{$uploadavatar.name}>" action="<{$uploadavatar.action}>" method="<{$uploadavatar.method}>" <{$uploadavatar.extra}>>
<{foreach item=element from=$uploadavatar.elements}>
<{$element.body}>
<{/foreach}>
<{$smarty.const._MD_XSNS_PROFILE_AVATAR_SELECT}>
<select name="" id="">
<{foreach item=avatar from=$avatar_list name=avatar}>
<{if $avatar.file && $avatar.name}>
<option value="avatar_id[<{$avatar.id}>]"><{$avatar.name}></option>
<{/if}>
<{/foreach}>
</select>
<input type="submit" name="avatar_id[<{$avatar.id}>]" class="submitS" value="<{$lang.submit}>">
</form>
<{/if}>
|
selectやoptionのname、value値をどのように設定すればいいのか分かりません。
プルダウンメニューで選択する場合、phpのほうにも改変が必要なのでしょうか。
よろしくおねがいします。
こんにちは。
少し試してみましたが、私の場合もphpソースを変更しないとうまくいきませんでした。 他に方法があるかもしれませんが、取り急ぎ以下の方法でどうでしょう。
ソース 「profile_avatar_sel_execAction」
の冒頭部分(41行目あたりから)を、下記のように編集します。
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| class Xsns_Profile_avatar_sel_exec_Action extends Xsns_Mypage_Action
{
function dispatch()
{
if($this->isGuest()){
redirect_header(XOOPS_URL, 2, _NOPERM);
}
require XSNS_FRAMEWORK_DIR.'/global.php';
require_once XOOPS_ROOT_PATH.'/class/xoopsformloader.php';
require_once XOOPS_ROOT_PATH.'/language/'.$xoopsConfig['language'].'/user.php';
//if (!$this->validateToken('choose') || !is_object($xoopsUser) || !isset($_POST['avatar_id']) || !is_array($_POST['avatar_id']) || count($_POST['avatar_id'])>1) {
if (!$this->validateToken('choose') || !is_object($xoopsUser) || !isset($_POST['avatar_id']) || count($_POST['avatar_id'])>1) { //naao
redirect_header(XSNS_URL_MYPAGE_PROFILE, 3, _US_NOEDITRIGHT);
}
// Check is K-TAI?
if (defined('HYP_K_TAI_RENDER') && HYP_K_TAI_RENDER) {
$avatar_id = $_POST['avatar_id'] ;
} else {
global $xoopsTpl;
if ($xoopsTpl->_tpl_vars['wizmobile_ismobile']) {
$avatar_id = $_POST['avatar_id'] ;
} else {
foreach($_POST['avatar_id'] as $id => $value){
$avatar_id = $id;
break;
}
}
}
$avt_handler =& xoops_gethandler('avatar');
|
テンプレート 「mypage_profile_avatar.html」
途中から以下のように編集します。
|
<{if $mydirname}><{include file="db:`$mydirname`_inc_mypage_menu.html"}><{/if}>
<{$smarty.const._MD_XSNS_PROFILE_AVATAR_UPLOAD}><br>
<{if $old_avatar}>
<img src="<{$old_avatar}>" alt="Avatar" title="Avatar"><br>
<{$smarty.const._US_OLDDELETED}><br>
<{/if}>
<{if $avatar_list}>
<form name="<{$uploadavatar.name}>" action="<{$uploadavatar.action}>" method="<{$uploadavatar.method}>" <{$uploadavatar.extra}>>
<{foreach item=element from=$uploadavatar.elements}>
<{$element.body}>
<{/foreach}>
<{$lang.avatar_select}>
<select name="avatar_id">
<{foreach item=avatar from=$avatar_list name=avatar}>
<{if $avatar.file && $avatar.name}>
<option value="<{$avatar.id}>"><{$avatar.name}></option>
<{/if}>
<{if $smarty.foreach.avatar.iteration%4==0 && !$smarty.foreach.avatar.last}>
<{/if}>
<{/foreach}>
</select>
<br />
<input type="submit" name="submit" class="submitS" value="<{$smarty.const._SELECT}>" />
</form>
<{/if}>
|
これで、PCからも携帯対応レンダーからも、WizMobileからも書き込み可能になると思います。(一応、携帯対応レンダーとPCからで確認済み)
お試しください。
naaoさん
早速のご返答ありがとうございます!
ご教授いただいた方法を後ほど早速試してみたいと思います。
取り急ぎお礼まで
#初めの投稿が書き込み時間が長くてゲスト投稿になってしまってました。失礼しました。
naaoさん
実装するのが遅くなってしまいましたが、ご教授いただいた方法でうまくいきました!
ありがとうございました!
miccさん
うまくいったようで、良かったですね。
もう少し簡単な方法が見つかったら、教えて下さいね。