Magento笔记/记录(1)

1.Magento eav_attribute表中source如何指定自定义数据来源
  如果你引用的类名为yebihai_usermanage_model_entity_school你必须完整的给出地址,不能usermanage/entity_school,这样默认是在Mage下面去找的。
  如:

$setup->addAttribute(‘customer‘, ‘school‘, array(

‘type‘ => ‘int‘,

‘input‘ => ‘select‘,

‘label‘ => ‘School‘,

‘global‘ => 1,

‘visible‘ => 1,

‘required‘ => 0,

‘user_defined‘ => 1,

‘default‘ => ‘0‘,

‘visible_on_front‘ => 1,

‘source‘=> ‘yebihai_usermanage_model_entity_school‘, //数据来源,text留空即可

));

2.Magento getPrice()的结果小数点位数的处理
echo Mage::helper(‘core‘)->currency($_product->getPrice()); 
输出格式:888.673 => 888.67

3.Magento config.xml中global节点中的block重写与blocks下面的命名标签必须小写,如:

<global>

<!-- st 重写Block配置 -->

<blocks>

<catalog>

<rewrite>

<!-- 标签符号大小写敏感,category_view必须小写  -->

<category_view>Yebihai_CategoryList_Block_Category_View</category_view>

</rewrite>

</catalog>

</blocks>

<!-- end 重写Block配置 -->

<blocks>

<!-- categorylist只能用小写 -->

<categorylist>

<class>Yebihai_CategoryList_Block</class>

</categorylist>

</blocks>

</global>

4.Magento获取列表当前排序方式ASC or DESC?
获取当前排序:$this->getAvailableOrders()
获取当前分页:$this->getCurrentPage()
列表页的各种内容获取都在:Mage_Catalog_Block_Product_List_Toolbar这个类里面,有需要直接去这里面找。

5.Magento Collection添加排序?

$subCategories = Mage::getModel(‘catalog/category‘)->getCollection();

$subCategories->setOrder(‘position‘, ‘ASC‘);

6.Magento Collection where里面的或条件如何实现?

$result = $selfread->select()->from( $table, array(‘id‘))

->where( ‘reid = ‘.$reid,‘topid =‘.$reid);//reid=$reid 或 topid=$reid

7.Magento操作某条数据下面的多个字段,使用场景如下:
本人在做订单备注的时候在监听类里面通过Magento系统的addStatusHistoryComment方法把订单内容能成功写入sales_flat_order_status_history表,但是我的需求是还要修改is_visible_on_front此字段的值,让内容在前台可见。头痛的问题来了,想了各种方法最后按下面的方式解决了。
监听类全部源码:

class Yebihai_CustomerOrderComments_Model_Observer

{

public function setCustomerOrderComments(Varien_Event_Observer $observer)

{

$_order = $observer->getEvent()->getOrder();

$_request = Mage::app()->getRequest();

$_comments = strip_tags($_request->getParam(‘customerOrderComments‘));

if(!empty($_comments)){

$_order->setCustomerNote(‘<br/><strong>订单备注:</strong> ‘ .$_comments);

$_order->addStatusHistoryComment(‘订单备注: ‘ .$_comments)->setIsVisibleOnFront(1);

}

return $this;

}

}

8.Magento个人中心左侧菜单控制
关于个人中心的主要功能都是在customer这个模块进行,需要修改相应的功能,直接去你的模板customer文件夹去修改。
左侧菜单模板路径:customer/account/navigation.phtml
9.Magento把html转换为转义字符,用什么方法?
core助手里面有一个escapeHtml方法,使用如下:
Mage::helper(‘core‘)->escapeHtml("<b>yebihai</b><span>加油</span><div style=‘display:block;font-size:18px;‘>go</div>");
方法实际位置:Mage_Core_Helper_Abstract这个类里面。
ps:关于一些常用的操作方法都封装在core这个模块,大家有需要可以分析一下源码。

