XSNS アバター編集をプルダウンメニューにしたい


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008/9/17 2:20
ゲスト 
こんにちは、お世話になります。

nao-ponさんの携帯対応レンダーを利用してxsnsの携帯対応に挑戦しています。

表題のとおりなのですが、アバター編集をプルダウンメニューにしたいと考えています。

というのも、私のサイトの登録アバター数が100くらいあり、xsns標準のアバター画像の下にフォームボタンでは、携帯表示の限界を超えてしまうようで、エラーが出てしまうためです。

mypage_profile_avatar.htmlの
<{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でアバター名を表示し選択させるようにするには、どのように書けばいいのでしょうか。

<select name="" id="">
<option value=""></option>

を適当に書き換えて、アバター名を表示するところまではうまく言ったのですが、

<{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のほうにも改変が必要なのでしょうか。

よろしくおねがいします。
投票数:2 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008/9/17 9:01 | 最終変更
naao  一人前   投稿数: 104
こんにちは。

少し試してみましたが、私の場合もphpソースを変更しないとうまくいきませんでした。  他に方法があるかもしれませんが、取り急ぎ以下の方法でどうでしょう。

**ソース 「profile_avatar_sel_execAction」

の冒頭部分(41行目あたりから)を、下記のように編集します。

#code(php,29-){{
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」
途中から以下のように編集します。

#code(html,nonumber){{
<!-- User Menu -->
<{if $mydirname}><{include file="db:`$mydirname`_inc_mypage_menu.html"}><{/if}>

<{$smarty.const._MD_XSNS_PROFILE_AVATAR_UPLOAD}><br>
<!-- Old Avatar -->
<{if $old_avatar}>
<img src="<{$old_avatar}>" alt="Avatar" title="Avatar"><br>
<{$smarty.const._US_OLDDELETED}><br>
<{/if}>

<{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}>
<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からで確認済み)

お試しください。
投票数:3 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008/9/17 14:28
micc  新米   投稿数: 4
naaoさん

早速のご返答ありがとうございます!

ご教授いただいた方法を後ほど早速試してみたいと思います。
取り急ぎお礼まで

#初めの投稿が書き込み時間が長くてゲスト投稿になってしまってました。失礼しました。
投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008/9/26 18:29
micc  新米   投稿数: 4
naaoさん

実装するのが遅くなってしまいましたが、ご教授いただいた方法でうまくいきました!

ありがとうございました!
投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008/9/26 19:57 | 最終変更
naao 
miccさん

うまくいったようで、良かったですね。((e:f48b))

もう少し簡単な方法が見つかったら、教えて下さいね。
投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ

OpenIDログイン

ログイン

E-mail

パスワード:



パスワード紛失

新規登録

テーマ選択 

screenshot

(5 テーマ)