Archive for the ‘技术’ Category

magento重写后台动作

Sunday, October 30th, 2011

我们在深入理解magento系列教程中看到过重写前台代码的例子,但是如何重写后台动作只在注释中简单的提到,以下是在1.6.0中测试可以使用的例子。

1. 创建新模块 app/etc/Maker_Overridecontroller.xml
<?xml version="1.0"?>
<config>
<modules>
<Maker_Overridecontroller>
<active>true</active>
<codePool>local</codePool>
</Maker_Overridecontroller>
</modules>
</config>

2. 创建 app/code/local/Maker/Overridecontroller/etc/config.xml

<?xml version="1.0"?>
<config>
<modules>
<Maker_Overridecontroller>
<version>0.0.1</version>
</Maker_Overridecontroller>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Maker_Overridecontroller before="Mage_Adminhtml">Maker_Overridecontroller</Maker_Overridecontroller>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>

3. 创建控制器 app/code/local/Justwebdevelopment/Overridecontroller/controllers/Catalog/ProductController.php

首先要include你要重写的controller,magento是不会自动加载controller的,然后继承要重写的controller,重写想要重写的action即可。

<?php
include_once("Mage/Adminhtml/controllers/Catalog/ProductController.php");
class Maker_Overridecontroller_Catalog_ProductController extends Mage_Adminhtml_Catalog_ProductController
{
public function editAction(){
echo "Override Product Edit Action...";
exit;
}
}
?>

这样编辑动作就被成功重写了,如果你的代码没有工作,那么请检查你各个位置的命名。

我还尝试了一些使用<rewrite>标记的方法,但是貌似都没有生效,不清楚是哪里弄错了。

Magento安装教程

Saturday, October 22nd, 2011

1.下载

