查看完整版本: magento开发 笔记

伶俜 2009-8-11 18:11

magento开发 笔记

上传
[code]                        if(isset($_FILES['visuel']['name']) && $_FILES['visuel']['name'] != '') {
                                try {       
                                        /* Starting upload */       
                                        $uploader = new Varien_File_Uploader('visuel');
                                       
                                        // Any extention would work
                                   $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
                                        $uploader->setAllowRenameFiles(false);
                                       
                                        // Set the file upload mode
                                        // false -> get the file directly in the specified folder
                                        // true -> get the file in the product like folders
                                        //        (file.jpg will go in something like /media/f/i/file.jpg)
                                        $uploader->setFilesDispersion(false);
                                                       
                                        // We set media as the upload dir
                                        $path = Mage::getBaseDir('media') . DS  . "magasin/" ;
                                        $uploader->save($path, $_FILES['visuel']['name'] );
                                       
                                } catch (Exception $e) {
                     
                        }
                        //this way the name is saved in DB
                                  $data['visuel'] = "magasin/" .$_FILES['visuel']['name'];
                        }
                        elseif(isset($data['visuel']['delete']) && $data['visuel']['delete'] == 1)
                        {
                                $img = Mage::getBaseDir('media') . DS  . $data["visuel"]['value'] ;
                                @unlink($img);
                                $data['visuel'] = "";
                        }
                        else
                        {
                                unset($data['visuel']);
                        }
                        [/code]

伶俜 2009-8-11 18:16

删除[code] $magasin = Mage::getModel('magasin/magasin')->load($magasinId);
                    $magasin->delete();[/code]

伶俜 2009-8-11 18:17

$this->_removeButton('add');
$this->_updateButton('save', 'label', Mage::helper('magasin')->__('Save Item'));
$this->_addButton('saveandcontinue', array(
            'label'     => Mage::helper('adminhtml')->__('Save And Continue Edit'),
            'onclick'   => 'saveAndContinueEdit()',
            'class'     => 'save',
        ), -100);

伶俜 2009-8-11 18:18

[code]Mage::getStoreConfig('system/gmap/key');
<config>
    <default>
        <system>
            <gmap>
                <key>ABQIAAAA_fToiluqr0-ShL267ij9CxSW_Encw03TyoIYSdjWF7jpbSHp8BQkbNZK96AS4ut4hJeQcoLXOuGvjA</key>
            </gmap>
        </system>
    </default>
</config>[/code]

伶俜 2009-8-11 18:19

[code]  protected function _prepareCollection()
  {
      $collection = Mage::getModel('magasin/magasin')->getCollection();
     

      $collection->getSelect()->join(array('ville'=>'geo_ville'),'geo_ville_id = ville.id', array('affich'));
   
      $this->setCollection($collection);
      return parent::_prepareCollection();
  }[/code]

伶俜 2009-8-11 18:21

[code]             $resource = Mage::getSingleton('core/resource');
        $read= $resource->getConnection('core_read');
        $actualiteTable = $resource->getTableName('geo_ville');
       
        $select = $read->select()
        ->where('Active=1')
        ->from($actualiteTable,array('value'=>'id','label'     =>'affich'))
        ->order('affich asc') ;

        $ville_values = $read->fetchAll($select);

$fieldset->addField('geo_ville_id', 'select', array(
          'label'     => Mage::helper('magasin')->__('Ville'),
          'name'      => 'geo_ville_id',
          'values'    => $ville_values,
      ));[/code]

伶俜 2009-8-11 21:19

[code]昨天又朋友问题有些新建的页面没有了面包屑时怎么弄上去。

其实方法很简单。 在 block的 _prepareLayout方法加入调用breadcrumbs 的代码就可以了。