10.Magento动态创建block并且引用action?
下面是我一个模块的布局(Layout)配置文件,我现在需要通过Ajax动态的调用checkoutcart,直接调用肯定是不行的,改如何解决乃?

<block type="checkout/cart" name="checkout.cart" as="checkoutcart" template="quickbuy/cart/cart.phtml">

<action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>quickbuy/cart/item/item_view.phtml</template></action>

</block>
第一步:通过ajax调用一个自定义控制器,如:

jQuery.post(‘<?php echo $this->getUrl(‘gouwuche/cart/updateQuickShoppingCar‘) ?>‘, function(data){

jQuery(‘#shopping-cart-table thead‘).after(data);

});

第二步:在控制器的方法中动态创建block,如:

public function updateQuickShoppingCarAction(){

$block = $this->getLayout()->createBlock(‘checkoutrewrite/quickcart‘)->setTemplate(‘quickbuy/cart/cart.phtml‘);

echo $block->toHtml();

}
第三步:新建一个block文件(quickcart),在这文件中的construct方法中初始化配置文件中的action内容,如:

public function __construct()

{

parent::__construct();

$this->addItemRender(‘simple‘, ‘checkout/cart_item_renderer‘, ‘quickbuy/cart/item/item_view.phtml‘);

}

PS:在进行第二步的时候,cart.phtml模板已加载完成,第三步只是为了加载cart block下面的action。

11. Magento getTable方法参数注意那些事项?
实例,查询数据库指定表和条件的方法如下:

public function getExcelKucunJiage($id,$status){

$selfread = $this->_getConnection(‘excelmanage_read‘);

$table = $this->getTable(‘excelmanage/excelkucunjiage‘);

$result = $selfread->select()

->from( $table )

->where( ‘excel_id=?‘, $id)

->where( ‘is_active=?‘, $status);

return $selfread->fetchRow($result);

}

其中getTable方法的参数设置需要注意如下,excelmanage就是你的模块名称,excelkucunjiage这个就是你操作的实体节点名称,我的实体配置如下:

<!-- st 数据库资源模型配置 -->

<excelmanage_resource_mysql4>

<class>Yebihai_ExcelManage_Model_Resource_Mysql4</class>

<entities>

<excelkucunjiage>

<table>excelkucunjiage</table>

</excelkucunjiage>

</entities>

</excelmanage_resource_mysql4>
<!-- end 数据库资源模型配置 -->

“/”后面的参数就是来源于表前面的实体名称。

12.如何更新数据表指定ID信息?    
   $excelModel = Mage::getModel(‘excelmanage/excelkucunjiage‘)->load(1);
   $excelModel->setExcelAdddate(Mage::getModel(‘core/date‘)->timestamp(time()));
   $excelModel->setIsActive(0);
   $excelModel->save();
上面的代码就是修改ID为1的数据表信息。
扩展:Magento如何添加修改指定表信息?

13.如何更改产品列表默认排序字段?
设置路径在:系统-->目录-->高级产品管理-->默认列表状态

14.获取一个数据集的条数?

  获取_productCollection数据集条数,案例如下:

  $this->setStoreId($storeId);

  $this->_productCollection = Mage::getResourceModel(‘catalog/product_collection‘);   //获取数据集

  $this->_productCollection = $this->_productCollection->addAttributeToSelect(‘*‘)

  ->addAttributeToSelect(‘manufacturer‘)  //添加查询属性

  ->setStoreId($storeId)  //设置商店

  ->addAttributeToFilter(‘cuxiaobiaoqian‘,array(‘eq‘=>39))   //属性过滤指定

  ->addStoreFilter($storeId)  //添加商店过滤条件

  ->setPageSize(6);   //获取条数

15. 通过select()方法查询指定数据表,如何控制读取条数?

  代码应用背景如下:

  $selfread = $this->_getConnection(‘yafo_bbs_setup‘); //数据库连接对象

  $table = $this->zixunTablePrefix."forum_post"; //待查询表

  $result = $selfread->select()->from( array(‘a‘=>$table), array(‘tid‘,‘subject‘)) //指定表和要查询的字段

  ->limit($size) //读取指定条数

  ->order("a.dateline DESC") //指定排序条件

  ->where( $selfwhere ); //添加筛选条件

  return $selfread->fetchAll($result); //返回查询结果

16.修改指定产品价格和分组价格(代码操作)?

$selfPrc = Mage::getModel(‘catalog/product‘)->load(614);

$selfData = $selfPrc->getData();

$selfData[‘price‘] = 25;

$selfData[‘group_price‘] = array(

0 => Array(

"website_id" => 0,

"all_groups" => 0,

"cust_group" => 0,

"price" => 97.0000,

"website_price" => 97.0000

),

1=> Array

(

"website_id" => 0,

"all_groups" => 0,

"cust_group" => 1,

"price" => 27.0000,

"website_price" => 27.0000

),

2=> Array

(

"website_id" => 0,

"all_groups" => 0,

"cust_group" => 2,

"price" => 17.0000,

"website_price" => 17.0000

),

3=> Array

(

"website_id" => 0,

"all_groups" => 0,

"cust_group" => 3,

"price" => 67.0000,

"website_price" => 67.0000

),

4=> Array

(

"website_id" => 0,

"all_groups" => 0,

"cust_group" => 4,

"price" => 66.0000,

"website_price" => 66.0000

));

$selfPrc->setData($selfData);

$selfPrc->save();

17.修改指定产品库存(代码操作)?

$selfPrc = Mage::getModel(‘catalog/product‘)->load(614);

$aa = Mage::getModel("cataloginventory/stock_item")->loadByProduct($selfPrc);

$selfaa = $aa->getData();

$selfaa[‘qty‘] = 23;

$aa->setData($selfaa);

$aa->save();

18.如何输出sql语句
$result = $selfread->select()->from(array(‘ft‘=>$flatTable),array())

->join(array(‘pc‘=>$prcCategory),‘ft.entity_id=pc.entity_id‘,array(‘pc.value‘))

->where( ‘ft.attribute_set_id=?‘, $attsetid)

->where( ‘pc.attribute_id=?‘, $attid)

->group("pc.value");

// echo $result; exit;//输出sql语句

19.后台表单配置,如何在代码里面添加备注?

$fieldset->addField(‘dict_grade‘, ‘select‘, array(

‘name‘  => ‘dict_grade‘,

‘label‘ => Mage::helper(‘catalogsearchrewrite‘)->__(‘Advanced Search Ciku Manage Grade‘),

‘title‘ => Mage::helper(‘catalogsearchrewrite‘)->__(‘Advanced Search Ciku Manage Grade‘),

‘type‘  => ‘options‘,

‘options‘ => Mage::getSingleton(‘catalogsearchrewrite/cikumanage‘)->getCikuGradeOptionArray(),

‘after_element_html‘ => Mage::helper(‘catalogsearchrewrite‘)->__(‘Keywords Grade Description.‘),  //after_element_html此属性就是用来添加备注

‘required‘ => true,

)

);

20.实例化model,通过load方法如何获取指定字段指定内容的值?
$dictModel=Mage::getModel(‘catalogsearchrewrite/cikumanage‘)->load($dictname,‘dict_name‘);  //参数1:指定值,参数2:指定字段

$dictModel->getDictName(); //获取返回的指定字段值

转载自:http://www.yebihai.com/magento/397.html

时间: 2024-10-15 20:21:06

Magento笔记/记录(1)的相关文章

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

Activiti 学习笔记记录(二)

上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Activiti就是来走这个流程的.所以我们还需要将Activiti 和 业务结合起来,即部署定义(画一个流程图,生成 bpmn 格式的文件).本章,就来讲 bpmn 的图怎么画? 一.什么是 bpmn 业务流程建模标记法 BPMN (Business Process Model and Notation),是工作

LNMP 源码安装 超详细笔记记录 PHP7 MariaDB 10.1.12

LNMP 源码安装 超详细笔记记录 php 7.04 版本 mariaDB  10.1.12 版本 首先安装nginx 一般编译nginx时,都要先安装pcre.zlib等外部支持程序,然后编译安装nginx时指定这些外部支持程序的位置,这样nginx在每次启动的时候,就会去动态加载这些东西了. 下面介绍的是另一种方式,即将这些程序编译到nginx里面去,这样nginx启动时就不会采用动态加载的方式去load.从古谱中可获知,这种方式会比动态加载有更高的效率. 首先 安装 yum install

UWP学习开发笔记记录(开篇)

零零散散开发微软移动2年多了,基本上从未记录或写过任何笔记.所以打算写一些自己的心得和技术的分享,大家一起来共同探讨.虽然现在UWP的工作几乎没有了,但是我感觉大家都是在观望,再看接下来微软的动作,所以在职的小伙伴闲暇之余有时间可以来补充学习一下UWP的技术,但是全身心的投入到UWP的怀抱,暂时还不是个好时机.对于微软其他的技术,我觉得还是很不错的,最近本人的前同事及好友有很多都放弃.NET去做其他语言开发了,感觉进入到了全民抵制微软技术的时代,也许这就是微软所谓的转型带来的阵痛吧,不过本人目前

APUE学习笔记-记录二

这次回顾APUE中第三四章的内容,主要是文件I/O操作相关的接口函数.    UNIX系统的文件I/O是不带缓冲的I/O,不带缓冲是指每个read和write都调用系统内核的一个系统调用. 1.文件描述符 UNIX I/O的所有函数都是基于文件描述符来操作的.那什么是文件描述符呢?文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.该文件描述符fd是所有UNIX I/O函数的操作对象.UNIX系统把文件描述符0与进程标准输入关联,把文件描述符1与进程标准

关于oracle 11g 安装笔记记录

安装ORACLE 11G 64位报错 报错信息: 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2012-07-25_03-10-02PM. 请稍候...[[email protected] database]$ ## An unexpected error has been detected by HotSpot Virtual Machine:# # SIGSEGV (0xb) at pc=0x00000034c9c14d70, pi

sed、grep、awk -- 三剑客笔记记录

sed常用操作笔记   1.删除文件最后一行: sed -i '$d' filename 2.递归替换内容:sed -i 's/内容A/内容B/g' filename sed -i "s/S_IP.*/S_IP=${slave_ip}/g" config.sh 3.提取文件特定行的内容: sed -n 20,40p filename 4.   awk常用操作笔记 1.提取第5列子符: cat filename | awk '{print $5}' 2. grep常用操作笔记 1.排除空

react笔记记录

React全家桶:1.react库主题:2.webpack 自动化的一个构架工具(grunt gulp);3.flex 布局用的:4.redux view层用,把特别复杂的html页面分成一部分一部分的:5.babel:编译器: jsx语法: 不能直接用,要编译:它就相当于js编译器,把普通的js转成支持es6的语法规则:1.增强版的js语法, babel:编译器: 注意:有且只有一个一个父元素:(顶元素) 第一个react: ReactDOM.render();render有2个参数,一个参数

cxf笔记记录

一.Web Service框架介绍: 1. WebService框架的作用: -- WebService只是一种思想,不是一个具体的框架. -- 它也是javaEE的规范. -- 它可以跨平台(操作平台.应用平台).跨语言的应用之间的远程调用. 2. WebService框架的应用场景: -- 不同公司业务整合 不同公司业务整合,主要就是业务平台的整合, 有可能出现运行平台不一样,开发语言不一样. -- 同一个公司新.旧系统的整合. 3. WebService与SOA: SOA:Service