2013-10-31

Добавление правила перезаписи ссылки (rewrite url)

Для создания перезаписи ссылки используем такой код:

$rewrite = Mage::getModel('core/url_rewrite');
$rewrite->setStoreId($storeId)
    ->setIdPath('path_1')
    ->setRequestPath('mego-page.html')
    ->setTargetPath('cityinfo/index/index/city/Киев')
    ->setIsSystem(false)
    ->save();

где path_1 - уникальный идентификатор записи,
mego-page.html - новый адрес для ссылки,
cityinfo/index/index/city/Киев - оригинальный адрес, сюда на самом деле будет идти запрос.

Смена пароля администратора

Для смены пароля администратора можно выполнить sql запрос:
UPDATE admin_user SET password=CONCAT(MD5('qXpassword'), ':qX') WHERE username='admin';

где "qXpassword" - пароль с солью, qX - соль.

2013-10-25

Печать всех событий Magento

Для печати всех событий мадженто:
  $eventAreas = array('global', 'frontend', 'adminhtml');
  foreach ($eventAreas as $eventArea) {
   $eventConfig = Mage::app()->getConfig()
    ->getNode(sprintf('%s/events', $eventArea));
   foreach ($eventConfig->children() as $key => $value) {
    foreach ($value->observers->children() as $key1 => $value1) {
     $observer_method = array((string)$eventArea,
      (string)$key,
      (string)$key1,
      (string)Mage::app()->getConfig()
       ->getModelClassName($value1->class),
      (string)$value1->method);
     echo $observer_method[1]."</br>";
    }
   }
  }

Creating Observer

Для обработки события добавляем в config.xml:
 <config>
...
 <adminhtml>
  <events>
   <adminhtml_catalog_category_tabs>
     <observers>
    <SliRx_CategoryAttachment_Model_Tab_Observer>
     <type>singleton</type>
     <class>SliRx_CategoryAttachment_Model_Tab_Observer</class>
     <method>addTab</method>
    </SliRx_CategoryAttachment_Model_Tab_Observer>
    </observers>
   </adminhtml_catalog_category_tabs>
  </events>
 </adminhtml>
...
 </config> 

Создаем соответствующий класс, с методом определенным в config.xml
public function addTab($observer) {
}

2013-10-23

События Magento

File Line Event
cron.php 46 default
app/code/core/Mage/Adminhtml/Controller/Action.php 159 adminhtml_controller_action_predispatch_start
app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Carts.php 61 adminhtml_block_html_before
app/code/core/Mage/Adminhtml/Block/Report/Grid.php 186 adminhtml_widget_grid_filter_collection
app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php 76 adminhtml_cms_page_edit_tab_meta_prepare_form
app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php 125 adminhtml_cms_page_edit_tab_design_prepare_form
app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php 119 adminhtml_cms_page_edit_tab_main_prepare_form
app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php 98 adminhtml_cms_page_edit_tab_content_prepare_form
app/code/core/Mage/Adminhtml/Block/Api/User.php

Добавление нового значения атрибута

Для добавление нового значения атрибута используем:
$arg_attribute = 'youtube_video'; // name of attribute
$arg_value = 'value to be added'; // option value

$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
$attr_id = $attr->getAttributeId();

$option['attribute_id'] = $attr_id;
$option['value']['youtube_video'][0] = $arg_value;

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);

2013-10-18

Условия фильтрации И и ИЛИ для коллекций magento

Добавить фильтр по атрибуту можно мотодом addFieldToFilter. Для фильтрации атрибутов с условием И надо использовать такой код:
->addFieldToFilter(array(
    array('attribute'=>'action','eq'=> 1),
))
->addFieldToFilter(array(
    array('attribute'=>'status','eq'=> 1),
))
а для условия ИЛИ такой:
->addFieldToFilter(
    array(
        array('attribute'=>'my_field1','eq'=>'my_value1'),
        array('attribute'=>'my_field2', 'eq'=>'my_value2')
    )
);

Email to friend in magento

Вставка ссылки на отправку продукта на почту френда
 <?php if ($this->canEmailToFriend()): ?>
   <p class="email-friend"><a href="<?php echo $this->helper('catalog/product')->getEmailToFriendUrl($_product) ?>"><?php echo $this->__('Email to a Friend') ?></a></p>
  <?php endif; ?>

2013-10-17

HTML5 placeholder fallback


if ( !("placeholder" in document.createElement("input")) ) {
        jQuery("input[placeholder], textarea[placeholder]").each(function() {
            var val = jQuery(this).attr("placeholder");
            if ( this.value == "" ) {
                this.value = val;
            }
            jQuery(this).focus(function() {
                if ( this.value == val ) {
                    this.value = "";
                }
            }).blur(function() {
                    if ( jQuery.trim(this.value) == "" ) {
                        this.value = val;
                    }
                })
        });

Laravel: удаление public с пути

Если на сервере нет возможности установить DocumentRoot на папку public, то можно в .htaccess прописать:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>