文档章节

magento新闻模块开发(一)

xinson
 xinson
发布于 2015/10/12 11:52
字数 795
阅读 78
收藏 0

Magento模块开发的简单示例

开发模式下开启日志记录,方便调试。

System->Developer

magento/var 要开启777权限,/var/log目录下能看到(exception.log,system.log)。


模块文件 (Xinson 为Packagename,News为Modulename)

Packagename_All.xml的命名表示Package中开启多个模块

/app/etc/modules/Xinson_News.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Xinson_News>
            <active>true</active>
            <codePool>local</codePool>
        </Xinson_News>
    </modules>
</config>


在loacl新建相关目录


模块的配置文件

/app/code/local/Xinson/News/etc/config.xml 

<?xml version="1.0"?>
<config>
    <modules>
        <Xinson_News>
            <version>0.1.0</version>
        </Xinson_News>
    </modules>
</config>


添加安装文件

/app/code/local/Xinson/News/sql/news_setup/mysql4-install-0.1.0.php

<?php

$installer = $this;
$installer->startSetup();
$installer->run("
-- DROP TABLE IF EXISTS {$this->getTable('news')};
CREATE TABLE {$this->getTable('news')} (
  `news_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '',
  `content` text NOT NULL DEFAULT '',
  `created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `is_active` tinyint(1) unsigned NOT NULL DEFAULT '1',
  PRIMARY KEY (`news_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    ");
$installer->endSetup();

在config.xml配置文件,resources为执行news_setup里的文件(相关数据库操作,版本更新),translate为语言包(Xinson_News.csv放在app/locale/zh_CN里面)

<config>    
    <global>    
        <resources>
            <news_setup>
                <setup>
                    <module>Xinson_News</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </news_setup>
        </resources>
        <translate>
            <modules>
                <Xinson_News>
                    <files>
                        <default>Xinson_News.csv</default>
                    </files>
                </Xinson_News>
            </modules>
        </translate>
    </global>
</config>


此时进入后台,清除缓存。

在system->Configuration->Mage Trash App->Extensions Installed

可以看到Xinson_News。

并且在core_resource表中能看到,xinson_setup  0.1.0  0.1.0。还有新建的表news。


在config.xml中添加资源

global表示全局,即前台,后台都能使用。adminhtml为后台,frontend为前台。

<config>
    <global>
        <resources>
            ......
            <news_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </news_write>
            <news_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </news_read>
        </resources>
    </global>
</config>


添加Model

/app/code/local/Xinson/News/Model/News.php

<?php

class Xinson_News_Model_News extends Mage_Core_Model_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('news/news');
    }
}

/app/code/local/Xinson/News/Model/Mysql4/News.php

<?php

class Xinson_News_Model_Mysql4_News extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {
        $this->_init('news/news', 'news_id');
    }
}

/app/code/local/Xinson/News/Model/Mysql4/News/Collection.php

<?php

class Xinson_News_Model_Mysql4_News_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('news/news');
    }
}


在config.xml中添加Model(在global里面)

<global> 
    <models>
        <news>
            <class>Xinson_News_Model</class>
            <resourceModel>news_mysql4</resourceModel>
        </news>
        <news_mysql4>
            <class>Xinson_News_Model_Mysql4</class>
            <entities>
                <news>
                    <table>news</table>
                </news>
            </entities>
        </news_mysql4>
    </models>
</global>


添加Helper和Block

/app/code/local/Xinson/News/Helper/Data.php

<?php

class Xinson_News_Helper_Data extends Mage_Core_Helper_Abstract
{

}

在config.xml中添加Helper和Block

<config>
    <global>
        <blocks>
            <news>
                <class>Xinson_News_Block</class>
            </news>
        </blocks>
        <helpers>
            <news>
                <class>Xinson_News_Helper</class>
            </news>
        </helpers>
    </global>
</config>


添加样例数据和前段控制器

进入MYSQL执行

INSERT INTO `news` (`title`, `content`, `created_at`, `updated_at`, `is_active`) VALUES ('title1', 'content1', '2015-11-29 08:00:00', '2015-11-29 08:00:00', 1);
INSERT INTO `news` (`title`, `content`, `created_at`, `updated_at`, `is_active`) VALUES ('title2', 'content2', '2015-11-29 08:10:00', '2015-11-29 08:10:00', 1);

前端控制器

/app/code/local/Xinson/News/controllers/IndexController.php

<?php

class Xinson_News_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        $news = Mage::getModel('news/news')->getCollection();
        foreach ($news as $new) {
            var_dump($new->getData());
        }
    }
}

config.xml路由配置

<config>
    <frontend>
        <routers>
            <news>
                <use>standard</use>
                <args>
                    <module>Xinson_News</module>
                    <frontName>news</frontName>
                </args>
            </news>
        </routers>
    </frontend>
</config>


在浏览器中打开 http://localhost/news 将看到var_dump的数据


此时的config配置文件

<?xml version="1.0"?>
<config>

    <modules>
        <Xinson_News>
            <version>0.1.0</version>
        </Xinson_News>
    </modules>

    <global>
        <resources>
            <news_setup>
                <setup>
                    <module>Xinson_News</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </news_setup>
            <news_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </news_write>
            <news_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </news_read>
        </resources>
        <models>
            <news>
                <class>Xinson_News_Model</class>
                <resourceModel>news_mysql4</resourceModel>
            </news>
            <news_mysql4>
                <class>Xinson_News_Model_Mysql4</class>
                <entities>
                    <news>
                        <table>news</table>
                    </news>
                </entities>
            </news_mysql4>
        </models>

        <translate>
            <modules>
                <Xinson_News>
                    <files>
                        <default>Xinson_News.csv</default>
                    </files>
                </Xinson_News>
            </modules>
        </translate>

        <blocks>
            <news>
                <class>Xinson_News_Block</class>
            </news>
        </blocks>

        <helpers>
            <news>
                <class>Xinson_News_Helper</class>
            </news>
        </helpers>

    </global>

    <frontend>
        <routers>
            <news>
                <use>standard</use>
                <args>
                    <module>Xinson_News</module>
                    <frontName>news</frontName>
                </args>
            </news>
        </routers>
    </frontend>


</config>


© 著作权归作者所有

共有 人打赏支持
xinson
粉丝 15
博文 133
码字总数 29814
作品 0
广州
程序员
Magento微信支付接口开发小记

遇到了很多意想不到的问题,首先是微信支付分为四种:刷卡支付(线下)、扫码支付(PC网站)、公众号支付(微信中打开商户的H5页面)、APP支付(移动端支付),客户需要的微信扫码支付,而之前...

Alipaymate
2015/09/17
1K
0
Magento2, 我们在等你

文章前面我要说明,Magento2.0和1.X是完全不同的两个版本.简单来说,magento2.0完全是重构的.完全的不同,彻底的不同.记住哦,这是magento贰 git获得magento2源码:https://github.com/magento/m...

蟋蟀哥哥
2011/12/16
11.1K
18
Magento微信登陆模块 / Magento微信联合登陆 / 支持Magento 1.9.X

原文:Magento微信登陆模块,支持Magento1.9.X 关于Alipaymate 2012年以来,Alipaymate一直专注于支付宝接口开发集成,以及微信支付、网银在线、Paypal、财付通、Global Connect 国际信用卡支...

Alipaymate
2015/11/24
784
1
深入理解Magento - 第一章 - Magento强大的配置系统

深入理解Magento 作者:Alan Storm 翻译:zhlmmc 前言我从2007年开始使用Magento,应该算是国内第一批使用Magento的用户。但是我却从来没有认真研究过Magento,更多的停留在应用层面。虽然也...

虫虫
2010/04/13
9.2K
19
magento新闻模块开发(二)

Magento提供了强大的Grid Widget使我们能够方便的创建数据表格,现在我们为新闻模块创建后台数据表格。 修改config.xml配置文件,添加admin路由 <config> <admin> <routers> <news> <use>adm......

xinson
2015/10/12
93
0

没有更多内容

加载失败,请刷新页面

加载更多

play framework 如何支持多数据源

有段时间没有写博客了,但今天又写一篇了,主要是因为这事有一丝自己的思考和动手实践,所以就记录下来了。 现有的问题: play 1.2.4 两台数据库服务器,但是play1.2.4 并不支持同时连接两台...

tuerqidi
12分钟前
0
0
Mysql only_full_group_by解析

查看当前数据库模式: select @@sql_mode; 原因: mysql 5.7中的sql_mode的值中包含'ONLY_FULL_GROUP_BY'; 处理:执行以下SQL set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,N......

bug_404
13分钟前
0
0
防止表单重复提交

1:前端方式(治标不治本) $("#admin-role-save").click(function(){//admin-role-save为submit的idvar ts=$(this);var ts_old_val=ts.val();ts.val("提交中....");ts.att...

uug
14分钟前
0
0
保持屏幕常亮

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 在act的created方法中调用即可,一般是播放视频的时候......

Carbenson
14分钟前
0
0
智能合约实施指南

与区块链技术一样,智能合约在商业领域也非常有价值。 为了让我们的读者彻底了解智能合约是什么以及它们如何影响现代商业的交易方式,我们准备了本指南。 集中商业模式正在给去中心化的模式让...

geek12345
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部