ようこそゲストさん! >>  ユーザ名 パスワード   新規登録パスワード忘れtwitterでつぶやく
  [フォーラム] [ニュース] [ブログ] [リンク集] [XOOPS関連RSS] [うさぎの辞典] [ダウンロード] [このサイトについて]
Login by facebook
Login by twitter
検索
マンガ
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
twitter
XOOPS Cubeを使おう♪
インストール編
タイトルとテーマを変更しよう
ユーザー情報を変えよう
モジュールを使おうpico編
モジュールを使おう d3pipes編
モジュールを使おう bulletin編
モジュールアップデートをしよう
HDをアップデートする
ユーザーさんマニュアル
インストール編 旧
携帯サイト
うさぎにもできるXOOPS Cube入門♪ 携帯サイト うさぎにもできるXOOPS Cube入門♪ 携帯サイト
Go iPhone!

ユーザグループでテーマ自動変更

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-8-12 21:30

kumar  半人前
  投稿数: 21
いつもお世話になります。
いつもお伺いするばかりで申し訳ありません。

ユーザログイン時、ユーザの所属グループによってテーマを変更したいと思っております。

プリロードを使い以下のようなコードを作成してみました。

グループは正常に取得できて振り分けは出来ているのですが、テーマのpublic変数が正常に入ってこないようです。

ここ数日行き詰っており、何かヒントをいただけると幸甚です。


----コードここから

class loginRedirect extends XCube_ActionFilter
{

public $iphone_theme; // iPhone theme name.

function preBlockFilter(){

$this->mRoot->mDelegateManager->add('Site.CheckLogin.Success', array(&$this, 'loginSuccessRedirect'));

if($this->iphone_theme == 'theme1'){
$this->mRoot->mContext->setThemeName($this->iphone_theme);
}

}

function loginSuccessRedirect(&$xoopsUser){

global $xoopsConfig;

$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS); //所属グループを調べる

$admin_group = '1';

if(in_array($admin_group, $groups)){

$this->iphone_theme = 'theme1';
}else{

$this->iphone_theme = 'theme2';

}

}
}
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-8-13 9:37

kilica  新米
  投稿数: 3
mDelegateManager->add() は、登録だけしていて、この時点では実行はされません(実行は XCube_DelegateUtils::call()が実行された時)。

なので、preBlockFilter() の中で

if($this->iphone_theme == 'theme1'){

の判定をしても、この時点では iphone_theme はセットされていません。

というわけで、loginSuccessRedirect() の中で setThemeName() を実行すれば多分行けるんじゃないかと。

function loginSuccessRedirect(&$xoopsUser){

  global $xoopsConfig;

  $groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS); //所属グループを調べる

  $admin_group = '1';

  if(in_array($admin_group, $groups)){
    $this->iphone_theme = 'theme1';
  }else{
    $this->iphone_theme = 'theme2';
  }
 
  $this->mRoot->mContext->setThemeName($this->iphone_theme);
}
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-8-13 13:23

kumar  半人前
  投稿数: 21
kilicaさん、早速アドバイスいただきありがとうございます!
いただいた内容は、最初、わたしも実施してみたのですが、上手く動作しませんでした。

旧設計の場合、preBlockFilter() の中で loginSuccessRedirectからですと、テーマ変更のsetThemeNameが動作しませんでした。
そこで以下の内容で実施したところ無事上手く動作しました。

(旧設計) $this->mRoot->mDelegateManager->add('Site.CheckLogin.Success', array(&$this, 'loginSuccessRedirect'));


(新設計)
$this->mController->mSetupUser->add(array(&$this, 'loginSuccessRedirect'));



kilicaさん、本当にありがとうございました!

  条件検索へ


Powered by XOOPS CUBE LEGACY 2.1.X and RYUS