Showing posts with label Magento. Show all posts
Showing posts with label Magento. Show all posts

Friday, November 4, 2011

Працюємо з core в magento і залишаємо його буз змін

Із серії тих же заміток для початківців:

Напевно ви вже знаєте що вносити будь які зміни в ядро magento не є хорошим тоном і взагалі неправильним варіантом користування magento оскільки вона передбачає модульність і надає всі можливості для того щоб в ядро не вносити взагалі ніяких поправок.

Для такого типу файлів як блоки все дуже просто, а саме потрібно продублювати їєрархію папок до до тих файлів які ви хочете поміняти або підкорегувати в LOCAL, ну і не забути розмістити в вашій локалній ієрархії самі файли які ви вже змінили, але якщо ви бажаєте щоб і блоки і модулі були не просто продубльовані в локал, а містились в каталозі вашого модуля то потрібно дещо також змінити файл конфігурації і розмістити файли в відповідному місці, але про це згодом тому що контролери мене більше цікавлять на даний момент))

Отже що до такого типу файлів як контролери то тут трохи складніше, оскільки просте дублювання в локал навіть і не розглядається, для мене підійшов наступний метод розширення контролера,  в моєму випадку це був контролера ядра CustomControler, який можна знайти в контролерах Adminhtml.

Thursday, November 3, 2011

Нюанси Magento для початківців (Attribute)

Це перша і сподіваюсь не остання із із серії записок про Magento для початківців:

Припустимо ви добавили атрибут( розгляну на прикладі customer) і наш атрибут добавляється прекрасно в усі необхідні таблички (eav_attribute, customer_eav_attribute), але в мене постало запитання в тому як добавити даний атрибут до конкретного користувача??
я намагався вирішити питання так:


$customer = Mage::getModel('customer/customer')->load($customerId);
$customer->setMyattribute(myvalue);
$customer->save();


але дане рішення не буде ніяк впливати) якщо атрибут ще не є створеним в певній табличці (customer_entity_int, customer_entity_text і т.д.) тобто його ще не було для даного користувача і ніяких даних цей атрибут ще не зберігає. В такому випадку потрібний наступний блок:

$customer = Mage::getModel('customer/customer')->load($customerId);
$customer->setMyattribute(myvalue);
$customer->getResource()->saveAttribute($customer, 'myattribute');


ось цей запис додасть ваш атрибут у відповідну табличку в залежності від типу атрибуту( якщо інт то в табличку атрибутів інт і т.д.)
Після того як наш атрибут вже є доступним, то його можна змінювати і першим методом!