magento的一些小技巧(转)

1.加载某个attribute:

$attributeCode=Mage::getModel(‘catalog/resource_eav_attribute‘)
                        ->load($attrbuteId)
                        ->getData("attribute_code");

2.获取某个attribute的所有option:

$attributeObject=Mage::getModel(‘eav/config‘)->getAttribute(‘catalog_product‘)->load($attributeId);
        $options = $attributeObject->setStoreId(Mage::app()->getStore()->getId())->getSource()->getAllOptions(false);
$table       = $attributeObject->getBackend()->getTable();

public function getAttributeOptionsByAttributeCode($entityType, $attributeCode){
    
    $entityType = Mage::getSingleton(‘eav/config‘)->getEntityType($entityType);
         $attributeObject = Mage::getModel(‘customer/attribute‘)->loadByCode($entityType, $attributeCode);
         return $attributeObject->setStoreId(Mage::app()->getStore()->getId())->getSource()->getAllOptions(false);
    
    }

或者:

$optionCollection = Mage::getResourceModel(‘eav/entity_attribute_option_collection‘)
                ->setAttributeFilter($attr_model->getId())
                ->setStoreFilter($storeId, false)
                ->load();

3.获取某个attribute的所有多语言label:

$attributeLabelsArray= Mage::getResourceModel(‘eav/entity_attribute‘)
                        ->getStoreLabelsByAttributeId($attrbuteId);

4.获取所有的产品属性的attribute:

$attributes = Mage::getResourceModel ( ‘catalog/product_attribute_collection‘ )
             ->addFieldToFilter ( "frontend_input", "select" )
             ->load ();

5.获取某个product的所有attribute:

注:如果是在collection中获取自定义的attribute,必须加addAttributeToSelect(), 如下:

product=Mage::getModel(‘catalog/product‘)->getCollection()->addAttributeToSelect("dropdownlistone");

6.利用静态block
<?php echo $this->getLayout()->createBlock(‘clientnumber/widget_name‘)
                    ->setObject($this->getAddress())
                    ->toHtml() ?>

7.获取某个种类的所有attribute:
$entityTypeId = Mage::getSingleton(‘eav/config‘)
                ->getEntityType(‘catalog_product‘)
                ->getEntityTypeId();
            $items = Mage::getResourceSingleton(‘catalog/product_attribute_collection‘)
                ->setEntityTypeFilter($entityTypeId)
                ->getItems();

8.获取某个attribute_set的所有attribute:

$attributes = Mage::getResourceModel(‘catalog/product_attribute_collection‘)
   ->setAttributeSetFilter($attribute_set_id)
   ->load();

$attributeSetCollection = Mage::getResourceModel(‘eav/entity_attribute_set_collection‘)
            ->load();

9.获取attribute 对象 by attribute code

$muarqspFrom = Mage::getSingleton(‘eav/config‘)->getAttribute(‘catalog_product‘, ‘
muarqsp_from‘);

$attrCollection = Mage::getResourceModel(‘eav/entity_attribute_collection‘)
               ->setCodeFilter($attributeCode)
               ->load();
  
10。get store id

$store_id=Mage::getModel(‘core/store‘)
    ->getCollection()
    ->addFieldToFilter ( "code", "france_fr" )
    ->getFirstItem()->getData(‘store_id‘);
 
or
Mage::getModel(‘core/store‘)->load(‘france_fr‘)->getId();

11.product collection

$collection = Mage::getResourceModel(‘catalog/product_collection‘)
            ->addStoreFilter()
            ->addAttributeToSelect("*")
            ->addAttributeToFilter(‘entity_id‘, array(‘in‘ => $products))
            ->setPageSize(10)
            ->setCurPage(1);

12.数据库操作

$dbr = Mage::getSingleton ( ‘core/resource‘ )->getConnection ( ‘core_read‘ );
$sql = "select instructor_id,position from product_instructor_link where product_id = $productId";
$result = $dbr->fetchAll($sql);
//$result = $dbr->fetchOne($sql);
$instructors = array();
foreach($result as $item){
$instructors[$item[‘instructor_id‘]] = array(‘position‘ => $item[‘position‘]);
}

$dbw = Mage::getSingleton(‘core/resource‘)->getConnection(‘core_write‘);

$sql="update catalog_product_entity_datetime set value=NULL where attribute_id=$special_from_date_attribute_id and store_id=$storeId and entity_id=$productId";
                  $dbw->query( $sql );

13. 获取quote中的所有的item

$quote=Mage::getSingleton(‘checkout/session‘)->getQuote();
        foreach ($quote->getAllItems() as $item) {
            $proId[]=$item->getProduct()->getId();
        }

14. 获取这个网站所代表的国家的代号(如:FR)

Mage::getModel(‘directory/country‘)
              ->load(Mage::getStoreConfig(‘general/country/default‘))->getIso2Code(),

15. 获取后台的配置

Mage::getStoreConfig("clientnumber/total_config/service_ip",0); //get admin config

16. 获取当前的时间

$date = Mage::app()->getLocale()->date(Mage::getSingleton(‘core/date‘)->gmtTimestamp(), null, null);
$date = $date->toString(‘yyyy-MM-dd hh:m:s‘);

17. generate skin url

Mage::getDesign()->getSkinUrl(‘images/our_shops/shop_logo_default.jpg‘);

18. generate select html

$html = $this->getLayout()->createBlock(‘core/html_select‘)
            ->setName($name)
            ->setId($id)
            ->setTitle(Mage::helper(‘directory‘)->__($title))
            ->setClass(‘validate-select‘)
            ->setValue($defValue)
            ->setOptions($options)
            ->getHtml();

19. 删除一个product的所有的images

//Get products gallery attribute
        $attributes = $product->getTypeInstance()->getSetAttributes();

if (isset($attributes[‘media_gallery‘])) {
            $gallery = $attributes[‘media_gallery‘];
            //Get the images
            $galleryData = $product->getMediaGallery();

foreach($galleryData[‘images‘] as $image){
                //If image exists
                if ($gallery->getBackend()->getImage($product, $image[‘file‘])) {
                    $gallery->getBackend()->removeImage($product, $image[‘file‘]);
                    $filename = Mage::getBaseDir(‘media‘) . DS . ‘catalog‘. DS .‘product‘ . $image[‘file‘];
                    debug(‘<span style="color: green;">&lt;&lt; unlinked previous image ‘.$image[‘file‘].‘ from product ‘.$product->getSku().‘</span>‘);
                    if (file_exists($filename) && is_file($filename) && is_writeable($filename)){
                        @unlink($filename);
                        debug(‘<span style="color: green;">(and deleted file ‘.$filename.‘)</span>‘);
                    }else
                        debug(‘<span style="color: red;">(but couldn\‘t delete file ‘.$filename.‘)</span>‘);
                }
            }

}

20. 获取指定level目录

$parent = Mage::app()->getStore()->getRootCategoryId();
        $categoryModel = Mage::getModel(‘catalog/category‘);
        $storeCategories = $categoryModel->getCategories($parent, 2); //获取level 2

21. 发送邮件

$mailTransport = new Zend_Mail_Transport_Smtp(    ‘192.168.0.1‘   );
 $mail = new Zend_Mail();
            $mail->setBodyText($content);
            $mail->setFrom("[email protected]", ‘Webmaster‘);
            $mail->addTo("[email protected]", ‘‘);
            $mail->setSubject(‘Import attribute logs‘);
            $mail->send($mailTransport);

22.get website config
        
//$website can be string or id
        $import_type = Mage::getModel(‘core/website‘)->load($website)->getConfig(‘maps/stock_import/stock_limit‘);
        if( $import_type===false ){
   //get admin config
        $import_type=Mage::getStoreConfig(‘maps/stock_import/import_type‘,0);
        }

23. 用block创建一个template

<?php echo Mage::getBlockSingleton(‘inseecode/form‘)->getInseeFormHtml($this->getAddress(), ‘customer‘);?>

public function getInseeFormHtml($address, $type) {
$this->setTemplate(‘inseecode/form.phtml‘);
return $this->toHtml();
}

24.

获取对象的方法:get_class_methods($object)
返回对象的类名:get_class($object)

25. controller 中 添加block

$this->getLayout()
                ->createBlock(‘clientnumber/inputform‘, ‘checkout.cart.inputclientnumber‘)
                ->setTemplate(‘clientnumber/input.phtml‘)
                ->toHtml()

26. 在Configuation中添加validate

<validate>validate-number</validate>

27. 获取当前的controller

$moduleName=Mage::app()->getRequest()->getModuleName();
    $controllerName=Mage::app()->getRequest()->getControllerName();
    $actionName=Mage::app()->getRequest()->getActionName();
    
        $fullActionName=$moduleName."_".$controllerName."_".$actionName;

28. can‘t see load.gif in firefox6

so just remove or comment the id  "#loading-mas" about <!-- opacity: 0.8;-->,it will solve it

29. get attributeSetId by attributeName

