Product 1. Работает со стандартным каталогом уберкарта. 2. Позволяет набивать в себя дополнительные ССК поля 3. Темизация шаблона вывода (node-product.tpl.php) 4. Работа с таксономией и views. и т.д. презентация

Содержание

Переходим на Url http://my_site/admin/store/products/classes Типы материалов можно создать до установки или включения уберкарта, после включения модулей магазина, главное правильно ввести названия машинного типа. После регистрации данных типов уберкарт автоматически добавит в

Слайд 1Что удобнее использовать - стандартный тип материала 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» зарегистрировать их в уберкарте.


Слайд 2Переходим на Url http://my_site/admin/store/products/classes
Типы материалов можно создать до установки или включения

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

Слайд 3Что лучше использовать для категоризации товаров?
Taxonomy:
1. Входит в ядро друпала.
2. Использует

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

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


Слайд 4Платежный модуль своими руками для Drupal 5.х
Регистрация страницы результата платежа 5.х
Перекрытие

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

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


Слайд 5Регистрация платежного метода в уберкарт
Id — ключ метода
Name — имя метода
Title

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

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


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

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

Слайд 8Функция подготовки данных для отправки
Различия с get_data_testing только в использовании действующих

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

Слайд 9Функции обработки платежа
1. Функция кодирования сигнатуры
2. callback_menu страница отображения результатов платежа
3.

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

Слайд 10Dataimport и с чем его едят
1. Права доступа к выполнению импорта.
2.

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

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

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

Слайд 15function 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);
}
}

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

info@ardas.dp.ua
glyuri@yandex.ru

http://ardas.dp.ua


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика