zoukankan      html  css  js  c++  java
  • magento 常用的函数

    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(); //获取返回的指定字段值

  • 相关阅读:
    单机千万级MQTT连接服务器测试报告
    Esptouch移植xamarin记要
    ubuntu16.04之mongodb自动备份
    Mongodb4.0副本集构建
    golang项目git-subtree完美解决差异包管理
    linux系统优化配置
    IE外挂
    aliyun install Discourse log
    打包前端WebSite到Go程序
    golang channel string 信号乱码
  • 原文地址:https://www.cnblogs.com/zhengyanbin2016/p/5606502.html
Copyright © 2011-2022 走看看