интернет-магазин, несколько вопросов

Главные вкладки

Аватар пользователя ejikkkk ejikkkk 3 сентября 2011 в 17:08

Делаю магазин на базе сборки оупенсторе, но в друпале разбираюсь плохо, в связи постоянно возникают какие-то сложности, которые без вашей помощи не преодолеть. У меня есть несколько вопросов, может с чем сталкивались: 1) Можно ли реализовать аякс корзину на основе виевз ? Аякс карт ставил, но возможности маловаты. Если нет, то как ограничить число товаров, отображаемое в корзине? 2)Аякс карт и Аякс драйвен карт - это одно и то же? Если нет, дайте, пожалуйста, ссылка на скачкавние второго, сам не нашел. 2) Есть ли модуль, меньший кнопку добавить в корзину (или только ее класс) после нажатия? Т.е было Хочу это, ткнул, стало хочу еще. Если нет, то как на пхп задать условие, что данный товар уже есть в корзине? Необходимо сделать это как в каталоге, так и в файле ноде-продакт.райт.тпл.пхп. Код будет разный? 3) существует ли модуль, реализуящий эффект перелетания товара в корзину при нажатии на добавить в корзину?

Комментарии

Аватар пользователя Erly Erly 3 сентября 2011 в 21:14

"Ламер" wrote:
найми разраба, не парь мозг себе и людям

Сказано как то не политкоректно, но правильно.
Есть дугой путь - стать веб-разрабом.

Аватар пользователя ejikkkk ejikkkk 3 сентября 2011 в 21:47

а можно ли вместо шоу_карт_баттом вставить универсальный хтмл код, который подходил бы для любго товара? Код из исходника не работает, добавляет один и тот же товар на любой странице. Хоть логику объясните по вышеуказанным вопросам, как это примерно сделать можно, бог с ним с кодом, вы ж тут опытные разработчики, некоторые даже с хх стажем

Аватар пользователя Erly Erly 4 сентября 2011 в 0:11

"Ламер" wrote:
самому учица ни у всякава выйдет.
я вот 2, 5 года втыкался и кроме как модули ставить ничему не научился. а у меня заметь вышее оббразованье института не гуманитарного, а математического.
друпал он для гениев или для лютых инфернальных учоных

Ну... Толя, ты мне льстишь... значит я либо гений, либо лютый инфернальный учоный, либо (даже боюсь этого предположить) в себе сочленил первое со вторым.
В друпале, в отличие от многих других CMS, есть очень стройная логика и идеология, поняв которую, далее оч. легко работать.

Аватар пользователя Xermit Xermit 4 сентября 2011 в 1:06

попунктно
1) можно и на основе views, что внутри корзины отображается темизируется все, и какую именно часть корзины вам нужна на основе views, то что отображается такое маленькое или когда человек уже в оформление заказа заходит или по ссылке в саму корзину, когда там таблица выскакивает со всем что он в корзину положил?
2) вывод товаров в корзине модуля uc_ajax_cart темезируется, но правда в режиме кэширования для анонимусов, в других режимах не знаю, но думаю также
2) по поводу кнопки, ручками на js можно заблокировать кнопу добавить в корзину пока ваш товар летит в корзинку и не получено ajax подтверждение что товар добавлен, тогда дважды кликнув по ней добавится только один товар, а не два. js поможет и кнопку уменьшить и остальное.
3) не знай, есть ли, модуль не нашел, пришлось самому сделать. лятает. модуль с летящим товаром в корзину имеет смысл только если корзина типа ajax :), когда страница не перезагружается.

могу заранее добавить еще 5-й пункт, придется делать ajax корзину которая умеет для анонимных пользователей в режиме кэширования drupal работать. Но сочетание модуля uc_ajax_cart + ваш код темизации решит и эту проблему.

PS: знание php, css, js, drupal api, theming, hooking, templating обязательны.

Аватар пользователя ejikkkk ejikkkk 4 сентября 2011 в 2:05

На основе виевз нужна корзина, которая будет отображаться в блоке при просмотре каталога товаров и обновляться без перезагрузки страницы. Аякс карт да, темизируется в аякс.карт.тпл.пхп. Но там только четыре допустимые переменные, а мне нужены еще. В частности, нет переменной стоимость товара, есть только общая стоимость данного вида товара(цена одного умноженая на колчество), плюс никак не выходит заменить отображение грн на руб, а в виевз это делается в два клика. В общем, на виевз удобней и понятней для меня, поэтому хотелось бы на нем это реализовать. Вот допустим сделал я блок с выводом всего необходимого, как же сделать чтоб обновлось на аяксе? Я поэтом и спрашивал про аякс дивен карт, он вроде, как я где-то читал, позволяе это реализовать, но самого модуля нет ни на д.орг, ни на уберкарт.орг. На счет корзины, которая работает в режиме кэширования, есть модуль, который это реализует на проме аякс карт, название забыл, но он точно есть. А ваш ПС меня пугает:)

Аватар пользователя ejikkkk ejikkkk 4 сентября 2011 в 6:00

Думаю смогу сделать летающие товары, скрипт на аяксе нашел, но чтобы он работал, необходимо обернуть изображение в див и задать ему класс, но что-бы этот класс не повторялся у других товаров в каталоге. Другими словами, нужна переменная, наприме ид товара. Такая переменная есть вообще? ид ноды не подходит, он не выводится в этом шаблоне. Я пробовал в виде, который выводит страницу продактс, задать у поля Изображение префикс и суффикс что-то типа див ='имя' и /див, но при просмотре исходного кода заметил, что они не выводятся, почему?

Аватар пользователя Xermit Xermit 4 сентября 2011 в 12:13

модуль для режима кэширования может и есть, но только вот опять где же он и стабильно ли работает, да и дописывать все равно надо, блок корзины вы ведь свой хотите на основе views. Я делал на основе uc_ajax_cart, так как его api оказалось более менее вменяемым и логичным чтобы обойтись чистой темизацией и хуками в tamplate.php без изменения самого модуля кажется и в режиме работы друпала кэширования для анонимусов.

к тому же советую обратить внимание на то сколько сайтов использует тот или иной модуль очень не хочется в случае обновления оказаться в ситуации когда модуль умер.

насчет идентификации своим классом летающего товара в корзину, у меня летит когда жмут кнопку добавить в корзину, как правило кнопка находится в форме, поэтому:

jQuery14('form input.node-add-to-cart').click(function()
  {
    var form_id = jQuery14(this).parents('form').eq(0).attr('id');
....

далее подобно можно добраться до div-а в котором у вас описание конкретно этой единицы товара, на случай если у вас таблица где туча товаров, и потом спустится до картинки, так получите изображение и скормите его тому скрипту.

Аватар пользователя Xermit Xermit 4 сентября 2011 в 12:20

содержимое корзины у меня собирается так, насколько помню это почти точная копия того что в uc_ajax_cart лежит, никто не мешает вам в items напихать все что угодно, а уже в
хуке uc_cart_block_content использовать это чтобы выводить как вам надо.

function cart_content()
{
  $cart_content = uc_cart_get_contents();

  //drupal_set_messages("hehe:" .print_r($cart_content, TRUE));

  $product_count = count($cart_content);

  $items = FALSE;
  $item_count = 0;
  $total = 0;

  if ($product_count) {
    foreach ($cart_content as $item) {
      $display_item = module_invoke($item->module, 'cart_display', $item);

      if (!empty($display_item)) {
        $items[] = array(
          'nid' => $display_item['nid']['#value'],
          'qty' => t('qty×', array('qty' => $display_item['qty']['#default_value'])),
          'title' => $display_item['title']['#value'],
          'price' => $display_item['#total'],
          'desc' => isset($display_item['description']['#value']) ? $display_item['description']['#value'] : FALSE,
          //'not_ship' => isset($item->not_ship) ? true : false,
        );
      }

      if (!isset($display_item->not_ship))
      {
        $item_count += $item->qty;
        $total += $display_item['#total'];
      }
    }
  }

  // Build the item count text and cart links.
  $item_text = format_plural($item_count, '<span class="num-items">count</span> Item', '<span class="num-items">count</span> Items');

  $summary_links = array(
    'cart-block-view-cart' => array(
      'title' => t('View cart'),
      'href' => 'cart',
      'attributes' => array('rel' => 'nofollow'),
    ),
  );

  // Only add the checkout link if checkout is enabled.
  if (variable_get('uc_checkout_enabled', TRUE)) {
    $summary_links['cart-block-checkout'] = array(
      'title' => t('Checkout'),
      'href' => 'cart/checkout',
      'attributes' => array('rel' => 'nofollow'),
    );
  }

  $block = array(
    'subject' => theme('uc_cart_block_title', $title, $icon_class, $collapsible),
    'content' => theme('uc_cart_block_content', $help_text, $items, $item_count, $item_text, $total, $summary_links),
  );

  return $block;
}