跳到正文

外贸与经营

正确使用Magento配置文件功能的要点

本文目录

  1. 如何在magento中建立自定义页面
  2. 如何修改,扩展并重写Magento代码

如何在magento中建立自定义页面

用数据库表创建一个模块,互动是很简单的。大部分的开发人员使用 magento模块创建者创建此类的模块。但是,如果你想与多个数据库表的一个模块。以下是模块与两个数据库表的示例。

第 1步。以下查询与创建您的自定义模块的安装文件。

CREATE TABLE `test`(

`test_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR( 25) NOT NULL

) ENGINE= MYISAM

CREATE TABLE `test2`(

`test2_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR( 25) NOT NULL

) ENGINE= MYISAM

第 2步。创建库文件来注册您的模块在 app/etc/modules/Mypackage_Mymodule.xml下

<?xml version="1.0"?>

<config>

<modules>

<Mypackage_Mymodule>

<active>trueactive>

<codePool>localcodePool>

Mypackage_Mymodule>

modules>

config>

第 3步。模块配置文件应该看起来像以下

应用程序、代码、地方/Mypackage/Mymodule/etc/config.xml

<?xml version="1.0"?>

<config>

<modules>

<Mypackage_Mymodule>

<version>0.1.0version>

Mypackage_Mymodule>

modules>

<global>

<models>

<Mymodule>

<class>Mypackage_Mymodule_Modelclass>

<resourceModel>mymodule_mysql4resourceModel>

mymodule>

<!-- model vs db table relation-->

<mymodule_mysql4>

<class>Mypackage_Mymodule_Model_Mysql4class>

<!-- db table with name test-->

<entities>

<test>

<table>testtable>

test>

<test2>

<table>test2table>

test2>

entities>

mymodule_mysql4>

models>

<resources>

<mymodule_write>

<connection>

<use>core_writeuse>

connection>

mymodule_write>

<mymodule_read>

<connection>

<use>core_readuse>

connection>

mymodule_read>

resources>

global>

config>

如何修改,扩展并重写Magento代码

第一步,你需要创建属于你自己代码的命名空间,例如App,为了方便与大家分享代码,我将空间命名为App。

app/code/core/local/App/

假如你现在打算修改Mage/Catalog/Block/Breadcrumbs.php这个文件,你可以在你的命名空间,App里添加一个新的模块“Catalog”。接下来创建块(Block)目录,并复制Breadcrumbs.php到你的新目录中。这里还需要你创建一个config.xml配置文件。

app/code/core/local/App/Catalog/Block/Breadcrumbs.php

app/code/core/local/App/Catalog/Block/etc/config.xml

修改Breadcrumbs.php的类名为App_Catalog_Block_Breadcrumbs,并继承原类名Mage_Catalog_Block_Breadcrumbs。

现在,你需要激活你的新模块,这样magento才能够知道你的新模块。

创建文件app/etc/modules/App_All.xml,添加如下代码。

<?xml version="1.0"?>

<config>

<modules>

<App_Catalog>

<active>trueactive>

<codePool>localcodePool>

App_Catalog>

modules>

config>

下面我们需要一个特殊的标签来复写掉Breadcrumbs,下面我们通过模块的配置文件来实现。

重写Magento区块(Blocks)

编辑文件”app/code/local/App/Catalog/etc/config.xml”

<?xml version="1.0" encoding="UTF-8"?>

<config>

<modules>

<App_Catalog>

<version>0.1.0version>

App_Catalog>

modules>

<global>

<blocks>

<catalog>

<rewrite>

<breadcrumbs>App_Catalog_Block_Breadcrumbsbreadcrumbs>

rewrite>

catalog>

blocks>

global>

config>

我们需要添加一个”blocks”标签,或者在已经存在的”blocks”标签中添加内容。然后在模块名后面添加rewrite标签,在这个例子中模块名是”catalog”。然后我们看“breadcrumbs”标签,这个标签帮助magento找到我们我们想修改的块。在我们的列子中,breadcrumbs是Magento核心代码中的类名: app/code/core/Mage/Catalog/Block/Breadcrumbs.php。如果你有更多的目录层级,可以用下滑线来分隔。例如:

<blocks>

<catalog>

<rewrite>

<category_view>App_Catalog_Block_Category_Viewcategory_view>

rewrite>

catalog>

blocks>

在这个例子中,我们重写了app/code/core/Mage/Catalog/Block/Category/View.php。

在breadcrumbs标签中的值是你的类名,这样Magento就可以获取你的类,因为类名与你的目录名一致。用过zend framework的人都知道,自动加载auto loader这个东西,它会跟你类名中的下滑线去你的目录中需要对应的类文件。记住一点,下滑线代表下一级别的文件夹,如果你的类名与你的文件目录名不一致,那么Magento根本不会理睬你。

举例来说:

App_Catalog_Block_Breadcrumbs→/app/code/local/App/Catalog/Block/Breadcrumbs.php

App_Catalog_Block_Category_View→/app/code/local/App/Catalog/Block/Category/View.php

相关问题

← 返回跨境问答

有用的话,留给自己或同行