Magento ::: 在 header.html 中使用 getBodyClass()

发布于 2024-10-21 23:34:02 字数 747 浏览 2 评论 0原文

我在弄清楚如何从其范围之外访问方法时遇到困难。

就我而言 ::::

<body<?php echo $this->getBodyClass()?' class="'.Mage::app()->getStore()->getCode().' '.$this->getBodyClass().'"':'' ?>>

这是 2columns-left.phtml 中的代码

我想在 header.html 中使用 getBodyClass 方法,如下所示 ::::

<div class="header <?php echo $this->getBodyClass()?' '.$this->getBodyClass().'':'' ?>">

但因为 getBodyClass() 是一种方法Mage_Page_Block_Html,它不适用于 Mage_Page_Block_Html_Header 中的 $this。

谁能帮我调整这段代码

<div class="header <?php echo $this->getBodyClass()?' '.$this->getBodyClass().'':'' ?>">

以在 header.html 中使用?或者指出我正确的方向?

I am having trouble with working out how to access a method from outside its scope.

In my case ::::

<body<?php echo $this->getBodyClass()?' class="'.Mage::app()->getStore()->getCode().' '.$this->getBodyClass().'"':'' ?>>

That is code from 2columns-left.phtml

I want to use the getBodyClass method in header.html, like so ::::

<div class="header <?php echo $this->getBodyClass()?' '.$this->getBodyClass().'':'' ?>">

But because getBodyClass() is a method of Mage_Page_Block_Html, it doesn’t work with $this in Mage_Page_Block_Html_Header.

Can anyone help me with adjusting this code

<div class="header <?php echo $this->getBodyClass()?' '.$this->getBodyClass().'':'' ?>">

for use in header.html? Or point me int he right direction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟雨扶苏 2024-10-28 23:34:02

page/html 块被实例化时,主体类被设置在该块上。

public function __construct()
{
    parent::__construct();
    $this->_urls = array(
        'base'      => Mage::getBaseUrl('web'),
        'baseSecure'=> Mage::getBaseUrl('web', true),
        'current'   => $this->getRequest()->getRequestUri()
    );

    $action = Mage::app()->getFrontController()->getAction();
    if ($action) {
        $this->addBodyClass($action->getFullActionName('-'));
    }

    $this->_beforeCacheUrl();
}

从另一个块中获取它的唯一方法是实例化另一个 page/html。

<?php
//from any block template context
$body_class = $this->getLayout()->createBlock('page/html')->getBodyClass();
?>
...
<div class="header <?php echo $body_class?>">

或者获取对现有page/html的引用堵塞。

<?php
$body_class = $this->getLayout()->getBlock('root')->getBodyClass();
?>

The body class is set on a page/html block when that block is instantiated.

public function __construct()
{
    parent::__construct();
    $this->_urls = array(
        'base'      => Mage::getBaseUrl('web'),
        'baseSecure'=> Mage::getBaseUrl('web', true),
        'current'   => $this->getRequest()->getRequestUri()
    );

    $action = Mage::app()->getFrontController()->getAction();
    if ($action) {
        $this->addBodyClass($action->getFullActionName('-'));
    }

    $this->_beforeCacheUrl();
}

The only way you can grab it from another block is to instantiate another page/html.

<?php
//from any block template context
$body_class = $this->getLayout()->createBlock('page/html')->getBodyClass();
?>
...
<div class="header <?php echo $body_class?>">

Or to get a reference to an existing page/html block.

<?php
$body_class = $this->getLayout()->getBlock('root')->getBodyClass();
?>
胡大本事 2024-10-28 23:34:02

使用 CSS 规则

您可以避免这种混乱,并在样式表中使用 body 元素上的类进行声明,例如:

body.2column-left .header {
   ...
}

创建 page/html 块

I建议使用上面的 CSS 规则。但是,如果您确实需要访问该方法的page/html块,那么您可以创建该块的实例并直接访问它:

 $body_classes = $this->getLayout()->createBlock("page/html")->getBodyClass();

Use a CSS rule

You could avoid this kerfuffle and us declarations in your stylesheet that make use of the class that's on the body element, e.g:

body.2column-left .header {
   ...
}

Create the page/html block

I'd suggest using the CSS rule above. But if you really need access to the page/html block for that method, then you could create an instance of the block and access it directly with:

 $body_classes = $this->getLayout()->createBlock("page/html")->getBodyClass();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文