i net

16
Что удобнее использовать - стандартный тип материала product или свой собственный? Product 1. Работает со стандартным каталогом уберкарта. 2. Позволяет набивать в себя дополнительные ССК поля 3. Темизация шаблона вывода (node-product.tpl.php) 4. Работа с таксономией и views. и т.д. My type 1. Работает со стандартным каталогом уберкарта. 2. Позволяет набивать в себя дополнительные ССК поля 3. Темизация шаблона вывода (node-product.tpl.php) 4. Работа с таксономией и views. и т.д. Краткий вывод: Разницы в использовании своих типов материалов, либо особой нет, это лишь дело вкуса и пристрастий каждого из разработчиков. В реальных разработках мы иногда сталкиваемся с необходимостью использовать несколько типов продуктов с разными наборами полей к примеру продажа Книг, Копмакт дисков, Журналов либо каких-то других периодических изданий. У каждого из этих товаров в любом случае имеется свой набор соответствующих полей которые специфичны для того или иного вида к примеру у книги это ISBN, у журнала периодичность издания, у диска тип или жанр предоставляемой на нем информации. В таком случае нам волей неволей придется использовать несколько типов материалов и помнить что такое product не всегда удобно да и нужно. В таких случаях проще отказаться от типа по умолчанию и создать свои типы «book», «disk», «magazine» зарегистрировать их в уберкарте.

Upload: drupal-camp-kyiv

Post on 22-Nov-2014

935 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: I Net

Что удобнее использовать - стандартный тип материала product или свой собственный?

Product

1. Работает со стандартным каталогом уберкарта.

2. Позволяет набивать в себя дополнительные ССК поля

3. Темизация шаблона вывода (node-product.tpl.php)4. Работа с таксономией и views.и т.д.

My type

1. Работает со стандартным каталогом уберкарта.

2. Позволяет набивать в себя дополнительные ССК поля

3. Темизация шаблона вывода (node-product.tpl.php)4. Работа с таксономией и views.и т.д.

Краткий вывод: Разницы в использовании своих типов материалов, либо особой нет, это лишь дело вкуса и пристрастий каждого из разработчиков. В реальных разработках мы иногда сталкиваемся с необходимостью использовать несколько типов продуктов с разными наборами полей к примеру продажа Книг, Копмакт дисков, Журналов либо каких-то других периодических изданий. У каждого из этих товаров в любом случае имеется свой набор соответствующих полей которые специфичны для того или иного вида к примеру у книги это ISBN, у журнала периодичность издания, у диска тип или жанр предоставляемой на нем информации. В таком случае нам волей неволей придется использовать несколько типов материалов и помнить что такое product не всегда удобно да и нужно. В таких случаях проще отказаться от типа по умолчанию и создать свои типы «book», «disk», «magazine» зарегистрировать их в уберкарте.

Page 2: I Net

Переходим на Url http://my_site/admin/store/products/classes

Типы материалов можно создать до установки или включения уберкарта, после включения модулей магазина, главное правильно ввести названия машинного типа. После регистрации данных типов уберкарт автоматически добавит в них филдсет «Product information» с ценами, весом, позицией в каталоге, габаритами, количеством в упаковке количеством добавляемом в корзину по умолчанию. Данный набор может дополнятся либо уменьшаться в зависимости от подключаемых модулей. Неизменными остаются цена, SKU, тип продукта (доставляемый или нет).SKU — уникальный номер товара в Вашем магазине некоторые отказываются от его использования посредством автоматизации присваивания http://www.ubercart.org/contrib/4307

Page 3: I Net

Что лучше использовать для категоризации товаров?

Taxonomy:1. Входит в ядро друпала.2. Использует для навигации taxonomy/term/tid работающий при отсутсвии вьюсов.3. Неограниченная вложеность категорий4. Расширямеость функционала дополнительными модулями типа taxonomy_menu, taxonomoy_image и т.д.

Category:1. Категория — нода.2. Расширяемость ССК полями3. Возможность шаблонизации в виде node-category_cat.tpl.php4. Имеет собственное меню (недостатки аналогичны taxonomy_menu, но нет необходимости устанавливать дополнительный модуль).5. Возможность отображения товаров на странице категории любой из набора созданных views.6. Возможность отображать на своей-же странице подкатегории помимо товаров (вообще благодаря шаблонизации имеется возможность вывести неограниченное количество любой информации на странице).7. Для синхронизации с taxonomy использует обертку которая синхронизирует изменения и дополнения в таблицах term_*.8.Допускается вложенность контейнера в контейнер.

Page 4: I Net

Платежный модуль своими руками для Drupal 5.х

Регистрация страницы результата платежа 5.х

Перекрытие кнопки submit на форме оформления заказа:

Для 6-й ветки hook_menu выглядит несколько иначе.

Page 5: I Net

Регистрация платежного метода в уберкарт

Id — ключ методаName — имя методаTitle — Название которое выводится на странице при выборе метода платежаDesc — описание методаWeight — Вес (необязательно)Callback — функция строящая форму настроек метода платежаCheckout — булевый параметр (истинное предназначение пока не известно)

Page 6: I Net

Форма настроек для платежного методаБудет отображаться по адресу: http://my_site/admin/store/settings/payment/edit/methods

Page 7: I Net

Функция построения формы для отправки данных на сервер приема платежей

Вызывает внутри себя функцию получения данных для построения формы см. ниже.Формат построения данной формы напрямую зависит от требований сайта приемки Платежа, имеет режим для тестирования и режим live

Page 8: I Net

Функция подготовки данных для отправки

Различия с get_data_testing только в использовании действующих переменных.Формат подготовки данных может отличаться в зависимости от требований платежного МетодаВ данной функции так-же в зависимости от требований собирается и кодируется строка сигнатуры платежа.

Page 9: I Net

Функции обработки платежа

1. Функция кодирования сигнатуры2. callback_menu страница отображения результатов платежа3. Вспомогательная функция (была необходима для подмены http на https по требованиямПлатежной системы)4. Функция кодов ошибок возвращаемых сервером приема платежей.

Page 10: I Net

Dataimport и с чем его едят

1. Права доступа к выполнению импорта.2. Регистрация меню для модуля3. Функция регистрации доступных плагинов для импорта данных4. Функция обработки настроек импорта для плагина5. Функция включения batch процесса6. hook регистрации плагина7. Ведение уникальности импортируемых данных8. Обработка уникальности импортируемых данных9. Хуки для импорта пользователей и комментариев, могут не использоваться.

Page 11: I Net

Пример написания плагина для импорта тем форумов для 6.х

Processing — массив с callback функциями участвующими в процессе импорта данных м.б. «process», «delete» каждый ключ может содержать несколько callbackSettings_form — функция построения формы на странице импорта (можем задать параметры или условия для успешного выполнения импорта)Fifnished, final — callback для завершения batch процесса (может быть несколько).

Page 12: I Net
Page 13: I Net
Page 14: I Net
Page 15: I Net

function import_books_row_callback($row, $ret) {global $user; if ($row['data']['price'] >= 4 && (!empty($row['data']['description']) or !empty($row['data']['parent']) or !empty($row['data']['author']) or !empty($row['data']['series']))){ $nid = dataimport_get_nid('books', $row['data']['id']); if ($nid) { $node = node_load($nid); $ret['update'] = isset($ret['update']) ? $ret['update']+1 : 1; } else { $node = new StdClass(); $node->nid = 0; $node->type = 'pbook'; $node->status = 1; $ret['create'] = isset($ret['create']) ? $ret['create']+1 : 1; } $node->uid = $user->uid; $node->shippable = 1; $node->dataimport['type'] = 'books'; $node->dataimport['sku'] = $row['data']['id']; $node->model = $row['data']['id']; if (isset($row['data']['name'])) $node->title = $row['data']['name']; if (isset($row['data']['price'])) $node->sell_price = $row['data']['price']; //The changed timestamp is always updated for bookkeeping purposes (revisions, searching, ...) if (isset($row['data']['isbn'])) $node->field_pbook_isbn[0]['value'] = $row['data']['isbn']; if (isset($row['data']['author'])) $node->field_pbook_authorstr[0]['value'] = $row['data']['author']; if (isset($row['data']['description'])) { $node->field_pbook_description[0]['value'] = $row['data']['description']; $node->field_pbook_description[0]['format'] = '3'; } if (isset($row['data']['publisher'])) $node->field_pbook_publisherstr[0]['value'] = $row['data']['publisher']; if (isset($row['data']['year'])) $node->field_pbook_year[0]['value'] = $row['data']['year']; if (isset($row['data']['series'])) $node->field_pbook_seriesstr[0]['value'] = $row['data']['series']; if (isset($row['data']['cover'])) $node->field_pbook_cover[0]['value'] = $row['data']['cover']; if (isset($row['data']['pages'])) $node->field_pbook_pages[0]['value'] = $row['data']['pages']; if (isset($row['data']['lang'])) { $node->field_pbook_lang[0]['value'] = $row['data']['lang']; } else {$node->field_pbook_lang[0]['value'] = 1;} if (isset($row['data']['parent'])) { $sku_keys = explode(',', $row['data']['parent']); $node->category = array(); foreach($sku_keys as $sku_key) { if ($nid = dataimport_get_nid('categories', intval($sku_key))) { $node->category[$nid] = new stdClass(); $node->category[$nid]->nid = $nid; $node->category[$nid]->cid = $nid; $node->category[$nid]->cnid = db_result(db_query("SELECT cnid FROM {category} WHERE cid = %d", $nid)); } } } node_save($node); }}

Page 16: I Net

Спасибо за внимание!Юрий Глушков

[email protected]@yandex.ru

http://ardas.dp.ua