使用自定义模块 - Magento将自定义选项卡添加到产品视图页面

时间:2012-01-27 13:34:23

标签: php zend-framework magento

我正在创建一个自定义模块,该模块在产品视图页面中添加了一个自定义选项卡,其中包含一个供用户输入特定信息的表单。我使用默认/现代主题,所以我已经在产品视图页面上有标签,我希望我的自定义标签显示在它们旁边。

用户输入的这些信息也应该可以在网格或其他形式的后端编辑和查看。

现在我已经开始创建自己的模块,但我很困惑,继续做一些事情。 Stack Overflow在增加我的Magento知识方面非常有帮助,所以我最好在继续之前先咨询专家。

1)为了让我的标签显示在产品视图页面上,我的布局文件应该是什么样的?

2)如何在catalog.xml文件中传递我的选项卡信息?

3)如果我希望此部分显示在Admin的Catalog部分下,那么我需要更改哪些文件?我是否需要扩展任何核心文件?

到目前为止,这是我的文件结构

Companyname
 Modulename
  etc >> config.xml
  Helper >> Data.php
  sql >> module_setup >> mysql4-install-0.1.0.php
  Model >> Module.php
   Mysql4 >> Module.php
    Module >> Collection.php
  Block

  design
   default
     modern
      layout >> module.xml
      template >> module >> module.phtml

我正在关注一个教程,我的所有文件都有类似于link的内容,直到添加了前端模板的部分。我还没有开始编写Admin部分的代码,并考虑在此之前清除我的概念。

任何建议/意见都非常感谢。感谢。

编辑:这是我模块的设计布局文件。 应用程序/设计/前端/默认/现代/布局/ cm_askquestion.xml

  <?xml version="1.0"?>
  <layout version="0.1.0">
    <catalog_product_view>
      <reference name="product.info.tabs">          
            <block type="cm_askquestion/list" name="catalog.ask.question" template="cm_askquestion/list.phtml" >
    <block type="core/template" name="question.form" as="questionForm" template="cm_askquestion/form.phtml" />
      </reference>
     </catalog_product_view>    
   </layout>

这是我的app / design / frontend / default / modern / layout / catalog.xml文件

    <catalog_product_view translate="label">
    <label>Catalog Product View (Any)</label>
      <reference name="content">
        <block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >
               <action method="addTab" translate="title" module="catalog">
                  <alias>description</alias>
                  <title>Product Description</title>
                  <block>catalog/product_view_description</block>
                  <template>catalog/product/view/description.phtml</template>
               </action>        
       <action method="addTab" translate="title" module="catalog">
          <alias>askaquestion</alias>
          <title>Ask a Question</title>
          <block>cm_askquestion/list</block>
          <template>cm_askquestion/list.phtml</template>
           </action>
         </block>

我的list.phtml包含一个名为“提问”的链接,用于打开表格

       <p><strong><a href="#question-form" id="add-question"><?php echo $this->__('Ask a question'); ?></strong></a></p>
       <!-- code to display answered questions-->
       <?php echo $this->getChildHtml('questionForm'); ?>

我的form.phtml就是这样开始的,

       <a name="question-form"></a>
       <form action="<?php echo Mage::getUrl('askquestion/index/addQuestion'); ?>" id="questionForm" method="post" style="display: none;">
       <!-- code to display product question form -->
       <script type="text/javascript">
        //<![CDATA[
        $('add-question').observe('click', function(event){
        $('questionForm').toggle(); 
       });
       var contactForm = new VarienForm('questionForm', true);
       //]]>
       </script>

请指出我做错了什么,如何点击链接在同一标签中打开表单。

2 个答案:

答案 0 :(得分:1)

试试这个链接:

- 编辑 -

<?php echo $this->getChildHtml('questionForm'); ?>

// should be ( not child element, block alias as described in tutorial )

<?php echo $this->getChildHtml('info_tabs'); ?>

答案 1 :(得分:0)

我的解决方案:

<catalog_product_view>
   <reference name="product.info">
         <!-- Add tabs -->
         <block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml">
             <action method="addTab" translate="title"><alias>comparative</alias><title>Comparative</title><block>core/template</block><template>catalog/product/view/comparative.phtml</template></action>
          </block>
     </reference>
</catalog_product_view>

模板文件(example.phtml)必须存在。