- 浏览: 578818 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (332)
- PHP (92)
- JS/Css (38)
- Mysql (12)
- apache (7)
- magento (22)
- 杂淡 (1)
- snoopy (2)
- 安全 (1)
- YII (33)
- 网络编程 (3)
- HTML (4)
- editplus (1)
- phpcms (1)
- 软件 (1)
- kindeditor (2)
- android (35)
- java (1)
- Zend (21)
- Git (4)
- smarty (1)
- shell (0)
- svn (7)
- linux (1)
- 支付宝 (1)
- jquery (5)
- 微信 (3)
- thinkPHP (9)
- sqlyog (1)
- TCP/IP学习 (1)
- 服务器 (1)
- phpExcel (2)
- sql server (1)
- 我的工作 (0)
- 销售 (1)
- HTML5 (1)
- 接口开发 (0)
- memcache (2)
- jquery-weui (1)
- laravel (4)
最新评论
-
天使建站:
http://www.aijquery.cn/Html/bia ...
jquery searchableselect用法 -
天使建站:
http://www.aijquery.cn/Html/bia ...
jquery searchableselect用法 -
hudeyong926:
这技术太老了
PHP生成桌面快捷方式 -
hnlixf:
参考 http://www.jb51.net/article/ ...
ThinkPHP 3.3.2使用PHPExcel实现Excel数据导入导出完整实例 -
hudeyong926:
magento,清空购物车中所有的产品和session
Magento 常用技巧与方法
- 博客分类:
- PHP
资料来自网络,大部分没有经过验证,仅供参考: 1.属性Attribute 产品属性操作: $product = Mage::getModel('catalog/product')->getCollection()->getFirstItem(); foreach($product->getAttributes() as $att) { $group_id = $att->getData('attribute_group_id'); $group = Mage::getModel('eav/entity_attribute_group')->load($group_id); var_dump($group); } $attrSetName = 'my_custom_attribute'; $attributeSetId = Mage::getModel('eav/entity_attribute_set') ->load($attrSetName, 'attribute_set_name') ->getAttributeSetId(); 1.1 得到Product的属性id,即catalog_product_entity表的entity_type_id字段 $productAttributeSets = $this->getProductAttributeSets(); 1.2 前台页面获取商品属性 $_product->getResource()->getAttribute('cost')->getFrontend()->getValue($_product); Magento的产品属性,在catalog.xml中已经写进去了。你可以在product view中找到 <block type="catalog/product_view_attributes" name="product.attributes" as="additional" template="catalog/product/view/attributes.phtml"> <action method="addToParentGroup"><group>detailed_info</group></action> </block> 现在只要在产品详细页(view.phtml)中想要的位置插入 <?php echo $this->getChildHtml('additional') ?> 1.3获取产品属性集 $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') ->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId()) ->load() ->toOptionHash(); 1.4 加载某个attribute: $attributeCode=Mage::getModel('catalog/resource_eav_attribute') ->load($attrbuteId) ->getData("attribute_code"); 1.5 获取所有的产品属性的attribute: $attributes = Mage::getResourceModel ( 'catalog/product_attribute_collection' ) ->addFieldToFilter ( "frontend_input", "select" ) ->load (); 1.6 获取某个product的所有attribute: 注:如果是在 collection 中获取自定义的attribute,必须加 addAttributeToSelect(), 如下: $product=Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect("dropdownlistone") 1.7 获取某个种类的所有attribute: $entityTypeId = Mage::getSingleton('eav/config') ->getEntityType('catalog_product') ->getEntityTypeId(); $items = Mage::getResourceSingleton('catalog/product_attribute_collection') ->setEntityTypeFilter($entityTypeId) ->getItems(); 1.8 获取某个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(); 1.9 获取某个attribute的所有多语言label: $attributeLabelsArray= Mage::getResourceModel('eav/entity_attribute') ->getStoreLabelsByAttributeId($attrbuteId); 1.10 获取某个attribute_set的所有attribute: $attributes = Mage::getResourceModel('catalog/product_attribute_collection') ->setAttributeSetFilter($attribute_set_id) ->load(); $attributeSetCollection = Mage::getResourceModel('eav/entity_attribute_set_collection') ->load(); 1.11 获取attribute 对象 by attribute code $muarqspFrom = Mage::getSingleton('eav/config')->getAttribute('catalog_product', ' muarqsp_from'); $attrCollection = Mage::getResourceModel('eav/entity_attribute_collection') ->setCodeFilter($attributeCode) ->load() 1.12 通过attributeName得到 attributeSetId Mage::getResourceModel('eav/entity_attribute_set_collection') ->addFieldToFilter('attribute_set_name',$attributSetName) ->getFirstItem()->getId(); 1.13 通过 attributeSetId得到attributeSetName Mage::getModel('eav/entity_attribute_set') ->load($id)->getData("attribute_set_name"); 2. 产品相关操作 2.1 产品缩略图 $_thumb = Mage::helper('catalog/image')->init($product, 'thumbnail')->resize(50, 50)->setWatermarkSize('30x10'); 2.2 product collection $collection = Mage::getResourceModel('catalog/product_collection') ->addStoreFilter() ->addAttributeToSelect("*") ->addAttributeToFilter('entity_id', array('in' => $products)) ->setPageSize(10) ->setCurPage(1); 2.3 删除一个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;"><< 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>'); } } } 3. website 获取对象的方法:get_class_methods($object) 返回对象的类名:get_class($object) 3.1得到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() 3.2 得到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); } 获取后台的配置 Mage::getStoreConfig("clientnumber/total_config/service_ip",0); //get admin config 3.3 generate skin url Mage::getDesign()->getSkinUrl('images/our_shops/shop_logo_default.jpg'); 3.4 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(); 3.5 获取这个网站所代表的国家的代号(如:FR) Mage::getModel('directory/country') ->load(Mage::getStoreConfig('general/country/default'))->getIso2Code(), 3.6 获取登录的用户信息 Mage::getSingleton('customer/session')->getCustomer() 3.7 session,cookie 1) 获取session $session = Mage::getSingleton('customer/session'); 2) session,cookie设置 (1) Model: Mage::getModel(‘core/cookie’); Mage::getModel(‘core/session’); (2)Set Method: Mage::getSingleton(‘core/cookie’)->set(‘name’,'value’); Mage::getSingleton(‘core/session’)->set(‘name’,'value’); (3)Get method: Mage::getSingleton(‘core/cookie’)->get(‘name’); Mage::getSingleton(‘core/session’)->get(‘name’); 3.8 Request对象 Mage::app()->getRequest() 3.9 调用Model对象 Mage::getModel('infinity/model'); 3.10 输出配置文件 //header(‘Content-Type: text/xml’); header(‘Content-Type: text/plain’); echo $config = Mage::getConfig() ->loadModulesConfiguration(‘system.xml’) ->getNode() ->asXML(); exit; 3.11 得到Magento分类的URL Mage::getModel('catalog/category')->load(17)->getUrl(); 3.12 build your URL with valid keys Mage::helper("adminhtml")->getUrl("mymodule/adminhtml_mycontroller/myaction/",array("param1"=>1,"param2"=>2)); 3.13 create key values Mage::getSingleton('adminhtml/url')->getSecretKey("adminhtml_mycontroller","myaction"); 3.14 disable security feature in the admin panel 在管理面板中禁用安全功能 admin panel -> System -> Configuration -> Admin section: “Add Secret key to Urls”. 3.15 后台模块跳转: Mage::app()->getResponse()->setRedirect(Mage::helper('adminhtml')->getUrl("adminhtml/promo_quote/index")); 3.16 get a drop down lists options for a mulit-select attribute 多属性选择下拉列表 $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'attribute_id'); foreach ( $attribute->getSource()->getAllOptions(true, true) as $option) { $attributeArray[$option['value']] = $option['label']; } 3.17 获取栏目图片 public function getImageUrl($category) { return Mage::getModel('catalog/category')->load($category->getId())->getImageUrl(); } public function getThumbnailUrl($category) { $image=Mage::getModel('catalog/category')->load($category->getId())->getThumbnail(); if ($image) { $url = Mage::getBaseUrl('media').'catalog/category/'.$image; } return $url; } 3.18 判断是否首页:$this->getIsHomePage() Mage::getSingleton('cms/page')->getIdentifier() == 'home' && Mage::app()->getFrontController()->getRequest()->getRouteName() == 'cms' ) 3.19 主题颜色 $attributes = $_product->getAttributes(); $themeColor = $attributes['theme_color']->getFrontend()->getValue($_product); 3.20 获取configurable产品simple product if($_product->getTypeId() == "configurable"): $ids = $_product->getTypeInstance()->getUsedProductIds(); foreach ($ids as $id) : $simpleproduct = Mage::getModel('catalog/product')->load($id); $simpleproduct->getName()." - ".(int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($simpleproduct)->getQty(); $childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product); endforeach; endif; 3.21 get the attributes of Configurable Product. $attributes = $product->getTypeInstance(true)->getConfigurableAttributes($product); 3.22 当前路径 $currentUrl = $this->helper('core/url')->getCurrentUrl(); 3.23 通过资源配置方式创建目录 $installer = $this; $installer->startSetup(); // make directory for font cache try { $domPdfFontCacheDir = join(DS, array('lib', 'Symmetrics', 'dompdf', 'fonts')); $domPdfFontCacheDir = Mage::getBaseDir('var') . DS . $domPdfFontCacheDir; if (!file_exists($domPdfFontCacheDir)) { mkdir($domPdfFontCacheDir, 0777, true); } } catch(Exception $e) { throw new Exception( 'Directory ' . $domPdfFontCacheDir . ' is not writable or couldn\'t be ' . 'created. Please do it manually.' . $e->getMessage() ); } $installer->endSetup(); 3.24 在controllers 实现跳转 Mage::app()->getFrontController() ->getResponse() ->setRedirect('http://your-url.com'); ××××× $cms_id = Mage::getSingleton('cms/page')->getIdentifier(); $cms_title = Mage::getSingleton('cms/page')->getTitle(); $cms_content = Mage::getSingleton('cms/page')->getContent(); 3.25 获取当前站点货币符号 $storeId = (int) $this->getRequest()->getParam('store', 0); $store=Mage::app()->getStore($storeId); $currencyCode=$store->getBaseCurrency()->getCode(); $attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId); $attributeData = $attribute->getData(); $frontEndLabel = $attributeData['frontend_label']; $attributeOptions = $attribute->getSource()->getAllOptions(); 3.26 设置meta信息 $template = Mage::getConfig()->getNode('global/page/layouts/'.Mage::getStoreConfig("featuredproducts/general/layout").'/template'); this->loadLayout(); $this->getLayout()->getBlock('root')->setTemplate($template); $this->getLayout()->getBlock('head')->setTitle($this->__(Mage::getStoreConfig("featuredproducts/general/meta_title"))); $this->getLayout()->getBlock('head')->setDescription($this->__(Mage::getStoreConfig("featuredproducts/general/meta_description"))); $this->getLayout()->getBlock('head')->setKeywords($this->__(Mage::getStoreConfig("featuredproducts/general/meta_keywords"))); $this->renderLayout(); 4. magento中调用static block(静态块)的几种方法 通常情况下,在magento程序中使用静态块用来创建广告、促销图片及静态的内容等等 以下以在magento中利用静态块来创建首页两侧的广告 在后台创建一个ad1静态块 (1)如果要在.phtml文件中直接调用这个静态块,那可以采用以下方法 <?php $block = Mage::getModel(‘cms/block’) ->setStoreId(Mage::app()->getStore()->getId()) ->load(‘ad1′); $content = $block->getContent(); // Block的原始内容已经获得 $processor = Mage::getModel(‘core/email_template_filter’); echo $html = $processor->filter($content); ?> Mage::getModel(‘core/email_template_filter’)->filter()是必须的,因为Static Block里可能包含Magento的模板语言(如:{{store url=”"}}),fiter将翻译成实际的值 Magento中调用静态Block主要有两个地方。 是否感觉这代码太长了呢,那你还可以这么写 <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('order_form')->toHtml() ?> (2)在CMS页面的Content中调用这个静态块呢?你可以采用以下方法 {{block type=”cms/block” name=”cms_ad1_block” block_id=”ad1″ }} (3)在layout中调用静态块 <reference name=”footer”> <block type=”cms/block” name=”ad1″ before=”-”> <action method=”setBlockId”><block_id>ad1</block_id></action> </block> </reference> 5. 时间 5.1 获取当前的时间 1) $date = Mage::app()->getLocale()->date(Mage::getSingleton('core/date')->gmtTimestamp(), null, null); $date = $date->toString('yyyy-MM-dd hh:m:s'); 2) Mage::getModel('core/date')->date(); date("Y-m-d", Mage::getModel('core/date')->timestamp(time())); Magento中默认时区为GMT, 不能直接使用time(), date()等方法,否则会出现时间差。 用下面的方法取当前时间(和后台设置的时区一致): date("Y-m-d", Mage::getModel('core/date')->timestamp(time())); 获得UTC时间的方法 $date = Mage::app()->getLocale()->utcDate($store, $value, true, Varien_Date::DATETIME_INTERNAL_FORMAT); $this->setData(‘date_start’, $date->toString(Varien_Date::DATETIME_INTERNAL_FORMAT)); $date = Mage::app()->getLocale()->date(); $dStr = $date->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); //$dStr 可以用于存储到数据库的datetime字段. 5.2 格式化时间 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; } 5.3 加减日期 Mage::app()->getLocale()->date()->sub("3",Zend_Date::DAY)->toString('YYYY-MM-dd HH:mm:ss'); 5.4 日期过滤 $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); 5.5 判断日期是否有效 Mage::app()->getLocale()->isStoreDateInInterval(Mage::app()->getStore(), $special_from_date, $special_to_date) 6. collection 6.1 在Configuation中添加validate <validate>validate-number</validate> 6.2 获取当前的controller $moduleName=Mage::app()->getRequest()->getModuleName(); $controllerName=Mage::app()->getRequest()->getControllerName(); $actionName=Mage::app()->getRequest()->getActionName(); $fullActionName=$moduleName."_".$controllerName."_".$actionName; 6.3 controller 中 添加block $this->getLayout() ->createBlock('clientnumber/inputform', 'checkout.cart.inputclientnumber') ->setTemplate('clientnumber/input.phtml') ->toHtml() 6.5添加breadcrumbs在 controller中(为前端页面添加面包屑,如 Category/product这里的导航 ): 在controller文件中填充面包屑数据,在block的phtml文件中显示 1). 在controller的Action方法中 //判断是否存在名字为breadcrumbs的Block(默认都存在,后面有说明) if ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) { // 该条目有目标链接地址 $breadcrumbsBlock->addCrumb('category', array( 'label' => 'Category', 'title' => 'Category Title', 'link' => 'http://www.google.com', 'readonly' => true, )); // 该条目没有链接地址,一般作为最后一个条目 $breadcrumbsBlock->addCrumb('product', array('label' => Mage::helper('catalog')->__('Product'))); } 2). 在该action对应的Layout文件中添加Block Xml代码: <block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/> 相应的在你的Block的合适位置输出面包屑 <?php echo $this->getChildHtml('breadcrumbs'); ?> 以上描述的是面包屑的一般原理,Magento实际上已经默认声明了Block Xml代码: <block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/> 而且默认的几个layout模板文件(page/1column.phtml,page/2columns-left.phtml..等)已经做了 <?php echo $this->getChildHtml('breadcrumbs'); ?> 6.6 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'))); 6.7 在controllers 实现跳转 Mage::app()->getFrontController() ->getResponse() ->setRedirect('http://your-url.com'); 7. 获取quote中的所有的item $quote=Mage::getSingleton('checkout/session')->getQuote(); foreach ($quote->getAllItems() as $item) { $proId[]=$item->getProduct()->getId(); } 8. 发送邮件 $mailTransport = new Zend_Mail_Transport_Smtp( '192.168.0.1' ); $mail = new Zend_Mail(); $mail->setBodyText($content); $mail->setFrom("hello@example.com", 'Webmaster'); $mail->addTo("bysoftgz@gmail.com", ''); $mail->setSubject('Import attribute logs'); $mail->send($mailTransport); 9. block 9.1 用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(); } 9.2 利用静态block <?php echo $this->getLayout()->createBlock('clientnumber/widget_name') ->setObject($this->getAddress()) ->toHtml() ?> 9.3 调用static block 1) 如果要在.phtml文件中直接调用这个静态块,那可以采用以下方法 <?php $block = Mage::getModel('cms/block') ->setStoreId(Mage::app()->getStore()->getId()) ->load('order_form'); $content = $block->getContent(); // Block的原始内容已经获得 $processor = Mage::getModel('core/email_template_filter'); echo $html = $processor->filter($content); ?> Mage::getModel(‘core/email_template_filter’)->filter()是必须的, 因为Static Block里可能包含Magento的模板语言(如:{{store url=”"}}),fiter将翻译成实际的值 Magento中调用静态Block主要有两个地方。 是否感觉这代码太长了呢,那你还可以这么写 <?php echo $this->getLayout()->createBlock(‘cms/block’)->setBlockId(‘order_form’)->toHtml() ?> 2) magento中的CMS功能,可以让我们很方便的在PHP中嵌入经常要更改的内容,这样我们可以通过在CMS中直接修改文章内容, 而不需要去修改源代码,最经典的就是我们的首页就是写在CMS Static block中的。 如何在CMS页面的Content中调用这个静态块呢?你可以采用以下方法 {{block type=”cms/block” name=”cms_test_block” block_id=”order_form” }} 将里面order_form改成你的静态块对应的block_id则可 3) 怎么样在layout中调用静态块呢? <reference name=”footer”> <block type=”cms/block” name=”order_form” before=”-”> <action method=”setBlockId”><block_id>order_form</block_id></action> </block> </reference> magento中调用CMS静态块(Static Block)教程到此就结束了,你应该能够灵活的运用magento中的静态块了吧! 10. 获取指定level目录 $parent = Mage::app()->getStore()->getRootCategoryId(); $categoryModel = Mage::getModel('catalog/category'); $storeCategories = $categoryModel->getCategories($parent, 2); //获取level 2 11. 数据库 11.1 修改数据库结构 $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 "); 11.2 magento操作数据库 eg.1 $this->getSelect() ->from(array('e' => $this->getEntity()->getFlatTableName()), null) ->columns(array('status' => new Zend_Db_Expr(Mage_Catalog_Model_Product_Status::STATUS_ENABLED))); $this->addAttributeToSelect(array('entity_id', 'type_id', 'attribute_set_id')); if ($this->getFlatHelper()->isAddChildData()) { $this->getSelect() ->where('e.is_child=?', 0); $this->addAttributeToSelect(array('child_id', 'is_child')); } $select=$this->getSelect()->from(array('e'=>$this->getEntity()->getEntityTable())); $select->joinRight( array('t'=>'test_product'), 'e.entity_id = t.entity_id', array() ); eg.2 $resource = Mage::getSingleton('core/resource'); $read= $resource->getConnection('read'); $tempTable = $resource->getTableName('eav_attribute'); //用其他表也是可以的 $wheres = "`entity_type_id` =4 "; //SELECT count(*) as num FROM `eav_attribute` WHERE (`entity_type_id` =4 ) //$select = $read->select() ->from($tempTable, array('count(*) as num')) ->where($wheres); //SELECT `eav_attribute`.* FROM `eav_attribute` WHERE (`entity_type_id` =4 ) //$select = $read->select() ->from($tempTable) ->where($wheres); //SELECT `eav_attribute`.`attribute_code` FROM `eav_attribute` WHERE (`entity_type_id` =4 ) $select = $read->select() ->from($tempTable, array('attribute_code')) ->where($wheres); $result = $read->fetchAll($select); eg.3 $resource = Mage::getSingleton('core/resource'); $read= $resource->getConnection('read'); $select = "select * from catalog_product_entity where entity_id =5"; $result = $read->fetchAll($select); //$result = $read->fetchOne($select); $instructors = array(); foreach($result as $item){ $instructors[$item['entity_id']] = array('position' => $item['sku']); } $dbw = Mage::getSingleton('core/resource')->getConnection('write'); $sql="update catalog_product_entity set sku='sku11' where entity_id=5"; $dbw->query( $sql ); magento--调用数据库的步骤--使用magento机制访问数据库 在后台附加一个属性,譬如品牌.然后,在产品详细页面,把同个品牌的产品都调用出来!下面是程序代码 public function getOtherProduct(){ $_producty = $this->getProduct(); $_biaoshi = $_producty['biaoshi']; $resource = Mage::getSingleton('core/resource'); $read = $resource->getConnection('catalog_read'); $categoryProductTable = $resource->getTableName('catalog/category_product'); //$productEntityIntTable = $resource->getTableName('catalog/product_entity_int'); // doesn't work $productEntityIntTable = (string)Mage::getConfig()->getTablePrefix().'catalog_product_entity_int'; $eavAttributeTable = $resource->getTableName('eav/attribute'); $product_attribute_valueTable = (string)Mage::getConfig()->getTablePrefix().'catalog_product_entity_varchar'; //return $product_attribute_valueTable; // var_dump($productEntityIntTable); exit; // Query database for featured product $select = $read->select() ->from(array('cp'=>$categoryProductTable)) // ->join(array('pei'=>$productEntityIntTable),'pei.entity_id=cp.product_id', array()) ->join(array('pss'=>$product_attribute_valueTable),'pss.entity_id=cp.product_id',array()) ->joinNatural(array('ea'=>$eavAttributeTable)) // ->joinNatural(array('pss'=>$product_attribute_valueTable)) // ->where('cp.category_id=?', $categoryId) ->where('pss.value=?',$_biaoshi) // ->where('ea.a') ->where('ea.attribute_code="biaoshi"'); $rows = $read->fetchAll($select); $ids = array(); foreach($rows AS $row) { $ids[] = $row['product_id']; } $ret = implode(',', $ids); $ids = array_unique($ids); // return $ids; $productList = array(); foreach($ids as $idq){ $product = Mage::getModel('catalog/product')->load($idq); $productList[] = $product; } // $product = Mage::getModel('catalog/product')->load($this->getProductId()); // $collection = Mage::getModel('catalog/product')->getCollection(); // $collection->getSelect()->where('e.entity_id in (?)', $ids); // $collection->addAttributeToSelect('*'); // $productList = $collection->load(); return $productList; // return $ids; } 如果你想成为一个magento二次开发程序员,上面的代码,你会感兴趣 12. 打印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(); 13. test code for quote $quote=Mage::getSingleton('checkout/session')->getQuote(); foreach ($quote->getAllVisibleItems() as $item) { echo $item->getProductId(); }
发表评论
-
PHP flock文件锁定详细说明
2020-02-04 12:44 0参考资料 https://blog.csdn.net ... -
composer install,require,install归纳总结
2019-11-25 11:22 571require中引用的包,在线上线下的项目中都会使用,re ... -
电商系列---mysql高并发超库存卖问题
2018-01-22 16:04 1393参考http://blog.csdn.net/wula ... -
如何判断微信内置浏览器 MicroMessenger
2018-01-13 19:02 1675function is_weixin(){ v ... -
PHP中截取UTF-8中文字符串
2017-12-08 11:08 480/** * * @todo 截取中文字符串不 ... -
php使用file_get_contents()时出现错误Unable to find the wrapper “https” – did
2017-02-27 15:36 1571file_get_contents()获取https ... -
PHP中imagecopyresampled参数详解
2016-12-16 17:53 463bool imagecopyresampled ( reso ... -
获取当前页面完整URL地址
2016-12-08 15:43 670function get_url() { ... -
PHP安装Zend Guard Loader
2016-10-10 13:37 1235很简单,二步搞定。 1,下载 zend guard lo ... -
PHP生成桌面快捷方式
2016-09-08 10:24 5951, <a href="shortcut. ... -
php读取并保存base64编码的图片
2016-06-08 16:05 1796<?php header('Content-type ... -
PHP概率算法实例
2016-05-17 14:55 545<?php class Choujian ... -
php curl 伪造IP来源referer来源的实例代码
2016-05-17 11:29 1431curl发出请求的文件fake_ip.php ... -
php之curl实现http与https请求的方法
2016-05-17 11:15 1217常规curl请求: $url = 'http://www. ... -
PHP文件file缓存实现方式
2016-05-16 14:52 421<?php $cachFile = './index ... -
PHP并发访问实例代码
2016-05-16 11:47 383<?php $start=$_GET['s ... -
curl_init()和curl_multi_init()多线程的速度比较
2016-05-16 11:43 800php中curl_init()的作用很 ... -
PHP中使用cURL实现Get和Post请求的方法
2016-05-16 11:36 3201.cURL介绍 cURL 是一个利用URL语法规定 ... -
php apache 使用cors实现跨域
2016-05-04 10:23 3793apaceh 配置: <VirtualHost * ... -
php,phpQuery轻松采集网页内容
2016-04-22 18:01 691phpQuery是一个基于PHP的服务端开源项目,它可以让PH ...
相关推荐
magento 常用的方法 与 总结, 对于起步学习magento 的非常有帮助
NULL 博文链接:https://hudeyong926.iteye.com/blog/1416591
magento常用插件,安装magento必备哦!
magento SQL常用命令,数据库操作
magento的SMTP插件magento的SMTP插件magento的SMTP插件
magento数据结构分析 magento数据字典
主要包括的内容有:magento的常用设置、Magento模板制作教程、Magento商城_目录结构说明、Magento中文教程实用文档、常用的xml的文件的作用以及自定义模块的应用
magento的常用设置实用.pdf
magik shoes magento 模板, magento 1.7 模板
magento1.9 邮件发送失败解决方法,附带视频教程和图片,文字和修改好的文件,只测试过1.9版本. 其他版本没遇到这个问题
magento csv多图批量导入 解决方法
magento 功能与结构的介绍 英文版
深入理解Magento 由精东博客下载下来制作成pdf
Magento插件开发手册 Magento Extension Developers Guide
Athlete Magento主题,兼容Magento 1.9.x, 1.8.x, 1.7.x ,特点:完全自适应(响应式布局),自定义子主题,无限颜色,完全自定义,一键安装演示,小工具化横幅系统,颜色选择,MEGA菜单,多商店支持,自定义产品...
Magento Magento商城 Magento目录结构