Mage::getResourceModel(‘eav/entity_attribute_set_collection‘)
            ->addFieldToFilter(‘attribute_set_name‘,$attributSetName)
            ->getFirstItem()->getId();

30. get attributeSetName by attributeSetId

Mage::getModel(‘eav/entity_attribute_set‘)
            ->load($id)->getData("attribute_set_name");
            
31.修改数据库结构

$installer->getConnection()->addColumn(
    $installer->getTable(‘enterprise_giftcardaccount/giftcardaccount‘),
    ‘gift_card_type‘,
    "VARCHAR(200) DEFAULT ‘‘");

$installer->getConnection()->addColumn(
    $installer->getTable(‘enterprise_giftcardaccount/giftcardaccount‘),
    ‘gift_card_type‘,
    "TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT  ‘0‘");

$installer->getConnection()->dropColumn($installer->getTable(‘eav_attribute‘), ‘use_in_super_product‘);
$installer->run("ALTER TABLE `sales_flat_order` CHANGE `is_synced` `is_synced` INT( 4 ) NOT NULL ");

32. 获取登录的用户信息

Mage::getSingleton(‘customer/session‘)->getCustomer()

33. 格式化时间

Mage::app()->getLocale()->date($creditMemo->getCreatedAt())->toString(‘YYYY-MM-dd‘);

或:

$this->_filterDates($data, array(‘date_expires‘));

protected function _filterDates($array, $dateFields)
    {
        if (empty($dateFields)) {
            return $array;
        }
        $filterInput = new Zend_Filter_LocalizedToNormalized(array(
            ‘date_format‘ => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT)
        ));
        $filterInternal = new Zend_Filter_NormalizedToLocalized(array(
            ‘date_format‘ => Varien_Date::DATE_INTERNAL_FORMAT
        ));

foreach ($dateFields as $dateField) {
            if (array_key_exists($dateField, $array) && !empty($dateField)) {
                $array[$dateField] = $filterInput->filter($array[$dateField]);
                $array[$dateField] = $filterInternal->filter($array[$dateField]);
            }
        }
        return $array;
    }

34. 加减日期

Mage::app()->getLocale()->date()->sub("3",Zend_Date::DAY)->toString(‘YYYY-MM-dd HH:mm:ss‘);

35. 打印php调试信息的代码

$array = debug_backtrace();
   //print_r($array);//信息很齐全
    unset($array[0]);
    foreach($array as $row)
    {
        $html .= $row[‘file‘].‘:‘.$row[‘line‘].‘行,调用方法:‘.$row[‘function‘]."<p>";
    }
    echo $html;
    exit();

36.添加面包翘

在 controller中:

