我正在创建一个自定义模块,该模块在产品视图页面中添加一个自定义选项卡,该选项卡有一个表单供用户输入某些信息。我使用的是默认/现代主题,所以我在产品视图页面上已经有了选项卡,我希望我的自定义选项卡显示在它们旁边。
用户输入的这些信息也应该是可编辑的,并且可以在后端以网格或其他形式查看。
现在我已经开始创建我自己的模块,但我对一些事情感到困惑。Stack Overflow对增加我的Magento知识非常有帮助,所以我认为最好在继续之前询问专家。
1) 为了让我的选项卡显示在产品视图页面上,我的布局文件应该是什么样子的?
2) 如何在catalog.xml文件中传递选项卡的信息?
3) 如果我希望此部分显示在"管理"的"目录"部分下,那么我需要更改哪些文件?我需要扩展任何核心文件吗?
这是我到目前为止的文件结构
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
我正在遵循一个教程,我所有的文件都有类似于这个链接的内容,直到添加前端模板的部分。我还没有开始为Admin部分编写代码,并考虑在此之前澄清我的概念。
任何建议/意见都将不胜感激。谢谢
编辑:这是我模块的设计布局文件。app/design/frontend/default/modern/layout/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>
这是我的应用程序/设计/前端/默认/现代/布局/目录.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>
My list.phtml包含一个名为"Ask a Question"的链接,用于打开表单
<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>
请指出我做错了什么,以及如何在单击链接的同一选项卡中打开表格。
尝试以下链接:
- 通过布局在产品视图页面中添加选项卡
- Magento管理模块
--编辑--
<?php echo $this->getChildHtml('questionForm'); ?>
// should be ( not child element, block alias as described in tutorial )
<?php echo $this->getChildHtml('info_tabs'); ?>
我的解决方案:
<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>
模板文件(例如.phtml)必须存在。