SlideShare uma empresa Scribd logo
1 de 16
Ubercart - немного примеров из жизни Moscow DrupalConf  2011
Генеральный спонсор и организатор  конференции  DrupalConf 2011 При поддержке:
Спонсоры Информационные спонсоры Сайт конференции
дополнительные модули ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
дополнительные модули
чеки и квитанции 1. Ubercart -> uc_order -> uc_order.module -> function uc_order_actions,  добавляем свою кнопку : if (user_access('view all orders')) { $alt = t(' Распечатать квитанцию', $ order_id); $actions[] = array( 'name' => t('View print kvit'), 'url' => 'admin/store/orders/kvit-ticket/'.$order->order_id, 'icon' => '<img src=&quot;'. base_path() . drupal_get_path('module', 'uc_store')  .'/images/print-kvit.gif&quot; alt=&quot;'. $alt .'&quot; />', 'title' => ' Распечатать квитанцию', ); }
чеки и квитанции 2.  View ->  страница - > admin/store/orders/kvit-ticket
чеки и квитанции 3. views-view-field--ticket--page-1--title.tpl.php ->  №, Наименование,  Кол-во, Ед., Цена, руб., Сумма, руб. <?php $number_total = 0; $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); $class = explode('/', $alias); $total = db_query(&quot;SELECT title, qty, nid, price FROM d7gp1_uc_order_products WHERE order_id = &quot;.$class[4].&quot; ORDER BY order_product_id&quot;); while ($row = db_fetch_object($total)) { print '<tr>'; $number_total = $number_total + 1; print '<td bgcolor=&quot;white&quot;>'.$number_total.'</td>'; print '<td bgcolor=&quot;white&quot;>'.$row->title.'</td>';   print '<td bgcolor=&quot;white&quot;>'.$row->qty.'</td>';   $ed_total = db_query(&quot;SELECT body FROM d7gp1_node_revisions WHERE nid = &quot;.$row->nid); while ($ed_total_res = db_fetch_object($ed_total)) { print '<td bgcolor=&quot;white&quot;>'.$ed_total_res->body.'</td>'; } $price_total = $row->price; $price_total = explode('.', $price_total); print '<td bgcolor=&quot;white&quot;>'.$price_total[0].'</td>'; print '<td bgcolor=&quot;white&quot;>'.$row->qty * $row->price.'</td>';   print '</tr>'; } ?>
чеки и квитанции 4. views-view-field--ticket--page-1--title.tpl.php ->  Итого <?php $or_total = db_query(&quot;SELECT order_total FROM d7gp1_uc_orders WHERE order_id = &quot;.$class[4]); while ($or_total_res = db_fetch_object($or_total)) { $or_total_print = $or_total_res->order_total; $or_total_print = explode('.', $or_total_print); print $or_total_print[0]; } ?>
блок других форм данного товара <?php //  Флаг типа вывода $ my_print = false; if ($node = menu_get_object()) { //  Устанавливаем ограничение на колличество выводимых сниппетом нод. $ num_nodes = 10;  // ID  нужного словаря. $ voc_id = 11;  // 1 -  нода опубликована, 0 - не опубликована. $ status = 1;  //  Функция вызывает термины, относящиеся к конкретной ноде и определенному словарю. $ terms = taxonomy_node_get_terms_by_vocabulary($node, $voc_id);  //  Если такие термины имеются foreach ($terms as $term) { $sql = &quot;SELECT DISTINCT n.nid FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.status = %d AND tn.tid = %d AND n.nid <> %d ORDER BY n.created DESC&quot;; //  Получаем  ID  нод связанных с данными терминами  $ total = db_query_range(db_rewrite_sql($sql), $status, $term->tid, $node->nid, 0, $num_nodes);
блок других форм данного товара print '<table><tr><td><div> Другие формы данного товара</ div></td></tr><tr><td>';  //  Перебираем возвращённые результаты с  ID  нод  while ($row = db_fetch_object($total)) { //  Загружаем представление $ view = views_get_view('uc_products_block_upakovka'); //  Передаём ему аргумент $ view->args[0] = $row->nid; //  Строим результат $ view->execute_display('block_1');   //  Офрмляем результат $ output  = '<table><tr><td><div>'; $output .= $view->render_field('title', 0).'<br><br>'; $output .= $view->render_field('sell_price', 0).'<br>'; $output .= $view->render_field('buyitnowbutton', 0); $output .= '</div></td><td>';  $output .= $view->render_field('field_image_cache_fid', 0); $output .= '</td></tr></table>';    //  Выводим результат print $output;  $my_print = true; } print '</td></tr></table>';  }  }
избавление от дублей страниц и правильная 404 страница Модуль -  duplicate_pages_and_404_page : // Отсечение:  NodeURL- крякозябры,  NodeURL/ кракозябры,  NodeURL? кракозябры. // Отсечение:  TaxonomyURL- крякозябры,  TaxonomyURL/ кракозябры,  TaxonomyURL? кракозябры. // Отсечение:  TaxonomyURL?page=1- крякозябры,  TaxonomyURL?page=1/ кракозябры,  TaxonomyURL?page=1? кракозябры. // Отсечение:  ViewURL- крякозябры,  ViewURL/ кракозябры,  ViewURL? кракозябры. // Отсечение:  ViewURL?page=1- крякозябры,  ViewURL?page=1/ кракозябры,  ViewURL?page=1? кракозябры. // Включить:  SustemURL, !!! SustemURL? переменная !!!,  NodeMain, NodeMain?page=1, ViewMain, ViewMain?page=1, !!!  если скобки в  URL !!!.//  Отсечение: /?кракозябры,  /? page=1- крякозябры, /? page=1/ кракозябры, /? page=1? кракозябры. // Исключить:  taxonomy/term/741/0. 1. hook_init() –  используемый хук. 2.  $url_path = request_uri();  - URL views node .   3. $real_path = $_GET['q'];  -  Real URL node . 4.  Pathauto –  модуль хранящий  URL  нод сайта в специальной таблице. 5.  drupal_not_found();  - выдаётся на все неподходящие адресса. 6.  Customerror –  модуль обрабатывающий  drupal_not_found  и в котором выставляется перенаправление на собственную 404.
кастомизация формы создания товара /** * Реализация  hook_form_alter(),  позволяет вносить изменения в форму перед её показом. */ function delete_field_my_form_form_alter(&$form, &$form_state, $form_id){ //  Если «$ form_id»  равен идентефикатору нужной формы.  if ($form_id == 'product_node_form') { if (isset($form['body_field'])) { //  Скрываем  поле «Показывать анонс в полной версии» $ form['body_field']['teaser_include']['#type'] = 'hidden'; //  Изменяем размер поля «Описание» $ form['body_field']['body']['#rows'] = 1; } }
Спасибо за потраченное время Вячеслав E-mail: sonwol@yandex.ru
Генеральный спонсор и организатор  конференции  DrupalConf 2011 При поддержке:
Спонсоры Информационные спонсоры Сайт конференции

Mais conteúdo relacionado

Mais procurados

ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf Conference
 
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
DrupalCampDN
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Viktor Likin
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
Media Gorod
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
 
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
Yury Glushkov
 
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
DrupalForumZP2012
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
Zhanna Kazakova
 
Problems of Automated Generation of Exploits on the Basis of Source Code
Problems of Automated Generation of Exploits on the Basis of Source CodeProblems of Automated Generation of Exploits on the Basis of Source Code
Problems of Automated Generation of Exploits on the Basis of Source Code
Positive Hack Days
 
Арсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторыАрсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторы
Yandex
 

Mais procurados (20)

ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
 
Yserver
YserverYserver
Yserver
 
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
 
PHP basic
PHP basicPHP basic
PHP basic
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Семинар-практикум по Drupal
Семинар-практикум по DrupalСеминар-практикум по Drupal
Семинар-практикум по Drupal
 
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
 
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
чернобай т., гайдай ю.
чернобай т., гайдай ю.чернобай т., гайдай ю.
чернобай т., гайдай ю.
 
Render API.
Render API.Render API.
Render API.
 
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDEРазработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
 
10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)10 - Web-технологии. MVC фреймворки (продолжение)
10 - Web-технологии. MVC фреймворки (продолжение)
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
 
