【问题标题】:I want add custom column for sidebar all page in Magento我想在 Magento 中为侧边栏的所有页面添加自定义列
【发布时间】:2012-03-11 09:21:50
【问题描述】:

我想在所有页面的右栏下添加我的自定义侧边栏。

请查看此链接:http://www.wildbuilder.com/images/Untitled-1-Recovered.png

(我用图片解释。)

迷你侧边栏中有特色产品。

我不想将迷你侧边栏包含在右栏中。右列旁边:)

我已经在 /catalog/product/ 文件夹中制作了 features-products.phtml。

我创建了 cms 块、featured_products 并输入了这段代码

{{block type="catalog/product_list" category_id="4" template="catalog/product/featured-products.phtml"}}

我像这样在 page.xml 中添加了代码。

<block type="core/text_list" name="content" as="content" translate="label">
            <label>Main Content Area</label>
            <block type="cms/block" name="featured_products">
                            <action method="setBlockId"><block_id>featured_products</block_id></action>
                </block>
        </block>

然后我在 /template/page/folde 的 2columns-right.phtml 中添加了代码。

像这样,

<div class="wrapper">
<?php echo $this->getChildHtml('global_notices') ?>
<div class="page">
    <?php echo $this->getChildHtml('header') ?>
    <div class="main-container col2-right-layout">
        <?php echo $this->getChildHtml('breadcrumbs') ?>
        <div class="main">                
            <div class="col-main">
                <?php echo $this->getChildHtml('global_messages') ?>
                <?php echo $this->getChildHtml('content') ?>
            </div>
            <div class="col-right sidebar"><?php echo $this->getChildHtml('right') ?></div>
        </div>
    </div>
    <?php echo $this->getChildHtml('before_body_end') ?>
</div>
<?php //my slidebar ?>
<div style="float:right;width:92px;vertical-align:top;background-color:#000;margin:-766px 110px 0 0;">
<?php echo $this->getChildHtml('featured_products') ?>
</div>

但我的侧边栏没有显示。

我该怎么办???

请告诉我。

谢谢。

【问题讨论】:

  • 你清除缓存了吗?
  • 在执行以下代码之前删除&lt;?php echo $this-&gt;getChildHtml('featured_products') ?&gt; 行。
  • 我更新了我的文章。请检查一下,我总是在编辑我的代码后清除缓存。

标签: magento sidebar


【解决方案1】:

另外,在 2-columns-right.phtml 中尝试以下操作

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId(featured_products)->toHtml() ?>

【讨论】:

  • 我试了一下,但什么都显示出来了。所以我更改了代码“测试”而不是 {{block type="catalog/product_list" category_id="4" template="catalog/product/featured-products.phtml"}}。然后显示“测试”。哈哈,我认为 toHtml 在这种情况下不起作用。
  • 虽然这是使用 PHP 动态创建块的正确方法。添加默认块不是正确的 Magento 方法,也不是最佳实践。
【解决方案2】:

不不不。切勿编辑 2col-right、left 或任何其他 ./page/ 模板文件以进行此类修改。您也不应该在 page.xml 中进行更改

您需要做的是了解 Magento 上的布局句柄。由于您的更改专门与目录相关,因此您应该编辑

catalog.xml

然后在该文件中,您可以使用布局句柄 - 这意味着它默认出现在任何地方。

<default>
  <reference name="right">
    <block type="catalog/product_list" template="catalog/product/featured-products.phtml" name="featuredprods" before="-">
      <action method="setCategoryId"><category_id>4</category_id></action>
    </block>
  </reference>
</default>

无需修改 phtml、CMS 块或编辑 page.xml

【讨论】:

  • 我的首页现在找不到了!!首先,我更改了我的 catalog.xml 文件并刷新了我的缓存,然后我的首页无法正常工作!!页面找不到!!但后端工作正常。
  • 抱歉,有一点笔误,请复制上面修改后的代码。
  • 没什么可改变的。请检查以下链接。 wildbuilder.com/images/Untitled-1-Recovered.png我用图片解释。我不想将迷你侧边栏包含在右柱中。右柱旁边。 :)
  • 对,现在您已经编辑了您的问题,它更有意义。所以你想在页面宽度之外添加另一列?在这种情况下,您将不得不对主模板文件(2col-right、2col-left、1col、3col)、page.xml 和 category.xml 进行更改。这样您就可以定义一个新区域(例如,outsideright)、引用它并向其添加内容。
  • 是的。你完全明白了!!但是我需要知道我在哪里输入了什么代码。你能给我看看这个例子吗?请。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 2015-06-17
  • 2016-08-08
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多