程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> magento 常用的函數,magento常用函數

magento 常用的函數,magento常用函數

編輯:關於PHP編程

magento 常用的函數,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(); //獲取返回的指定字段值

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved