Ubercart  -nemnogo_primerov_iz_zhizni
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Ubercart -nemnogo_primerov_iz_zhizni

on

  • 1,007 views

 

Statistics

Views

Total Views
1,007
Views on SlideShare
975
Embed Views
32

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 32

http://drupalconf.ru 23
http://www.drupalconf.ru 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ubercart -nemnogo_primerov_iz_zhizni Presentation Transcript

  • 1. Ubercart - немного примеров из жизни Moscow DrupalConf 2011
  • 2. Генеральный спонсор и организатор конференции DrupalConf 2011 При поддержке:
  • 3. Спонсоры Информационные спонсоры Сайт конференции
  • 4. дополнительные модули
    • Ordered Products Reports – отчёты по продуктам
    • Product Power Tools – кастомизация формы добавления товара
    • Simple Shipping Quotes – кастомизация доставки
    • Ubercart Views – удобные отчёты
    • YML export – экспорт в Яндекс.Маркет
    • Views: IPP – параметрическая фильтрация View
  • 5. дополнительные модули
  • 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 При поддержке:
  • 16. Спонсоры Информационные спонсоры Сайт конференции