Perl – жив?!
Perl – жив?!Perl – жив?!
Perl – жив?!
 
Problems of Automated Generation of Exploits on the Basis of Source Code
Problems of Automated Generation of Exploits on the Basis of Source CodeProblems of Automated Generation of Exploits on the Basis of Source Code
Problems of Automated Generation of Exploits on the Basis of Source Code
 
Арсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторыАрсений Форштретер: CSS-селекторы
Арсений Форштретер: CSS-селекторы
 

Destaque

как зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иванкак зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иван
drupalconf
 
фотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антонфотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антон
drupalconf
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
drupalconf
 
Sed sredstvami drupal
Sed sredstvami drupalSed sredstvami drupal
Sed sredstvami drupal
drupalconf
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
drupalconf
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwood
drupalconf
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий виктор
drupalconf
 
Chapter 1 colliding world views
Chapter 1 colliding world viewsChapter 1 colliding world views
Chapter 1 colliding world views
Ya-Han Chen
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаил
drupalconf
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1
drupalconf
 
Drupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayerDrupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayer
drupalconf
 
Elektrisch vervoer
Elektrisch vervoerElektrisch vervoer
Elektrisch vervoer
str03k
 
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
drupalconf
 

Destaque (20)

как зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иванкак зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иван
 
Spring Media
Spring MediaSpring Media
Spring Media
 
Prez drupal
Prez drupalPrez drupal
Prez drupal
 
фотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антонфотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антон
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
Novikov TV
Novikov TVNovikov TV
Novikov TV
 
Рекламная студия "Медиа Партнер"
Рекламная студия "Медиа Партнер"Рекламная студия "Медиа Партнер"
Рекламная студия "Медиа Партнер"
 
Sed sredstvami drupal
Sed sredstvami drupalSed sredstvami drupal
Sed sredstvami drupal
 
Ipc
IpcIpc
Ipc
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
 
Crm core
Crm coreCrm core
Crm core
 
Heads & Hands
Heads & HandsHeads & Hands
Heads & Hands
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwood
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий виктор
 
Chapter 1 colliding world views
Chapter 1 colliding world viewsChapter 1 colliding world views
Chapter 1 colliding world views
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаил
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1
 
Drupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayerDrupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayer
 
Elektrisch vervoer
Elektrisch vervoerElektrisch vervoer
Elektrisch vervoer
 
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
 

Semelhante a Ubercart -nemnogo_primerov_iz_zhizni

ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
ZFConf Conference
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
ZFConf Conference
 
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
ZFConf Conference
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
DarkByte2
 
Zen Coding
Zen CodingZen Coding
Zen Coding
404fest
 
Knockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн
2ГИС Технологии
 

Semelhante a Ubercart -nemnogo_primerov_iz_zhizni (20)

Mojolicious
MojoliciousMojolicious
Mojolicious
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 
DSLs в Perl
DSLs в PerlDSLs в Perl
DSLs в Perl
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.D
 
Страх и ненависть в исходном коде
Страх и ненависть в исходном кодеСтрах и ненависть в исходном коде
Страх и ненависть в исходном коде
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
 
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
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d
 
Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demo
 
Zen Coding
Zen CodingZen Coding
Zen Coding
 
Knockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн
 
лекц17
лекц17лекц17
лекц17
 
Psgi app
Psgi appPsgi app
Psgi app
 

Mais de drupalconf

инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
drupalconf
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
drupalconf
 
Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)
drupalconf
 
3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)
drupalconf
 
Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)
drupalconf
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
drupalconf
 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretan
drupalconf
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихин
drupalconf
 
Caching on highload drupal site roman arkharov (eng)
Caching on highload drupal site  roman arkharov (eng)Caching on highload drupal site  roman arkharov (eng)
Caching on highload drupal site roman arkharov (eng)
drupalconf
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
drupalconf
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
drupalconf
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
drupalconf
 
Business friendly drupal павел прищепа
Business friendly drupal павел прищепаBusiness friendly drupal павел прищепа
Business friendly drupal павел прищепа
drupalconf
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейпостроение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
drupalconf
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
drupalconf
 
Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestroZhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
drupalconf
 
Kostin drupal conf-2011-winter
Kostin drupal conf-2011-winterKostin drupal conf-2011-winter
Kostin drupal conf-2011-winter
drupalconf
 
Lozovickiy uvelichenie kachestva_dlya_razrabotchika
Lozovickiy uvelichenie kachestva_dlya_razrabotchikaLozovickiy uvelichenie kachestva_dlya_razrabotchika
Lozovickiy uvelichenie kachestva_dlya_razrabotchika
drupalconf
 

Mais de drupalconf (19)

инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
 
Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)
 
3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)
 
Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretan
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихин
 
Caching on highload drupal site roman arkharov (eng)
Caching on highload drupal site  roman arkharov (eng)Caching on highload drupal site  roman arkharov (eng)
Caching on highload drupal site roman arkharov (eng)
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Business friendly drupal павел прищепа
Business friendly drupal павел прищепаBusiness friendly drupal павел прищепа
Business friendly drupal павел прищепа
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейпостроение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
 
Azure
AzureAzure
Azure
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
 
Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestroZhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
 
Kostin drupal conf-2011-winter
Kostin drupal conf-2011-winterKostin drupal conf-2011-winter
Kostin drupal conf-2011-winter
 
Lozovickiy uvelichenie kachestva_dlya_razrabotchika
Lozovickiy uvelichenie kachestva_dlya_razrabotchikaLozovickiy uvelichenie kachestva_dlya_razrabotchika
Lozovickiy uvelichenie kachestva_dlya_razrabotchika
 

Ubercart -nemnogo_primerov_iz_zhizni

  • 1. Ubercart - немного примеров из жизни Moscow DrupalConf 2011
  • 2. Генеральный спонсор и организатор конференции DrupalConf 2011 При поддержке:
  • 4.
  • 6. чеки и квитанции 1. Ubercart -> uc_order -> uc_order.module -> function uc_order_actions, добавляем свою кнопку : if (user_access('view all orders')) { $alt = t(' Распечатать квитанцию', $ order_id); $actions[] = array( 'name' => t('View print kvit'), 'url' => 'admin/store/orders/kvit-ticket/'.$order->order_id, 'icon' => '<img src=&quot;'. base_path() . drupal_get_path('module', 'uc_store') .'/images/print-kvit.gif&quot; alt=&quot;'. $alt .'&quot; />', 'title' => ' Распечатать квитанцию', ); }
  • 7. чеки и квитанции 2. View -> страница - > admin/store/orders/kvit-ticket
  • 8. чеки и квитанции 3. views-view-field--ticket--page-1--title.tpl.php -> №, Наименование, Кол-во, Ед., Цена, руб., Сумма, руб. <?php $number_total = 0; $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); $class = explode('/', $alias); $total = db_query(&quot;SELECT title, qty, nid, price FROM d7gp1_uc_order_products WHERE order_id = &quot;.$class[4].&quot; ORDER BY order_product_id&quot;); while ($row = db_fetch_object($total)) { print '<tr>'; $number_total = $number_total + 1; print '<td bgcolor=&quot;white&quot;>'.$number_total.'</td>'; print '<td bgcolor=&quot;white&quot;>'.$row->title.'</td>'; print '<td bgcolor=&quot;white&quot;>'.$row->qty.'</td>'; $ed_total = db_query(&quot;SELECT body FROM d7gp1_node_revisions WHERE nid = &quot;.$row->nid); while ($ed_total_res = db_fetch_object($ed_total)) { print '<td bgcolor=&quot;white&quot;>'.$ed_total_res->body.'</td>'; } $price_total = $row->price; $price_total = explode('.', $price_total); print '<td bgcolor=&quot;white&quot;>'.$price_total[0].'</td>'; print '<td bgcolor=&quot;white&quot;>'.$row->qty * $row->price.'</td>'; print '</tr>'; } ?>
  • 9. чеки и квитанции 4. views-view-field--ticket--page-1--title.tpl.php -> Итого <?php $or_total = db_query(&quot;SELECT order_total FROM d7gp1_uc_orders WHERE order_id = &quot;.$class[4]); while ($or_total_res = db_fetch_object($or_total)) { $or_total_print = $or_total_res->order_total; $or_total_print = explode('.', $or_total_print); print $or_total_print[0]; } ?>
  • 10. блок других форм данного товара <?php // Флаг типа вывода $ my_print = false; if ($node = menu_get_object()) { // Устанавливаем ограничение на колличество выводимых сниппетом нод. $ num_nodes = 10; // ID нужного словаря. $ voc_id = 11; // 1 - нода опубликована, 0 - не опубликована. $ status = 1; // Функция вызывает термины, относящиеся к конкретной ноде и определенному словарю. $ terms = taxonomy_node_get_terms_by_vocabulary($node, $voc_id); // Если такие термины имеются foreach ($terms as $term) { $sql = &quot;SELECT DISTINCT n.nid FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.status = %d AND tn.tid = %d AND n.nid <> %d ORDER BY n.created DESC&quot;; // Получаем ID нод связанных с данными терминами $ total = db_query_range(db_rewrite_sql($sql), $status, $term->tid, $node->nid, 0, $num_nodes);
  • 11. блок других форм данного товара print '<table><tr><td><div> Другие формы данного товара</ div></td></tr><tr><td>'; // Перебираем возвращённые результаты с ID нод while ($row = db_fetch_object($total)) { // Загружаем представление $ view = views_get_view('uc_products_block_upakovka'); // Передаём ему аргумент $ view->args[0] = $row->nid; // Строим результат $ view->execute_display('block_1'); // Офрмляем результат $ output = '<table><tr><td><div>'; $output .= $view->render_field('title', 0).'<br><br>'; $output .= $view->render_field('sell_price', 0).'<br>'; $output .= $view->render_field('buyitnowbutton', 0); $output .= '</div></td><td>'; $output .= $view->render_field('field_image_cache_fid', 0); $output .= '</td></tr></table>'; // Выводим результат print $output; $my_print = true; } print '</td></tr></table>'; } }
  • 12. избавление от дублей страниц и правильная 404 страница Модуль - duplicate_pages_and_404_page : // Отсечение: NodeURL- крякозябры, NodeURL/ кракозябры, NodeURL? кракозябры. // Отсечение: TaxonomyURL- крякозябры, TaxonomyURL/ кракозябры, TaxonomyURL? кракозябры. // Отсечение: TaxonomyURL?page=1- крякозябры, TaxonomyURL?page=1/ кракозябры, TaxonomyURL?page=1? кракозябры. // Отсечение: ViewURL- крякозябры, ViewURL/ кракозябры, ViewURL? кракозябры. // Отсечение: ViewURL?page=1- крякозябры, ViewURL?page=1/ кракозябры, ViewURL?page=1? кракозябры. // Включить: SustemURL, !!! SustemURL? переменная !!!, NodeMain, NodeMain?page=1, ViewMain, ViewMain?page=1, !!! если скобки в URL !!!.// Отсечение: /?кракозябры, /? page=1- крякозябры, /? page=1/ кракозябры, /? page=1? кракозябры. // Исключить: taxonomy/term/741/0. 1. hook_init() – используемый хук. 2. $url_path = request_uri(); - URL views node . 3. $real_path = $_GET['q']; - Real URL node . 4. Pathauto – модуль хранящий URL нод сайта в специальной таблице. 5. drupal_not_found(); - выдаётся на все неподходящие адресса. 6. Customerror – модуль обрабатывающий drupal_not_found и в котором выставляется перенаправление на собственную 404.
  • 13. кастомизация формы создания товара /** * Реализация hook_form_alter(), позволяет вносить изменения в форму перед её показом. */ function delete_field_my_form_form_alter(&$form, &$form_state, $form_id){ // Если «$ form_id» равен идентефикатору нужной формы. if ($form_id == 'product_node_form') { if (isset($form['body_field'])) { // Скрываем поле «Показывать анонс в полной версии» $ form['body_field']['teaser_include']['#type'] = 'hidden'; // Изменяем размер поля «Описание» $ form['body_field']['body']['#rows'] = 1; } }
  • 14. Спасибо за потраченное время Вячеслав E-mail: sonwol@yandex.ru
  • 15. Генеральный спонсор и организатор конференции DrupalConf 2011 При поддержке: