SlideShare une entreprise Scribd logo
1  sur  16
Что удобнее использовать - стандартный тип материала product или свой собственный? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Краткий вывод: Разницы в использовании своих типов материалов, либо особой нет, это лишь дело вкуса и пристрастий каждого из разработчиков. В реальных разработках мы иногда сталкиваемся с необходимостью использовать несколько типов продуктов с разными наборами полей к примеру продажа Книг, Копмакт дисков, Журналов либо каких-то других периодических изданий.  У каждого из этих товаров в любом случае имеется свой набор соответствующих полей которые специфичны для того или иного вида к примеру у книги это ISBN, у журнала периодичность издания, у диска тип или жанр предоставляемой на нем информации. В таком случае нам волей неволей придется использовать несколько типов материалов и помнить что такое product не всегда удобно да и нужно. В таких случаях проще отказаться от типа по умолчанию и создать свои типы «book», «disk», «magazine» зарегистрировать их в уберкарте.
Переходим на Url http://my_site/admin/store/products/classes Типы материалов можно создать до установки или включения уберкарта, после включения модулей магазина, главное правильно ввести названия машинного типа. После регистрации данных типов уберкарт автоматически добавит в них филдсет «Product information» с ценами, весом, позицией в каталоге, габаритами, количеством в упаковке количеством добавляемом в корзину по умолчанию. Данный набор может дополнятся либо уменьшаться в зависимости от подключаемых модулей. Неизменными остаются цена, SKU, тип продукта (доставляемый или нет). SKU — уникальный номер товара в Вашем магазине некоторые отказываются от его использования посредством автоматизации присваивания http://www.ubercart.org/contrib/4307
Что лучше использовать для категоризации товаров? 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 — булевый параметр (истинное предназначение пока не известно)
Форма настроек для платежного метода Будет отображаться по адресу: http://my_site/admin/store/settings/payment/edit/methods
Функция построения формы для отправки данных на сервер приема платежей Вызывает внутри себя функцию получения данных для построения формы см. ниже. Формат построения данной формы напрямую зависит от требований сайта приемки  Платежа, имеет режим для тестирования и режим 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 ); } }
Спасибо за внимание! Юрий Глушков [email_address] [email_address] http://ardas.dp.ua

Contenu connexe

Tendances

Removing superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajaxRemoving superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajaxYury Glushkov
 
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Anatoly Sharifulin
 
Вебинар Томулевича adjacency
Вебинар Томулевича adjacencyВебинар Томулевича adjacency
Вебинар Томулевича adjacencyMedia Gorod
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter FlightСтажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter Flight7bits
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4Technopark
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONIvan Nemytchenko
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010" SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010" Michael Noel
 
Building corporate portals with liferay JEEConf 2011
Building corporate portals with liferay   JEEConf 2011Building corporate portals with liferay   JEEConf 2011
Building corporate portals with liferay JEEConf 2011Alexey Kakunin
 
I tmozg js_school_jquery
I tmozg js_school_jqueryI tmozg js_school_jquery
I tmozg js_school_jqueryITmozg
 
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Yandex
 

Tendances (20)

Removing superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajaxRemoving superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajax
 
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16
 
Yserver
YserverYserver
Yserver
 
Вебинар Томулевича adjacency
Вебинар Томулевича adjacencyВебинар Томулевича adjacency
Вебинар Томулевича adjacency
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 
Rose::DB
Rose::DBRose::DB
Rose::DB
 
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter FlightСтажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010" SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010"
 
Building corporate portals with liferay JEEConf 2011
Building corporate portals with liferay   JEEConf 2011Building corporate portals with liferay   JEEConf 2011
Building corporate portals with liferay JEEConf 2011
 
I tmozg js_school_jquery
I tmozg js_school_jqueryI tmozg js_school_jquery
I tmozg js_school_jquery
 
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
 
Javascript
JavascriptJavascript
Javascript
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
 
2014-08-02 02 Алексей Цитркоп. Twitter Flight
2014-08-02 02 Алексей Цитркоп. Twitter Flight2014-08-02 02 Алексей Цитркоп. Twitter Flight
2014-08-02 02 Алексей Цитркоп. Twitter Flight
 
Mojo. The web in a box!
Mojo. The web in a box!Mojo. The web in a box!
Mojo. The web in a box!
 

En vedette

презентация соц сеть на друпале
презентация соц сеть на друпалепрезентация соц сеть на друпале
презентация соц сеть на друпалеInna Tuyeva
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3Inna Tuyeva
 
Multilanguage Drupal
Multilanguage DrupalMultilanguage Drupal
Multilanguage DrupalInna Tuyeva
 
Drupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalDrupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalInna Tuyeva
 
Multilangaunguage Drupal
Multilangaunguage DrupalMultilangaunguage Drupal
Multilangaunguage DrupalInna Tuyeva
 

En vedette (9)

презентация соц сеть на друпале
презентация соц сеть на друпалепрезентация соц сеть на друпале
презентация соц сеть на друпале
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3
 
D7dev
D7devD7dev
D7dev
 
Galleryapi
GalleryapiGalleryapi
Galleryapi
 
Multilanguage Drupal
Multilanguage DrupalMultilanguage Drupal
Multilanguage Drupal
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
Galleryapi
GalleryapiGalleryapi
Galleryapi
 
Drupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalDrupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs Drupal
 
Multilangaunguage Drupal
Multilangaunguage DrupalMultilangaunguage Drupal
Multilangaunguage Drupal
 

Similaire à I Net

DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...Viktor Likin
 
03 templates kachalova
03 templates kachalova03 templates kachalova
03 templates kachalovaSokolov Artyom
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 
DevHub 3 - Pricing
DevHub 3 - PricingDevHub 3 - Pricing
DevHub 3 - PricingMagento Dev
 
Новая eCommerce платформа D7: скидки, управление заказами, автоматизация
Новая eCommerce платформа D7:  скидки, управление заказами, автоматизацияНовая eCommerce платформа D7:  скидки, управление заказами, автоматизация
Новая eCommerce платформа D7: скидки, управление заказами, автоматизация1С-Битрикс
 
Templates kachalova 2014_new
Templates kachalova 2014_newTemplates kachalova 2014_new
Templates kachalova 2014_newInSales
 
Индексирование в Magento
Индексирование в MagentoИндексирование в Magento
Индексирование в MagentoMagecom Ukraine
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf Conference
 
PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”Open-IT
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf Conference
 
Создание настроек темы оформления в InSales
Создание настроек темы оформления в InSalesСоздание настроек темы оформления в InSales
Создание настроек темы оформления в InSalesInSales
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеровMedia Gorod
 

Similaire à I Net (20)

DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
03 templates kachalova
03 templates kachalova03 templates kachalova
03 templates kachalova
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
DevHub 3 - Pricing
DevHub 3 - PricingDevHub 3 - Pricing
DevHub 3 - Pricing
 
Новая eCommerce платформа D7: скидки, управление заказами, автоматизация
Новая eCommerce платформа D7:  скидки, управление заказами, автоматизацияНовая eCommerce платформа D7:  скидки, управление заказами, автоматизация
Новая eCommerce платформа D7: скидки, управление заказами, автоматизация
 
Templates kachalova 2014_new
Templates kachalova 2014_newTemplates kachalova 2014_new
Templates kachalova 2014_new
 
Magento admin area
Magento admin areaMagento admin area
Magento admin area
 
Индексирование в Magento
Индексирование в MagentoИндексирование в Magento
Индексирование в Magento
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 
Создание настроек темы оформления в InSales
Создание настроек темы оформления в InSalesСоздание настроек темы оформления в InSales
Создание настроек темы оформления в InSales
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
 
бегун
бегунбегун
бегун
 
Render API.
Render API.Render API.
Render API.
 
бегун
бегунбегун
бегун
 

Plus de Inna Tuyeva

азы мультисайтинга
азы мультисайтингаазы мультисайтинга
азы мультисайтингаInna Tuyeva
 
продвинутый мультисайтинг
продвинутый мультисайтингпродвинутый мультисайтинг
продвинутый мультисайтингInna Tuyeva
 
обслуживание мультисайтинга
обслуживание мультисайтингаобслуживание мультисайтинга
обслуживание мультисайтингаInna Tuyeva
 
разработка модуля для Cms Drupal
разработка модуля для Cms Drupalразработка модуля для Cms Drupal
разработка модуля для Cms DrupalInna Tuyeva
 
за что мы ненавидим друпал
за что мы ненавидим друпалза что мы ненавидим друпал
за что мы ненавидим друпалInna Tuyeva
 
веб аналитика в Drupal1
веб аналитика в Drupal1веб аналитика в Drupal1
веб аналитика в Drupal1Inna Tuyeva
 
веб аналитика в Drupal
веб аналитика в Drupalвеб аналитика в Drupal
веб аналитика в DrupalInna Tuyeva
 

Plus de Inna Tuyeva (15)

Text
TextText
Text
 
азы мультисайтинга
азы мультисайтингаазы мультисайтинга
азы мультисайтинга
 
продвинутый мультисайтинг
продвинутый мультисайтингпродвинутый мультисайтинг
продвинутый мультисайтинг
 
обслуживание мультисайтинга
обслуживание мультисайтингаобслуживание мультисайтинга
обслуживание мультисайтинга
 
Arsa
ArsaArsa
Arsa
 
разработка модуля для Cms Drupal
разработка модуля для Cms Drupalразработка модуля для Cms Drupal
разработка модуля для Cms Drupal
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Paranoia
ParanoiaParanoia
Paranoia
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Dc P
Dc PDc P
Dc P
 
Zen
ZenZen
Zen
 
за что мы ненавидим друпал
за что мы ненавидим друпалза что мы ненавидим друпал
за что мы ненавидим друпал
 
веб аналитика в Drupal1
веб аналитика в Drupal1веб аналитика в Drupal1
веб аналитика в Drupal1
 
веб аналитика в Drupal
веб аналитика в Drupalвеб аналитика в Drupal
веб аналитика в Drupal
 

I Net

  • 1.
  • 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. Функция кодов ошибок возвращаемых сервером приема платежей.
  • 10. Dataimport и с чем его едят 1. Права доступа к выполнению импорта. 2. Регистрация меню для модуля 3. Функция регистрации доступных плагинов для импорта данных 4. Функция обработки настроек импорта для плагина 5. Функция включения batch процесса 6. hook регистрации плагина 7. Ведение уникальности импортируемых данных 8. Обработка уникальности импортируемых данных 9. Хуки для импорта пользователей и комментариев, могут не использоваться.
  • 11. Пример написания плагина для импорта тем форумов для 6.х Processing — массив с callback функциями участвующими в процессе импорта данных м.б. «process», «delete» каждый ключ может содержать несколько callback Settings_form — функция построения формы на странице импорта (можем задать параметры или условия для успешного выполнения импорта) Fifnished, final — callback для завершения batch процесса (может быть несколько).
  • 12.  
  • 13.  
  • 14.  
  • 15. 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 ); } }
  • 16. Спасибо за внимание! Юрий Глушков [email_address] [email_address] http://ardas.dp.ua