8

ページ タイトルを実装し、すべてのページでタイトルがきちんと表示されています。ここで、Web サイト名も表示する必要があります。私はそれを次のようにコーディングできます

<title><?php echo Yii::app()->name . $this->pageTitle ?></title>

しかし、タイトルが設定されていないページ (つまり、デフォルトで によって設定されているページCController) では、サイト名が繰り返されます。

setPageTitleコントローラーのメソッドを単純にオーバーライドして、サイト名を先頭に追加したいだけです。その方法は?

4

4 に答える 4

2

たとえば、より「自動」なものが必要な場合:

  • pageTitle には常に「action + controller」を表示します。例: ユーザーの表示、ユーザーの削除...

次のようなフィルターを作成できます: (多言語でも動作します!!!)

1- protected/components/ に PageTitleFilter.php ファイルを作成します。

class PageTitleFilter extends CFilter {

    public $controller;

    protected function preFilter($filterChain) {
        // logic being applied before the action is executed
        $this->controller->pageTitle = Yii::t('app', Yii::app()->controller->action->id) . ' ' . Yii::t('app', Yii::app()->controller->id);
        return true; // false if the action should not be executed
    }

    protected function postFilter($filterChain) {
        // logic being applied after the action is executed
    }

}

2-コントローラーで:

class MyController extends Controller {

    public function filters() {
        return array(
            'accessControl', // perform access control for CRUD operations
            array(
                'PageTitleFilter + view, create, update, delete, admin',
                'controller' => $this
            ),
        );
    }
}

そして、ファイル protected/messages/es/app.php を次のように各アクションの翻訳とともに配置します。

return array(
    'view'=>'ver', 
    'delete'='eliminar'
);

リンク: http://www.yiiframework.com/doc/guide/1.1/es/topics.i18n#locale-and-language

デフォルトの pageTitle を変更したい場合は、任意のアクションで実行できます。

$this->pageTitle= 'My page title';

多言語が必要ない場合は、Yii::t('app') 関数を削除してください!

于 2014-12-05T07:47:18.447 に答える
0

各コントローラーで、次のプロパティ変数を追加します。

class MyController extends Controller {

    public $pageTitle = 'My Custom Title';

同様に、各コントローラーのレイアウトをオーバーライドできます。

class MyController extends Controller {

    public $layout = '//layouts/myCustomLayout';
于 2013-08-29T09:25:29.120 に答える