从官方网站(http://www.magentocommerce.com/download)下载最新版本的magento及示例数据。

  • 系统程序Full Release – stable version ver 1.6.1.0 – Added October 19, 2011
  • 示例数据Sample Data ver 1.2.0 – Added December 29, 2008

2.安装

在安装之前,确认你已经安装了php运行环境,并确保apache和mysql服务已经正常运行。将解压后的目录放到web目录下,如果要安装测试数据需要把Sample Data中的media目录复制到magento安装目录中去。

  • xampp的web目录是htdocs
  • WAMPServer的web目录是Apache\WWW

 

打开http://localhost/magento 开始按照提示进行安装。

选择同意条款,下一步

选择时区和货币种类,下一步

如果未做相应设置可能会出现上面这种提示,因为magento是基于这些模块运行的。

到你的php.ini中找到这个下面这些内容:

extension=php_mcrypt.dll
extension=php_curl.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll

确保前面的分号”;”已经被去掉

如果是xampp或者WAMPServer需要修改两个php.ini,xampp的在 apache\bin, WAMPServer在C:\wamp\bin\apache\Apache2.2.11\bin目录下, 在php.ini中做同样修改。

另外安装过程中创建数据库的时间比较长,需要临时修改PHP.ini中的一些设置:

max_input_time = 300
memory_limit = 512M
mysql.connect_timeout = 300
max_execution_time = 1800

修改好之后重新启动apache服务,然后刷新页面之后弹出界面如下:

输入数据库名和数据库的用户名和密码,如果还没有数据库需要为magento手动创建一个新的数据库,WEB设置可以保持默认设置。

创建你的数据库 例如:

名称: magento
字符集为: utf-8
字符集设置: utf8_bin

如果需要使用测试数据,需要在下一步之前导入sample data。选择新创建的数据库,在右边的窗口中选择导入(Import)功能,选择sample data压缩包中的数据文件magento_sample_data_for_1.2.0.sql

在弹出窗口中找到下载并解压缩的示例数据文件后,点击open后返回导入页面,点击右下角的GO开始导入数据。

导入数据后,再通过浏览器窗口进行magento系统的安装。

可以选择会话(session)数据保存在数据库(database)中,默认是在临时文件夹中以文件的形式存在

填写你登陆后台的密码和账号,继续下一步

到这里magento就已经安装完毕了,点击Go to Backend或者进入http://localhost/magento/index.php/admin/登陆你的后台。

如果安装了示例数据,再安装电子商务系统后,当访问具体商品时会出错,提示访问的页面不存在。这是因为系统生成的静态网址需要被更新,因此我们需要重新建立静态网址索引,登陆系统管理后台,进行system/index management页面,选择所有的索引(最重要的就是catalog url rewrites),然后选择重建索引(Reindex data)并执行。

重建索引后再访问具体商品时就能正常访问了。

3.汉化

在Magento 1.6版本中的后台默认已经支持中文,对前台需要我们手工进行汉化。

方法一,通过Magento Connect自动安装程序安装

在管理界面上选择Magento connect Manager进入插件安装管理界面

在www.magentocommerce.com网站上查找相关的插件:

http://www.magentocommerce.com/extension/359/magento-community-modules–chinese-simplified-china-language-pack

Magento Community Modules – Chinese Simplified (China) Language Pack

KEY: magento-community/Locale_Mage_community_zh_CN

由于这个插件还处于beta版本,我们要先设置插件管理可以接受beta版本的程序(默认只接受稳定版本的插件)。

在setting页面上选择可以接受状态为Beta,然后点击保存设置

把这个KEY拷贝粘贴到插件管理界面上的插件代码文件框中,然后点击安装即可。

方法二,把汉化文件包拷贝到相关的目录下

把汉化包解压得到一个文件夹app,拷贝这个文件夹到安装目录下,覆盖其中的app文件夹即可。

注:本文为修改版,原文出自豆丁网。

Magento学习资源

Thursday, October 20th, 2011

最近开始学习magento,整理一些学习资源和教程。

magento用户手册中文版

magento模板制作教程中文版

深入理解magento

深入理解magento是官方提供的由Alan Storm撰写的开发人员教程,下面是Hailong Zhang翻译的深入理解maganto系列教程,Alan Storm的原文还有四章,该系列教程介绍了magento开发的一些基础知识。

深入理解magento系列教程还有由精东翻译的第九章和第十章,不过顺序好像是反了。

Extensions Tutorial


extension tutorial系列由 撰写,其中介绍了magento的前台和后台扩展方法,包括后台Grid对象的使用和多语言的用法,原文德语,只需按照例子操作即可。

Creating a Magento Widget

 

其它资源

 

国外PHP开源CMS系统一览

Sunday, February 13th, 2011

Joomla!

Joomla! 是一套采用PHP+MySQL数据库开发,可跨平台运行的内容管理程序。Joomla! 除了具有新闻/文章管理,文档/图片管理,网站布局设置,模板/主题管理等一些基本功能之外。还可通过其提供的上千个插件进行功能扩展包括:电子商务与购 物车引擎、论坛与聊天、日历、博客、目录分类管理、广告管理程序、电子报、数据收集与报表工具、期刊订阅服务等。
官方资源

官方网站:http://www.joomla.org

TYPO3 — 扩展支持,功能强大

Typo3 是一款开源的网站内容管理程序。Typo3 基于 PHP 和 MySQL。与一般的 CMS 不同,Typo3 对网站管理员的技术能力要求较高,其内部包含一系列完整的接口、函数和模块,使得Typo3的扩展功能开发十分灵活。Typo3 使用了模板分离技术,其模板使用了内置的 TypoScript 语言。Typo3 在企业级应用上表现出色。

官方网站:http://typo3.org

Pixie — 有扩展支持,模块,主题,插件,块(Blocks)

Pixie是一款简单精致的轻型开源CMS。作为2009年Open Source CMS Award – 最具潜力开源CMS大奖的亚军,Pixie并不热衷于与其他同类系统竞争,他们的目标是打造一款“简单到连祖母都会使用”的建站系统,同时不失其强大的功能特色。

Pixie严格遵循Web标准,在可用性及SEO方面表现出色;用户在安装Pixie时甚至可以提前选择不同的预设安装包来打造博客、商业网站等不同类型的站点。

官方网站:http://www.getpixie.co.uk

XOOPS

XOOPS 是一套开源的内容管理程序,衍生自 PHP-Nuke,采用PHP语言跟MySQL数据库。功能、界面全部模板化设计,可用于构建各种网络社区。XOOPS 的发布采用GPL协议,可免费使用和修改;在遵循GPL相关条款的前提下,可自由再发布。

XOOPS 的用途很广泛,对于个人用户,可以启用XPress模块(针对XOOPS的WordPress),作为个人的网志。对于较大规模的网站,可以根据需要,启 用更多的模块,如新闻发布、论坛、资源下载、友情链接,以及在线购物、广告管理等,对于Wiki、RSS,XOOPS也有相应的模块。

在国际语言支持方面,XOOPS有十种以上的语言版本,包括简体中文、繁体中文,编码可自由选择采用GB 2312、BIG 5或是UTF-8。
官方资源

官方网站:http://www.xoops.org

Textpattern — 没有扩展支持

Textpattern 是一款简洁而又漂亮的CMS,主题很素雅,留有很大的个性化空间。内置Textile写作语法,所以用户不必懂得 HTML标签语法也能轻松写作。预设主题非常简洁,但可定制程度很高。Textpattern采用 PHP+MySQL构建,代码体积小,效率高,网页访问速度快。目前已支持包含中文在内的多种语言。Textpattern 适合做风格清新简练的博客。
官方资源

官方网站:http://textpattern.com

ImpressCMS — 有很多扩展,Modules和Themes。

2009年Open Source CMS Award – 最具潜力开源CMS大奖冠军得主。基于MySQL驱动的模块化的内容管理系统。网站内容由各自独立的内容模块进行管理,用户可以按照自己的需求来安装相应的模块,当前可用的模块包括:新闻发布,论坛,相册以及其它各类第三方模块扩展。

官方网站:http://www.impresscms.org

SilverStripe — Module,Theme,Widget,扩展较多

SilverStripe是一款功能强大的CMS内容管理系统,具有强大的网站设计功能,直观和友好的用户操作界面。采用MVC框架设计开发并运用了Ajax技术。易于扩展。所有页面都符合XHTML标准并基于模板生成。安装需要PHP5和MySQL环境支持,内置所见所得编辑的文本编辑器TinyMCE。文件管理界面采用了AJAX技术,可仅通过简单的拖曳,来调整文件树和链接关联。

官方网站:http://silverstripe.org

MODx — 从官方网站上看,用户体验非常烂,有扩展功能,但看上去乱七八糟的,源码包也太大了。

MODx 是一个开源的 PHP 应用框架,可以帮助使用者控制自己的网上内容。它是开发人员和高级用户理想的控制系统,任何人都可以使用 MODx 发布、更新、维护动态网站,或 html 静态页面的网站内容。

MODx 也是 CSS 布局的 Ajax CMS ,是一个完全符合 XHTML 标准规范的 php 内容管理系统(CMS),内部集成的 MooTools、Scriptaculous 和 Prototype 库,MODx系统能够帮助用户、开发者和CSS设计者或Ajax爱好者快速建立“Web 2.0”网站。

官方网站:http://modxcms.com

ExpressionEngine — 收费的

ExpressionEngine 是 EllisLab 推出的内容管理程序,它包含一个免费的“核心”版本,和一次性收费的“个人”及“商业”版本。ExpressionEngine 是基于 CodeIgniter 开发(CodeIgniter 也是 EllisLab 的产品)构架的,这也使得它能得到更多的PHP程序员的支持,从而开发出更多的插件和模块。ExpressionEngine 的后台管理面板很精美,依靠 AJAX 技术实现了不少只有在桌面软件中才有的效果,采用jQuery更是给插件的开发带来了许多方便。

官方网站:http://expressionengine.com

国外优秀的CMS项目还有很多, 以上整理了一些比较有名气的, 当然其他不知名的CMS系统中也不乏优秀作品.

解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题

Friday, March 26th, 2010

其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了.

这次又遇到这个问题了, 在网上一番寻找, 在一篇java的文章里找到了原因, 是由于输出的CSV文件中没有BOM.

什么是BOM?

在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。

那么如何在PHP中输出BOM呢?

在所有内容输出之前

print(chr(0xEF).chr(0xBB).chr(0xBF));