高度PHP

php8848 技术博客

Posts Tagged ‘magento’

二月 14th, 2012

Magento:自己做的Magento支付插件,Chinesepay 包含支付宝,财付通(免费)

No Comments, Magento, PHP, 下载区, 技术天空, by admin, 30 views.

看Magento也有一段时间了,自己做了一个Magento的支付插件, Chinesepay,这个插件包含了支付宝与财付通支付接口,并且通过财付通提供的网银直连功能实现了网上银行直接付款。目前官方网站正在审核中,先在这里做一下推广。 官方网站地址: www.magentocommerce.com/magento-connect/chinesepay-7511.html 下载地址:http://www.kuaipan.cn/file/id_7530666807795385.html 原来还做了一个单独的支付宝的,因为有人已经做过了,所以也没怎么关注,感觉财付通的支付插件都没怎么有做的,可能跟不是很流行有关系吧。 这个官网审核已经通过了,可以直接通过 connect来使用 地址:http://www.magentocommerce.com/magento-connect/lilysoft-alipay-8341.html http://connect20.magentocommerce.com/community/lilysoft_alipay 希望大家能够用上,我看到有很多支付插件买的挺贵,200多一个支付宝插件,我觉得没有那么难,所以就自己做了,我也没买过付费的插件,可能是我做的还比较菜吧,不管怎样,欢迎点评。

二月 2nd, 2012

Magento 翻译文件时对于单引号和双引号的处理

No Comments, Magento, PHP, 技术天空, by admin, 4 views.

在做Magento的语言包的时候,遇到单引号的双引号时需要作如下处理 字符串中存在单引号的情况, 在php代码中 使用 单引号来包裹字符串,就要使用反斜杠的转义字符 例如 <?php echo $this->__(‘TenPay is Tencent\’s third-party payment platform.’)?> 而在翻译文件中,使用双引号来包裹字符串,就要去掉这个反斜杠 “TenPay is Tencent’s third-party payment…

二月 2nd, 2012

Magento core config data的使用

No Comments, Magento, PHP, 技术天空, by admin, 1 views.

在开发模块的时候,往往需要在后台创建一些用户可配置的数据,利用这些数据,用户可以在后台对我们的模块进行一些自定义的配置,这些配置的表单是在 system.xml中定义的,数据是存储在 数据库表 core_config_data中的,而默认值是存放在config.xml中的default节点中的,需要注意的是,数据访问的路径取决于 在  system.xml中定义的 section/group/field 的名称,而不是取决于  config.xml中的默认值的路径,以前的理解有错误。

二月 2nd, 2012

在block类中重新指定 template的方法

No Comments, Magento, PHP, 技术天空, by admin, 1 views.

在block的类函数里面有 setTemplate(),可以指定该block要加载 template文件,前提是 该block的声明里面没有规定 template的值,如果规定了 template的值的话,你会发现在 构造函数中调用 setTemplate设置的 模板文件是不起作用的。原因是 layout 规定的 template的加载 在 block类的构造函数之后,即使指定了,也会被原来的值冲掉,解决方法只有一个,就是在最后调用 setTemplate ,最后是在 _toHtml()中加入 setTemplate就可以了,具体的写法,在 block类中重写  _toHtml()函数 protected…

二月 2nd, 2012

magento layout中 update handle 的用法

No Comments, Magento, PHP, 技术天空, by admin, 2 views.

今天在处理”My account layout”时发现”update handle”这样的标签 后来查阅资料后,才知道 原来magento可以通过这样的layout设置机制来做相同设置处理 相同处理设置: <customer_account translate=”label”> <label>Customer My Account (All Pages)</label> <remove name=”catalog.leftnav”></remove> <remove name=”index.right.specail.offer”></remove> <remove name=”catalog.compare.sidebar”></remove>…

二月 2nd, 2012

关于collection对象的使用细节。

No Comments, Magento, PHP, 技术天空, by admin, 1 views.

Magento的collection对象十分方便,我们只需要在 model_mysql4中的collection类中添加不同的过滤器就可以随意的组合这些过滤器从而得到自己需要的数据集合。在使用的过程中,我发现不同的使用方式会导致不同的结果。 举例来说:我们有一个 log 的 collection集合,该集合有2个过滤器,addBookFileter()和addCustomerFilter()过滤器,假设我们首先使用addCustomerFilter(),我们想取出过滤之后的结果。 $logCollection = Mage::getSingleton(‘library/log’)->getCollection(); $logCollection = $logCollection->addCustomerFilter($customer->getId()); 同时我们想取得目前集合的数量以及遍历一下集合 如果我们使用 count ($logCollection),foreach($logCollection as $item),等一类函数,可以取到我们想要的值 但是再为我们的 $logCollection添加一个过滤器  addBookFileter()的时候,有些时候我们无法得到两个过滤器执行之后的值。经过测试我发…

二月 2nd, 2012

magento代码验证是否登录

No Comments, Magento, PHP, 技术天空, by admin, 1 views.

在magento中有些功能是需要用户登录之后才可以展示给客户看到.在magento中用户登录是放在session中的 如果要查看用户是否登录来控制权限可以这样用 if(!Mage::getSingleton(“customer/session”)->isLoggedIn())  { // 客户没有登录,这里输入处理流程. } 我们可以在controller层中实现,如果用户没有登录,就跳转到登录页面去 if(!Mage::getSingleton(“customer/session”)->isLoggedIn()) { $session = Mage::getSingleton(“customer/session”); // Store The Current Page Url Where User…

二月 2nd, 2012

Magento的Mage静态类

No Comments, Magento, PHP, 技术天空, by admin, 4 views.

Magento的Mage静态类,属于全系统的核心类。里面的方法都很实用。Mage类文件头中有部分初始化包含路径的代码: define(‘DS’, DIRECTORY_SEPARATOR); define(‘PS’, PATH_SEPARATOR); define(‘BP’, dirname(dirname(__FILE__))); Mage::register(‘original_include_path’, get_include_path()); if (defined(‘COMPILER_INCLUDE_PATH’)) { $appPath = COMPILER_INCLUDE_PATH; set_include_path($appPath . PS . Mage::registry(‘original_include_path’));…

二月 2nd, 2012

Magento error:ront controller reached 100 router match iterations

No Comments, Magento, PHP, 技术天空, by admin, 0 views.

再添加自定义路由,进行调试的时候出现了这样的错误。 经过错误调试,将代码定位到这一段 $request->setModuleName ( ‘library’ )->setControllerName ( ‘book’ )->setActionName ( ‘view’ )->setParam ( ‘id’, $bookId ); 加上这句就会出现标题的错误。 问提的原因为,对request进行重定向的话,如果这个  controller和 action 没有创建的话,那么该次请求就会又被甩到路由器中重新路由,进入死循环,知道迭代器中存满100个…

二月 2nd, 2012

Magento 模块制作–添加自定义路由

No Comments, Magento, PHP, 技术天空, by admin, 3 views.

在制作新的模块的时候,有可能要用到内部路由,将不同的url请求使用路由导向到相同的action来进行处理,以方便代码复用和优化结构。 下面记录一下添加路由的方法。 环境: magento 1.5.1.0 正式版 工具:magento module creator (用于创建标准模块) 步骤: 1. 安装 magento (略) 2. 使用 module creator 创建标准模块…

二月 2nd, 2012

Magento 模块主题打包全过程

No Comments, Magento, PHP, 技术天空, by admin, 2 views.

在完成了 Magento 主题或者模块的开发之后。可以利用Magento后台的打包工具,将我们的劳动成果做成一个漂亮的安装包。 在system中选择 Magento Connect -》 Package Extension, 填写表单 首先是 Package Info Channel选择 community 共享版本。 Release info 然后是 Author…

二月 2nd, 2012

简单的Magento两级产品导航菜单显示

No Comments, Magento, PHP, 技术天空, by admin, 2 views.

仿站过程中经常会遇到一些包含两层产品分类的菜单,如下图这样: 这种菜单的实现直观上讲是比较简单的,只需要做两次遍历就可以了。但是正如众所周知的那样,Magento作为一个庞大的系统,它内部方法的定义是比较零散的,同时也鲜有文档来完整地说明这一系列的方法,因此在使用过程中不断积累是上手的重要途径。 这部分实现的模板代码如下: <div> <div> <span>商品<span>分类</span></span> </div> <?php $rootCategoryId = Mage::app()->getStore()->getRootCategoryId(); ?> <?php $_category = Mage::getModel(‘catalog/category’)->load($rootCategoryId); ?> <?php $_categories =…

二月 2nd, 2012

Magento Price筛选属性的价格区间的自定义设置

No Comments, Magento, PHP, 技术天空, by admin, 4 views.

找了好久才找到,其实设置很简单。在后台的configruation->catlog->catlog->layerd navigation中进行设置,price navigation step calculation 选择manual,那么就会出现出现下面的文本框,输入你想要的step数值就可以了。 要找到这个地方也不是很容易,我的路径是,先打开开发者提示,找到 price所用的block的php文件, \app\code\core\Mage\Catalog\Block\Layer\Filter\price.php, 发现在这里没有关于价格区间的设置,但是在 构造函数中有这样一句 $this->_filterModelName = ‘catalog/layer_filter_price’; 和在 该类的父类 abstract类中找到的 $this->_filter = Mage::getModel($this->_filterModelName)…

二月 2nd, 2012

Magento 中产品属性筛选器的使用

No Comments, Magento, PHP, 技术天空, by admin, 10 views.

在Magento中,提供了使用商品属性对产品进行筛选的功能,在分类页的侧栏中显示,如果没有设定好要进行筛选的属性,那么默认只显示 使用子分类进行产品筛选。筛选器的默认标题是 shop by 上图中的color属性是重新添加的,price属性是默认就开启的,但是全新安装的magento,加入产品后,并不会显示这个属性筛选,我们需要对属性进行设置才可以。 在后台选择属性管理 在 过滤器中搜索  price,并选择 price属性, 在 打开的属性修改页面,更改 Use In Layered Navigation属性 该属性有三个选项, No: 该属性不作为筛选属性。 Filterable…

二月 2nd, 2012

Magento layout文件中 action的作用

No Comments, Magento, PHP, by admin, 5 views.

在Magento的布局 xml文件中,有些block下面会有些action的标签 比如, <block type=”catalog/product_new” name=”product_new” template=”catalog/product/new.phtml”> <action method=”setProductsCount”><count>1</count></action> </block> 这种写法的作用是 调用block 文件 \app\code\core\Mage\Catalog\Block\Product\New.php(由type属性指定)中的 setProductsCount方法,参数为标签里面的子元素。 注意一点,在写 block的时候 name 不能不写,如果不写name,action将无发找到相应的方法。