这里有个简单的例子:
if ($breadcrumbs = $this->getLayout()->getBlock('breadcrumbs')) {
            $breadcrumbs->addCrumb('home', array(
                'label'=>Mage::helper('catalogsearch')->__('Home'),
                'title'=>Mage::helper('catalogsearch')->__('Go to Home Page'),
                'link'=>Mage::getBaseUrl()
            ))->addCrumb('Contact us', array(
                'label'=>Mage::helper('catalogsearch')->__('Contact us')
            ));
        }

这样,生成的breadcrumbs 将是:Home >> Contact us[/code]

伶俜 2009-8-11 21:27

在block逻辑 或者是在 控制器下面的操作(action)中,获取一个Magento的数据模型的方法是:
Mage::getModel('[name of module]/[name of model]');

[name of module] 和 [name of model] 都是忽略大小写的,还有[name of model] 中如果有下划线的话,Magento 会认为下划线左边部分是目录名的。这个请注意!

例如,我们要获取商品的数据模型,我们可以这样写:
Mage::getModel('catalog/product');
这个的model 文件位于 catalog/model/product.php
Mage::getModel('catalog/type_simple');
这个的model 文件为:catalog/type/simple.php

伶俜 2009-8-11 21:28

在head中加入js,css的方法
修改 layout/page.xml[code]<default>
        <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
                 <block type="page/html_head" name="head" as="head">
                          <action method="addItem"><type>skin_js</type><name>js/functions.js</name></action>        <!--这就是加入javascript的方法-->
                          <action method="addItem"><type>skin_css</type><name>css/styles-ie.css</name><params/><if>lt IE 8</if></action> <!--加入对ie8支持的CSS-->
                          <action method="addItem"><type>js</type><name>lib/ds-sleight.js</name><params/><if>lt IE 7</if></action><!--加入对ie7支持的CSS-->
                          ......
                 </block>
        </block>
        ......
</default>[/code]

伶俜 2009-8-19 22:19

magento 直接连接数据库代码
[code]
$w = Mage::getSingleton(’core/resource’)-&gt;getConnection(’core_write’);  
$result = $w-&gt;query(’select ’entity_id’ from ’catalog_product_entity’);  
if (!$result) {  
return false;  
}  
$row = $result-&gt;fetch(PDO::FETCH_ASSOC);  
if (!$row) {  
return false;  
}[/code]

伶俜 2009-9-2 04:17

*  Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
      [url]http://magesite.extension/js/[/url]
    * Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
      [url]http://magesite.extension/index.php/[/url]
    * Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
      [url]http://magesite.extension/media/[/url]
    * Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);
      [url]http://magesite.extension/skin/[/url]
    * Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
      [url]http://magesite.extension/[/url]

伶俜 2009-9-2 04:17

<?php echo $this->getSkinUrl('images/logo_a4.png')?>

伶俜 2009-9-6 05:19

相当于htmlentities的模板函数[code]<?php echo $this->htmlEscape($pressealite["presse_titre"]); ?>[/code]找到media路径[code]<?php echo Mage::getBaseUrl('media') . $pressealite["presse_vignette"];?>[/code]怎样生成magento url的key[code]<?php $delete_url=$this->getUrl("offre/adminhtml_offre/delete/ajax/1/id/".$offre["offre_id"]."/key/".Mage::getModel('adminhtml/url')->getSecretKey('adminhtml_offre', 'edit'));?>[/code]

伶俜 2009-9-6 05:20

resize product image[code]<?php $_imageUrl =  $this->helper('catalog/image')->init($_product, 'image')->resize(160, 82);?>
                        [/code]

伶俜 2009-9-6 05:23

用magento模板发邮件[code]try
            {           
                $postObject = new Varien_Object();
                       $postObject->setData($data);

                $email =$magasin["email"];
                $name = $magasin["contact"] ? $magasin["contact"] : null;
                require_once 'Mage/Contacts/controllers/IndexController.php';
                  $mailTemplate = Mage::getModel('core/email_template');
                    $mailTemplate->setDesignConfig(array('area' => 'frontend'))
                        ->setReplyTo($email)
                        ->sendTransactional(
                            Mage::getStoreConfig('magasin/email/template'),
                            Mage::getStoreConfig(Mage_Contacts_IndexController::XML_PATH_EMAIL_SENDER),
                            $email,
                            $name,
                            array('data'=>$postObject)
                        );
   
                    if (!$mailTemplate->getSentSuccess()) {
                        throw new Exception();
                    }
                  die(Zend_Json_Encoder::encode(array("OK","Le mail a été envoyé au magasin")));[/code]
再config.xml里
[code]        <template>
            <email>
                <magasin_email_template translate="label" module="magasin">
                    <label>rdv magasin</label>
                    <file>rdv_magasin.html</file>
                    <type>html</type>
                </magasin_email_template>
            </email>
        </template>
    </global>
    <default>
        <magasin>
            <email>
                <enabled>1</enabled>
                <template>magasin_email_template</template>
                <allow_guest>1</allow_guest>
                <max_recipients>500</max_recipients>
                <max_per_hour>500</max_per_hour>
                <check_by>0</check_by>
            </email>
        </magasin>
    </default>[/code]

伶俜 2009-9-6 05:29

加入google map代码[code]    <default>
        <system>
            <gmap>
                <key>ABQIAAAAV6qQ96HRtuETM0szXCTsFRT4VRgJ43z8pajUk-VHhGIPSeCbYRRfn0snrJnxx6BRoyOsPfoLyFSeIw</key>
            </gmap>
        </system>
    </default>[/code]然后[code]<?php echo '<script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key='.Mage::getStoreConfig('system/gmap/key').'"></script>';?>
<script type="text/javascript">
var map = null;
var gmapExistingOnload = null;
function createMarker(point, msg)
{
      var baseIcon = new GIcon();
      baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
      baseIcon.iconSize = new GSize( 16, 16);
      baseIcon.shadowSize = new GSize(37, 34);
      baseIcon.iconAnchor = new GPoint(9, 20);
      baseIcon.infoWindowAnchor = new GPoint(9, 2);
      baseIcon.infoShadowAnchor = new GPoint(18, 25);
      baseIcon.image =  "/skin/frontend/mobilierdefrance/default/favicon.ico";
      
      markerOptions = { icon:baseIcon };  
             
        var marker = new GMarker(point, markerOptions);
        GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(msg);
        });
        return marker;
}
function show_google_maps(lat,long,msg)
{               
    var startPoint = new GLatLng(lat,long);
    var GMapOptions = { size : new GSize( 350, 300 ) };
    map = new GMap2(document.getElementById('gMap'), GMapOptions );
    map.addControl(new GSmallMapControl());
    map.setCenter(startPoint, 15);
    map.addOverlay(createMarker(startPoint, msg));
}
</script>[/code]

伶俜 2009-9-6 05:48

add date in grid[code]$fieldset->addField('offre_date', 'date', array(
            'name'      => 'offre_date',
            'title'     => Mage::helper('offre')->__('Date'),
            'label'     => Mage::helper('offre')->__('Date'),
            //'format' => '%Y-%m-%d',
            'required'  => true,
            'image'  => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'/adminhtml/default/default/images/grid-cal.gif',
                'format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
        ));[/code]

伶俜 2009-9-9 20:27

根据客户要求定制或修改magento模板对于不熟悉magento架构的人来说是非常困难的一件事。你可能也有看到在模板中到处都能看见通过调用下面这行代码来显示某个block:

<?php $this->getChildHtml() ?>

可是有你却发现有时候这个调用是可行的,有时候是没有作用,有时候它还会报错。其实这是由于xml layout配置引起的。这边就不把问题复杂化。事实上你还可以通过下面的代码来调用:

<?php echo $this ->getLayout()->getBlock( 'top.search' )->toHtml() ?>
页: [1]
查看完整版本: magento开发 笔记