Что удобнее использовать - стандартный тип материала product или свой собственный? Product 1. Работает со стандартным каталогом уберкарта. 2. Позволяет.

Презентация:



Advertisements
Похожие презентации
Разработка видеокаталога ShowSpy.org на Drupal Александр Л. samik.name.
Advertisements

Support.ebsco.com Создание локальной подборки Учебное пособие.
Triggers для mysql. Что есть триггер? Триггер - это хранимая процедура особого типа, исполнение которой обусловлено наступлением определенного события.
Соколова В. В. Поддержка баз данных в РНР. Соколова В. В. Лаб 6 Работа с базами данных в РНР В РНР реализована обширная поддержка практически всех существующих.
Разработка модуля для CMS Drupal на примере разработки плагина для модуля CCK Роман Архаров.
Разработка современной CMS. Преимущества, которые дает PHP5 при разработке таких систем Современные технологии эффективной разработки веб- приложений с.
Ekaterina B. Egorkina,© VEELTECH.RU Построение страницы с интерактивным отчетом Простейшая страница с отображением данных в табличном виде. Построение.
Корпоративные системы Лекция 5. Механизмы доступа к БД через Web-интерфейс.
Администрирование и безопасность MySQL. Создание и удаление пользователей Под учетной записью пользователя MySQL подразумевается строка в таблице user.
Интернет- технологии МИИГаИК. Указание XML-документов в ориентире на будущее
Ekaterina B. Egorkina,© VEELTECH.RU Загрузка и вывод изображений Каким образом можно сохранить картинку в БД, а потом отобразить ее на странице?
Кожемякин Артём Дмитриевич Технический директор (совладелец) Исполнительный директор (совладелец) Эксперт консультант [интернет магазин][образовательный.
Работа с платёжными системами в интернет-магазине Антон Паймышев «Студия 38»
Построение сообществ на Drupal, интеграция с сервисами Google Анна Федорук, Клера Виленская Sterno.Ru.
Seo Поисковая оптимизация Продвижение сайта. Поиско́вая оптимиза́ция (англ. search engine optimization, SEO) комплекс мер для поднятия позиций сайта в.
Drupal Camp Minsk Возможность изменения только одной области Нет инструментов, позволяющих загрузить css или js динамически Механизм по перезагрузке.
Взаимодействие с клиентом в Интернет-системах. Возможности языка PHP.
Нормализация таблиц реляционной базы данных © Панова И.В
Боремся с «лишними» переходами на сайте, или еще пара слов о попапах и аяксах Талдыкин Егор Ardas Group.
Как найти работу на портале JobTour? Несколько простых шагов, которые позволят Вам найти работу мечты с помощью нашего портала.
Транксрипт:

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

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

Что лучше использовать для категоризации товаров? 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.Допускается вложенность контейнера в контейнер.

Платежный модуль своими руками для Drupal 5.х Регистрация страницы результата платежа 5.х Перекрытие кнопки submit на форме оформления заказа: Для 6-й ветки hook_menu выглядит несколько иначе.

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

Форма настроек для платежного метода Будет отображаться по адресу:

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

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

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

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

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

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); }

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