簡體   English   中英

根據頁面更改 CSS class

[英]Changing CSS class dependent on page

使用 Zend,我試圖找到最有效的方法來為每個頁面調用一個新的 CSS class。 我寧願不為每個頁面創建新的布局。 我很好奇是否可以使用變量來更改 class。

在我要使用的布局中: <div id="main" class="<?php echo $header; ?>">

CSS 看起來像:

#main {
display:block;
min-width:960px;
}

#main.homeBG {
height:451px;
background:url(../img/images/home_bg.jpg) no-repeat center top;
}

#main.toolsBG {
height:451px;
background:url(../img/images/tools_bg.jpg) no-repeat center top;
}

所以不同的頁面有不同的BG圖像。

我要做的是更改每個視圖的 Controller 操作中的 $header 變量。

class ToolsController extends ZendExtension_Controller_Action
{
/**
 * Init
 */
public function init()
{
}
/**
 * Default Index Action
 */
public function indexAction()
{
    $header = $this->view->('toolsBG');
}
}

我知道那是錯誤的,但我將在這里舉個例子。

有沒有辦法做到這一點,或者我應該為每個視圖制作一個單獨的布局頁面?

謝謝。

如果您的問題是如何從 controller 設置視圖變量,那么方法如下:

//controller
$this->view->header = 'toolsBG';

//view
<div id="main" class="<?php echo $this->header; ?>">

但是,如果您的操作名稱是不言自明的,那么您可以創建一個視圖幫助程序,並且在該幫助程序中,您可以返回您的操作名稱,或者模塊、controller、操作等的下划線分隔組合。

有關如何創建視圖助手的信息,請參閱

有關如何獲取模塊 controller 的信息,視圖助手中的操作,請使用以下內容:

$request    = Zend_Controller_Front::getInstance()->getRequest();
$module     = $request->getModuleName();
$controller = $request->getControllerName();
$action     = $request->getActionName();

我不喜歡 Zend 框架,但是您是否嘗試將 $header 變量設置為當前頁面? 如果是這樣,請嘗試使用$_SERVER['REQUEST_URI'] (是的,丑陋的)或者將其作為變量傳遞到您的視圖中?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM