Magento Collection Chain addFieldToFilter with OR

18.04.2012 о 11:49 В рубриці:Magento | PHP Прокоментуй!

Mage::getModel(‘catalog/product’)
->getCollection()
->addFieldToFilter(‘sku’,array(‘like’=>’a%’))
->addFieldToFilter(‘sku’,array(‘like’=>’b%’))
->getSelect()
);
=
WHERE (e.sku like ‘a%’) AND (e.sku like ‘b%’)

$filter_a = array(‘like’=>’a%’);
$filter_b = array(‘like’=>’b%’);
echo(
(string)
Mage::getModel(‘catalog/product’)
->getCollection()
->addFieldToFilter(‘sku’,array($filter_a,$filter_b))
->getSelect()
);
=
WHERE (((e.sku like ‘a%’) or (e.sku like ‘b%’)))

It’s described here, but it was hard to find.

http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-8-varien-data-collections

SQL вибірка по ID з набору

28.03.2012 о 13:33 В рубриці:Некатегоризовано Прокоментуй!

Для випадків коли ID зберігаються в полі типу VARCHAR через кому – 1,3,2.

Можна використовувати слідуючий метод вибірки.

1
2
3
4
5
6
SELECT *
FROM `mytable`
WHERE `myids` LIKE '3'
OR `myids` LIKE '3,%'
OR `myids` LIKE '%,3,%'
OR `myids` LIKE '%,3'

Де 3 – необхідний ID

Join’s в Magento

28.03.2012 о 10:31 В рубриці:Magento | PHP Прокоментуй!

PHP
1
2
3
4
5
6
7
8
9
10
$tableCollections = Mage::getSingleton('core/resource')
->getTableName('tig_bannerslider_collections');
$collection = Mage::getModel('bannerslider/items')->getCollection();
$collection->getSelect()
->joinLeft(array('bc'=> $tableCollections),
'item_collection = bc.id',
array('item_collection'=>'bc.collection_title'));
$this->setCollection($collection);
return parent::_prepareCollection();

Де array(‘item_collection’=>’bc.collection_title’) треба читати як bc.collection_title AS ’item_collection’

Magento: Переміщення JS коду Google Analytics

05.01.2012 о 12:34 В рубриці:Magento Прокоментуй!

Стандартний модуль Google Analytics в Мадженто виводить JS код одразу після тегу <body>. Цей код повинен виводитись в кінці хідера перед закриваючим тегом </head>. Виправити це можна в 3 кроки насупним чином.

1. В лайауті  app/design/frontend/YOURPACKAGE/YOURTHEME/layout/page.xml додати болк з назвою ”before_head_end”.

XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<block type="page/html_head" name="head" as="head">
<action method="addJs"><script>prototype/prototype.js</script></action>
<action method="addJs"><script>lib/ccard.js</script></action>
<action method="addJs"><script>prototype/validation.js</script></action>
<action method="addJs"><script>scriptaculous/builder.js</script></action>
<action method="addJs"><script>scriptaculous/effects.js</script></action>
<action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
<action method="addJs"><script>scriptaculous/controls.js</script></action>
<action method="addJs"><script>scriptaculous/slider.js</script></action>
<action method="addJs"><script>varien/js.js</script></action>
<action method="addJs"><script>varien/form.js</script></action>
<action method="addJs"><script>varien/menu.js</script></action>
<action method="addJs"><script>mage/translate.js</script></action>
<action method="addJs"><script>mage/cookies.js</script></action>
<block type="page/js_cookie" name="js_cookies" template="page/js/cookie.phtml"/>
<action method="addCss"><stylesheet>css/styles.css</stylesheet></action>
<action method="addItem"><type>skin_css</type><name>css/styles-ie.css</name><params /><if>lt IE 8</if></action>
<action method="addCss"><stylesheet>css/widgets.css</stylesheet></action>
<action method="addCss"><stylesheet>css/print.css</stylesheet><params>media="print"</params></action>
<action method="addItem"><type>js</type><name>lib/ds-sleight.js</name><params /><if>lt IE 7</if></action>
<action method="addItem"><type>skin_js</type><name>js/ie6.js</name><params /><if>lt IE 7</if></action>
</block>
<!-- add --> <block type="core/text_list" name="before_head_end" as="before_head_end" />
<block type="core/text_list" name="after_body_start" as="after_body_start" translate="label">
<label>Page Top</label>
</block>

2. В лайауті app/design/frontend/YOURPACKAGE/YOURTHEME/layout/page.xml
XHTML
1
2
3
4
5
6
7
<default>
<!-- Mage_GoogleAnalytics -->
<!-- remove --><reference name="after_body_start">
<!-- add --> </reference><reference name="before_head_end" after="-">
<block type="googleanalytics/ga" name="google_analytics" as="google_analytics" />
</reference>
</default>

3. В темплейтах:

app/design/frontend/YOURPACKAGE/YOURTHEME/template/page/1column.phtml

app/design/frontend/YOURPACKAGE/YOURTHEME/template/page/2column-left.phtml

app/design/frontend/YOURPACKAGE/YOURTHEME/template/page/2column-right.phtml

app/design/frontend/YOURPACKAGE/YOURTHEME/template/page/3columns.phtml

app/design/frontend/YOURPACKAGE/YOURTHEME/template/page/empty.phtml

XHTML
1
2
3
4
<head>
< ?php echo $this->getChildHtml('head') ?>
<!-- add -->< ?php echo $this->getChildHtml('before_head_end') ?>
</head>

Функції обробки масивів в PHP

03.08.2011 о 21:05 В рубриці:PHP Прокоментуй!

Позиціювання всередині масиву

Ці функції працюють з вказівником, який за замовчуванням завжди вказує на перший елемент в масиві.

current() або її псевдонім pos()
Повертає значення поточного елемнту.

1
2
$a = array('перший','другий', 'третій');
$element = current($a);        // $element = 'перший'

next()
Переміщує вказівник на наступний елемент. Повертає значення елементу або FALSE, якщо елементів більше немає.
1
2
3
$a = array('перший','другий', 'третій');
$next = next($a);            // $next = 'другий'
$element = current($a);        // $element = 'другий'

prev()

Переміщує вказівник на попередній елемент. Повертає значення елементу або FALSE, якщо елементів більше немає.

1
2
3
4
5
$a = array('перший','другий', 'третій');
$next = next($a);        // $next = 'другий'
$next = next($a);        // $next = 'третій'
$prev = prev($a);        // $prev = 'другий'
$current = current($a);    // $current = 'другий'

end()

Переміщує вказівник на останній елемент. Повертає значення елементу або FALSE, якщо масив порожній.

1
2
3
$a = array('перший','другий', 'третій');
$end = end($a);            // $end = 'третій'
$current = current($a);    // $current = 'третій'

reset()

Переміщує вказівник на перший елемент. Повертає значення елементу або FALSE, якщо масив порожній.

1
2
3
4
$a = array('перший','другий', 'третій');
$end = end($a);            // $end = 'третій'
reset($a);
$current = current($a);    // $current = 'перший'

each()

Повертає пару – Ключ/Значення, а саме масив з  ключами 1, value, 0, key. Де 1 та value – Значення, а 0 та key – Ключ. Вказівник переводиться на наступний елемент. Якщо вказівник минув останній елемент, функція поверне FALSE.

1
2
3
4
5
6
7
8
$a = array('перший','другий', 'третій');
$e = each($a);            // $e = array(
                        //            1         =&gt; 'перший',
                        //            'value' =&gt; 'перший',
                        //            0         =&gt; 0,
                        //            'key'     =&gt; 0
                        //        )
$current = current($a);    // $current = 'другий'

key()

Повертає ключ поточного елементу.

1
2
3
4
$a = array('перший','key' =&gt; 'другий', 'третій');
$k = key($a);            // $k = 0
next($a);
$k = key($a);            // $k = 'key'

foreach()

Функція відноситься до циклів але працює з масивами (та об’єктами) і вказівником масиву. Ця фукція дає можливість легко перебирати всі елементи масиву.

1
2
3
4
5
$arr = array(1, 2, 'key' =&gt; 3, 4);
foreach ($arr as $key =&gt; $value)
{
echo "$key : $value    ";
}

Результатом роботи буде:  0 : 1    1 : 2    key : 3    2 : 4

Сортування

sort()

Сортує за зростанням. Сприймає масив як список, при цьому ключі не зберігаються. Має службовий параматр sort_flags, який визначає як буде працювати функція.

Sort_flags:

  • SORT_REGULAR – звичайне поривняння (не змінюючі тіп елементів)
  • SORT_NUMERIC – поривняння елементив як числові
  • SORT_STRING – поривняння елементив як текстові

1
2
$a = array(3, 4, 1, 2);
$s = sort($a);            // $s = array(1, 2, 3, 4)

rsort()

Сортує за зростанням. Сприймає масив як список, при цьому ключі не зберігаються. Має службовий параматр sort_flags, як і функція sort()

1
2
$a = array(3, 4, 1, 2);
$s = rsort($a);            // $s = array(4, 3, 2, 1)

asort()

Сортує за зростанням елементи асоциативниого масиву. Має службовий параматр sort_flags, як і функція sort()

1
2
3
4
5
6
7
8
9
10
11
$a = array("d" =&gt; "lemon",
"a" =&gt; "orange",
"b" =&gt; "banana",
"c" =&gt; "apple");
/*
* $s = array("c" =&gt; "apple",
* "b" =&gt; "banana",
* "d" =&gt; "lemon",
* "a" =&gt; "orange");
*/
$s = asort($a);

arsort()

Сортує за спаданням елементи асоциативниого масиву. Має службовий параматр sort_flags, як і функція sort()

1
2
$a = array("d" =&gt; "lemon", "a" =&gt; "orange", "b" =&gt; "banana", "c" =&gt; "apple");
$s = arsort($a);            // $s = array("a" =&gt; "orange", "d" =&gt; "lemon", "b" =&gt; "banana", "c" =&gt; "apple")

ksort()

Сортує за зростанням ключі асоциативниого масиву. Має службовий параматр sort_flags, як і функція sort()

1
2
3
4
5
6
7
$a = array("d" =&gt; "lemon", "a" =&gt; "orange", "b" =&gt; "banana", "c" =&gt; "apple");
$s = ksort($a);            // $s = array(
                        //            "a" =&gt; "orange",
                        //            "b" =&gt; "banana",
                        //            "c" =&gt; "apple",
                        //            "d" =&gt; "lemon"
                        //        )

krsort()

Сортує за спаданням ключі асоциативниого масиву. Має службовий параматр sort_flags, як і функція sort()

1
2
3
4
5
6
7
$a = array("d" =&gt; "lemon", "a" =&gt; "orange", "b" =&gt; "banana", "c" =&gt; "apple");
$s = krsort($a);            // $s = array(
                            //            "d" =&gt; "lemon",
                            //            "c" =&gt; "apple",
                            //            "b" =&gt; "banana",
                            //            "a" =&gt; "orange"
                            //        )

shuffle()

Перемішує елементі масиву. При цьому існуючі ключі відкидаються та заміняються на 0,1,2…

1
2
3
4
5
6
7
$a = array("d" =&gt; "lemon", "a" =&gt; "orange", "b" =&gt; "banana", "c" =&gt; "apple");
shuffle($a);                // $a = array(
                            //            0 =&gt; "lemon",
                            //            1 =&gt; "apple",
                            //            2 =&gt; "banana",
                            //            3 =&gt; "orange"
                            //        )

natsort()

Природнє сортування, тобто те яке звикли бачити люди.

1
2
3
4
5
6
7
$a = array("img12.png", "img100.png", "img02.png", "img1.png");
natsort($a);                // $a = array(
                            //            2 =&gt; "img02.png",
                            //            3 =&gt; "img1.png",
                            //            0 =&gt; "img12.png",
                            //            1 =&gt; "img100.png"
                            //        )

Switch to our mobile site