$this->loadLayout();
        $breadCrumb = $this->getLayout()->getBlock(‘breadcrumbs‘); //这是
        $breadCrumb->addCrumb(‘home‘, array(
            ‘label‘ => Mage::helper(‘catalog‘)->__(‘Home‘),
            ‘title‘ => Mage::helper(‘catalog‘)->__(‘Go to Home Page‘),
            ‘link‘  => Mage::getBaseUrl(),
        ))->addCrumb(‘youhui‘, array(
            ‘label‘ => Mage::helper(‘catalog‘)->__(‘youhuihuodong‘),
            ‘title‘ => Mage::helper(‘catalog‘)->__(‘youhuihuodong‘),
            ‘link‘  => $category->getId() ? Mage::getUrl(‘*/*‘) : NULL,
        ))
        ;

37. filter in collection

$collection = Mage::getModel(‘sales/order‘)->getCollection()
->addFieldToFilter(‘status‘, array(‘eq‘=>‘pending‘))
->addFieldToFilter(‘created_at‘, array(‘datetime‘ => true, ‘from‘=>"2011-10-10 00:00:00",‘to‘ => Mage::app()->getLocale()->date()->sub("3",Zend_Date::DAY)->toString(‘YYYY-MM-dd HH:mm:ss‘)));

38. 日期过滤

$todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
        $this->_getProductCollection()
            ->addAttributeToFilter(‘news_from_date‘, array(‘or‘=> array(
                0 => array(‘date‘ => true, ‘to‘ => $todayDate),
                1 => array(‘is‘ => new Zend_Db_Expr(‘null‘)))
            ), ‘left‘)
            ->addAttributeToFilter(‘news_to_date‘, array(‘or‘=> array(
                0 => array(‘date‘ => true, ‘from‘ => $todayDate),
                1 => array(‘is‘ => new Zend_Db_Expr(‘null‘)))
            ), ‘left‘)
            ->addAttributeToFilter(
                array(
                    array(‘attribute‘ => ‘news_from_date‘, ‘is‘=>new Zend_Db_Expr(‘not null‘)),
                    array(‘attribute‘ => ‘news_to_date‘, ‘is‘=>new Zend_Db_Expr(‘not null‘))
                )
            )
            ->addAttributeToFilter(‘visibility‘, array(‘in‘ => array(2, 4)))
            ->addAttributeToSort(‘news_from_date‘, ‘desc‘)
            ->setPage(1, 4)
        ;

39. 判断日期是否有效

Mage::app()->getLocale()->isStoreDateInInterval(Mage::app()->getStore(), $special_from_date, $special_to_date)

40.test code for quote

$quote=Mage::getSingleton(‘checkout/session‘)->getQuote();
foreach ($quote->getAllVisibleItems() as $item) {
           echo $item->getProductId();

}

$quote->collectTotals()->save();

40.日期的比较

//get orders 15 days ago
$collection = Mage::getModel(‘sales/order‘)->getCollection()
    ->addFieldToFilter(‘status‘, array(‘eq‘ => ‘pending‘))
    ->addFieldToFilter(‘created_at‘, array(‘datetime‘ => true, ‘from‘ => "2011-10-10 00:00:00", ‘to‘ => Mage::app()->getLocale()
        ->date()
        ->sub("15", Zend_Date::DAY)
        ->toString(‘YYYY-MM-dd HH:mm:ss‘))
    )
;

41. delete confirm js

function confirmSetLocation(message, url){
   if( confirm(message) ) {
       setLocation(url);
   }
   return false;
}

function setLocation(url){
   window.location.href = url;
}

42.在controller中返回blocl html

$this->getResponse()->setBody($this->getLayout()->createBlock(‘invoicebill/account_content‘)
            ->setTemplate("bysoft/invoicebill/account/content.phtml")
            ->toHtml());

43. 获取某个action的url

Mage::getUrl(‘checkout/process/directOver‘, array(‘_secure‘=>true));

44. 添加customer attribute

$installer = $this;
$installer->startSetup();

$setup = new Mage_Eav_Model_Entity_Setup(‘core_setup‘);

$entityTypeId     = $setup->getEntityTypeId(‘customer_address‘);
$attributeSetId   = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

/*
  add customer address attribute "mobile"
 */
$installer->addAttribute(‘customer_address‘, ‘mobile1‘,array(
‘label‘             => ‘Mobile‘,
‘type‘  => ‘varchar‘,
‘input‘             => ‘text‘,
‘used_in_forms‘=> array(‘customer_register_address‘,‘customer_address_edit‘),
‘source‘            => ‘‘,
‘global‘            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
‘visible‘           => true,
‘required‘          => true,
‘user_defined‘      => true,
‘searchable‘        => false,
‘filterable‘        => false,
‘comparable‘        => false,
‘visible_on_front‘  => true,
‘visible_in_advanced_search‘ => false,
‘unique‘            => false
));
$setup->addAttributeToGroup(
 $entityTypeId,
 $attributeSetId,
 $attributeGroupId,
 ‘mobile1‘,
 ‘200‘  //sort_order
);

$installer->endSetup();

45. 获取product某个 option的label

public function getProductOptionLable( $optionid=0 )
    {
        $tableName  = Mage::getSingleton(‘core/resource‘)->getTableName(‘eav_attribute_option_value‘);
$read =Mage::getSingleton(‘core/resource‘)->getConnection(‘core_read‘);
$storeid=Mage::app()->getStore()->getId();
if($optionid)
{
$sql=" select value from $tableName where option_id=$optionid and store_id=$storeid ";
$query=$read->query($sql);
$row = $query->fetch();

//if can‘t get value from default store view, then get data from admin store view
if( trim($row[‘value‘])=="" ){
$sql=" select value from $tableName where option_id=$optionid and store_id=0 ";
$query=$read->query($sql);
$row = $query->fetch();
}
}
else
{
$row=array(‘value‘=>‘‘);
}

return  $row[‘value‘];  
    }

46. 格式化某个日期

Mage::app()->getLocale()->date($_obj->getCreatedAt(), null, null)->toString(‘yyyy.MM.dd‘);

47.magento中只单独保存某个attribute的方法

$order->setData(‘customer_email‘,$address->getData("email"));
        $order->getResource()->saveAttribute($order, ‘customer_email‘);

48.  常用的load

Mage::getModel(‘sales/order‘)->load();
Mage::getModel(‘customer/customer‘)->load();
Mage::getModel(‘catalog/product‘)->load();

时间: 2024-11-06 20:23:42

magento的一些小技巧(转)的相关文章

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

给你一个云端的大脑01:印象笔记小技巧

我在上课时,很多学员们给我的反馈都是:老师你讲的太精彩啦,但我记不住.我最重视的就是学员的反馈,因为我是一个完美主义者,凡事既然做就要做到最好.而学员就像我的一面镜子,反馈是我改进的方向. 很久以前,我听到这样的反馈第一反应就是自己还是讲得不够好,但后来我的讲课都能hold住全场300多人的时候,我发现这个反馈仍然频繁出现,这不是我的问题而是学员们不会学习的问题,这样的学员在工作中也是缺乏自我培养的能力. 所以从今天起,我的平台又加入一个主题:给你一个云端的大脑.告诉你如何记笔记,如何整理大脑记

思科命令配置小技巧三:alias 命令

大家都用过手机上的快捷拨号设置 思科设备是否支持命令的快捷键定义呢 答案是肯定的 suzhouxiaoniu(config)#alias exec xx show ip inter bri  xx是自定义的快捷键名称,可以是数字 suzhouxiaoniu#xx 直接敲定义好的名称Interface                  IP-Address      OK? Method Status                ProtocolFastEthernet1/0          

思科命令配置小技巧四:用ACL控制debug 输出

使用debug命令可以帮助我们TS,但是使用debug命令往往会输出一大堆信息,很多是我们不需要用的,也会造成CPU高负荷,这种情况下我们可以限制debug的输出 可以应用ACL到debug以限定仅输出要求的debug信息. 如仅查看从1.1.1.1到1.1.1.2的ICMP包: Router(config)# access-list 100 permit icmp host 1.1.1.1 host 1.1.1.2 Router# debug ip packet detail 100 思科命令

在Axure中使用FontAwesome替换你的网站图标[axure小技巧]

你是不是还在为你的网站做一个很小的图标而忙碌着?你是不是还在为找一个图标导出百度或者谷歌?你有没有想过可以用字体来做一个图标代替普通的图片图标?这两天给公司做案例,由于自己又对设计不熟悉,寻找图标的苦差可不是很好做.同事分享了一个用字体代替图片做网站图标的资源,在此非常感谢!Font Awesome,原只为Bootstrap而设计的字体图标,不过,现在你可以单独用它来为你的网站工作.丢掉图片图标吧,跟我一起来用Font Awesome. 使用方法: 1. 下载 Font Awesome 官方网站

Fiddler小技巧-测试上传文件接口&多参数并传情况

写了多年的API了,fidder还真是方便至极相对于postman来说. 两种常用方式: 抓包:app通过代理方式,就可以在pc端看到fidder的请求了 因为会监控好多跟我们需要的没关系的HTTP请求, 就要开启过滤了 主动调试API&上传文件参数&其它参数 拷贝点击"upload file"上传之后自动生成的body然后修改: ---------------------------acebdf13572468 Content-Disposition: form-da

移动端样式小技巧

平时在移动端开发拼页面的过程中总会遇到一些问题,主要是各手机webview样式显示效果不一致造成的.以下总结了一些常见坑和一些小技巧,希望对看官有所帮助! 本文只针对两大手机阵营 Android和IOS 中的魅蓝metal 和 iPhone6进行样式对比. 一.line-height line-height经常用于文字居中,当然也有小伙伴会用上下padding去写.but!不管你用padding还是line-height,不同手机显示效果还是-不一样. 一般会这样写 .demo{ height:

Windows Phone开发(8):关于导航的小技巧

前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还是有必要了解一下的. 一.到底该不该设置"后退"操作?因为手机的硬件层就有一个"回退"按钮,按理说我们不需要在程序中再添加什么回退按钮之类的,不过,还是有必要看看如何手动加入回退功能. 1.新建一个WP应用项目.2.除默认的主页外,新建一个页面Page2.xaml.3.在主页上放一个按钮,编写Click事件处理代码,导航到Page

不为人知的python request小技巧

关于 Python requests ,在使用中,总结了一些小技巧把,记录下. 1:保持请求之间的Cookies,我们可以这样做. 2:请求时,会加上headers,一般我们会写成这样 唯一不便的是之后的代码每次都需要这么写,代码显得臃肿,所以我们可以这样: 3:默认requests请求失败后不会重试,但是我们跑case时难免遇到一些网络或外部原因导致case失败,我们可以在Session实例上附加HTTPAdapaters 参数,增加失败重试次数. 这样,之后的请求,若失败,重试3次. 4:重