Dodany: 21 kwietnia, 2017 | Kategoria: Magento, PHP
Ponieważ w Magento zależnie od ustawionego języka separatorem miejsc dziesiętnych jest kropka lub przecinek, a miałem klienta, który chciał cyfry po tym znaku zamieniać na małe, musiałem znaleźć rozwiązanie. Mimo setek plików XML jednego prostego rozwiązania nie ma, ale jest funkcja która zwraca nam tablicę zawierającą tę i inne cenne informacje o cenach:
Mage::app()->getLocale()->getJsPriceFormat();
1 2 3
| $options = Mage::app()->getLocale()->getJsPriceFormat();
echo $options['decimalSymbol']; // returns . (1.5) or , (1,5)
echo $options['groupSymbol']; // returns , (1,000.5) or . (1.000,5) |
Tagi: character, decimal, magento, separator, symbol Brak komentarzy »
Dodany: 18 listopada, 2016 | Kategoria: Magento
Załóżmy, że jesteśmy w angielskim sklepie, ale potrzebujemy wyświetlić jedno tłumacznenie z niemieckiego. Zamiast je kopiować albo hardcode-ować, wystarczy:
1 2 3 4 5 6 7 8
| /* define */
$translate = new Mage_Core_Model_Translate();
$translate->setLocale(
Mage::getStoreConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_LOCALE, $storeId)
)->init('frontend');
/* use */
echo $translate->translate(array('Text to translate'));
// optional %s arguments should be given as second and next arguments in array |
To wszystko.
Brak komentarzy »
Dodany: 13 listopada, 2015 | Kategoria: Magento, PHP
Jeśli nagłówki zostały już wysłane, magento będzie w logach pluć błędem: DEBUG (7): HEADERS ALREADY SENT:
, wraz ze stosem plików które doprowadziły do logowania tego błędu w app/code/core/Mage/Core/Controller/Response/Http.php:44
Niestety, lista ta nie mówi zbyt wiele:
[1] /lib/Zend/Controller/Response/Abstract.php:766
[2] /app/code/core/Mage/Core/Controller/Response/Http.php:77
[3] /app/code/core/Mage/Core/Controller/Varien/Front.php:188
[4] /app/code/core/Mage/Core/Model/App.php:347
[5] /app/Mage.php:640
[6] /index.php:78
Wystarczy jednak niewielka modyfikacja i dowiemy się gdzie leży problem. Proponuję skopiować plik app/code/core/Mage/Core/Controller/Response/Http.php
do app/code/local/Mage/Core/Controller/Response/Http.php
i w metodzie sendHeaders()
zamienić:
43 44 45 46
| if (!$this->canSendHeaders()) {
Mage::log('HEADERS ALREADY SENT: '.mageDebugBacktrace(true, true, true));
return $this;
} |
na
43 44 45 46 47
| if (!$this->canSendHeaders()) {
headers_sent($file, $line);
Mage::log('HEADERS ALREADY SENT: '. $file .':' . $line);
return $this;
} |
Brak komentarzy »
Dodany: 4 listopada, 2015 | Kategoria: Magento, PHP
1 2
| cd /var/www/html/magento/shell
php indexer.php --reindex catalogsearch_fulltext |
Tagi: magento, reindex, solr Brak komentarzy »
Dodany: 24 kwietnia, 2015 | Kategoria: Magento, PHP
Jeżeli atrybut w Magento istnieje i ma już opcje, można je dodać tak:
1 2 3 4 5 6 7 8 9 10
| $arg_attribute = 'nazwa_attr';
$arg_value = '<< Nowa opcja >>';
$attr_id = Mage::getModel('catalog/resource_eav_attribute')->loadByCode('catalog_product', $arg_attribute)->getAttributeId();
$option['attribute_id'] = $attr_id;
$option['value']['<< JAKAŚ NAZWA KLUCZA >>'][0] = $arg_value;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option); |
Brak komentarzy »
Dodany: 26 lutego, 2015 | Kategoria: Magento
Tworząc w magento layout należy podać identyfikator dla danego kontrolera i akcji. Niestety czasem są z tym problemy, ale można dość szybko znaleźć wyciągnąć ten identyfikator w samej akcji za pomocą:
1
| $this->getFullActionName() |
Tagi: adminhtml, layout, magento Brak komentarzy »
Dodany: 9 października, 2012 | Kategoria: Magento, PHP
Potrzebowałem znaleźć, gdzie jest ograniczana kolekcja produktów w widoku kategorii, przez co zamiast X produktów wyświetla się np. 9.
1 2
| class Mage_Catalog_Block_Product_List {
... |
162 163
| // set collection to toolbar and apply sort
$toolbar->setCollection($collection); |
Tagi: apply, category, filter, magento, page, pagination, toolbar Brak komentarzy »
Dodany: 27 lipca, 2011 | Kategoria: Magento, PHP
Gdy wstawimy blok do pliku layoutu, będzie on wczytany przy generowaniu strony (nawet jeśli go nie wyświetlamy w templatce) i sprawdza cache. Dzisiaj miałem taki problem, ze aby nie nadpisywać całego magento i wyswietlania kategorii, najprościej było po prostu ustawić pewien parametr w templatce a potem ten drugi blok miał go odczytywać aby utworzyć klucz dla cache. Tu pojawił się problem, bowiem aby skorzystac z getChildHtml() musiałem ustawić blok w layoucie, co powodowało, ze generował się klucz do cache z parametru, którego jeszcze nie było i sypało błędem.
Poszukałem rozwiazania w googlach i było prawie dobre – niestety okazało się, że metoda setData wcale nie ustawi zmiennej $this->_template, a $this->_data[’template’] dla bloku, przez co output HTMLowy się nie wykonywał ($this->getTemplate() zwracało NULL).
Zatem prawidłowe rozwiązanie to:
echo $this->getLayout()
->createBlock('Name_Module_Block_Type', 'name')
->setTemplate('name/module/type.phtml')
->toHtml();
Tagi: block, createBlock, include, layout, magento, module, setTemplate, toHtml Brak komentarzy »