Facebook アプリ (Facebook 側) でも使用したい Yii クイズ モジュールを作成しました。
iframe を介して実行できますが、生成されたページには、メニューやその他の多くの不要な (この場合) ものもあります。Yii で生成されたモジュール コードのみを Web サイトの残りなしで表示することは可能ですか?
2 に答える
そのモジュールに別のレイアウトを試してみてください。最初に、そのモジュールにレイアウト フォルダーとレイアウト ファイルを追加できます。したがって、この新しいquizlayout.phpは、このモジュールのすべてのビューのレイアウトになります。
これを行うには、 QuizModule クラスのでquizmoduleのlayout
プロパティを次のように設定します ( QuizModule.phpで):init()
class QuizModule extends CWebModule {
public function init() {
// this method is called when the module is being created
// you may place code here to customize the module or the application
// import the module-level models and components
$this->setImport(array(
'quiz.models.*',
'quiz.components.*',
));
$this->layout='quizlayout';
}
//...
}
現在、デフォルトでは、gii によって生成されたモジュールのコントローラーは、 component/Controller.phpファイルController
内のクラスのサブクラスです。そして、そのクラスは を定義するため、同じ構造を持っている場合、上記の方法は機能せず、モジュールのコントローラー内のレイアウトをオーバーライドする必要があります。ただし、各コントローラー内に移動して行を追加する代わりに、 QuizModule.phpの関数でこれを行うことができます。Controller
layout
beforeControllerAction($controller, $action)
public function beforeControllerAction($controller, $action) {
if(parent::beforeControllerAction($controller, $action)) {
// this method is called before any module controller action is performed
// you may place customized code here
$controller->layout='quizlayout';
return true;
}
else
return false;
}
編集:
もちろん、あなたのquizlayout.phpにはメニュー用のコードや余分なものがあってはなりませんが、エスキモーの回答にも記載されているように、少なくともそのecho $content
行はそこにあるはずです。
protected/views には、「main.php」というファイルがあります。これはメイン レイアウト ファイルで、$this->render によって呼び出されるビューの周りにレンダリングされます
メニューなどを削除するには、行を除く本文内のすべてを削除します。
<?php echo $content; ?>
明らかに、すべてのものを頭に残します(.cssファイルなど...)