Ajaxify Node Basket -2012: Apocalypse Edition

В канун конца времен, когда самое время позаботиться о своей поблекшей карме, не можно мне было более оставаться безответным к гласам вопиющим и взывающим с портянки комментариев. Гласа си многое чего просили. Но громче всех была мольба о добавлении нехитрой фичи: возможности простого изменения количества при редактировании содержимого корзины путем ручного ввода оного в соответствующее поле. В данной редакции модуля сие было воплощено.

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

До переноса настроек отображения блока корзины и ее страницы в отдельные файлы-шаблоны дело пока не дошло. В чем каюсь с извинениями пред всеми, кто этого ждал. Тем более и кстати, что на момент написания этих слов еще не кончилось "прощенное воскресенье".

Теперь от кармы - к модулю. Дабы не заставлять в первый раз "наткнувшихся" на сабж искать информацию о настройках по разным публикациям сайта, повторюсь и опишу работу с модулем еще раз.

Страница настроек

После включения модуля, в меню настроек сайта появится новый пункт: Настройки Node Basket(не дословно так, но мимо не проскочите)). При заходе на страничку по данному пункту(admin/settings/nodebasket) откроется вам примерно такой вот вид:

Node Basket: страница настроек.

Тут вам будет предложено отметить галочками те из существующих типом нод, которые модуль будет считать "своими".

Выбрали. Сохранили. Видим такое:

Node Basket: страница настроек с уже выбранноми типами нод для модуля.

Предлагается следующее, в порядке отображения на странице (после выбора типов):

1. Снять галочку или оставить отмеченным чекбокс с опцией варианта отображения кнопки добавления ноды в корзину. Если отмечено, то кнопка появиться под основным текстом у каждой ноды(настроенного типа, разумеется). Если же в планах выводить эту кнопку своим хитрым методом (через вызов в файле шаблона ноды конструкции drupal_get_form('nodebasket_nodeviewform', $node)), то опцию следует отключить.

2. Решить - нужно ли вам отображение на странице редактирования пользователем своей корзины поле с изменяемым количеством для каждой из отложенных в корзину нод. Если решили, что надо, то оставляем, как есть, в противном случае - совершаем противоположное действие.

3. Выбор поля(модуля Content Construction Kit (CCK)) с ценой продукта. Из уже существующих. Отобразиться, если в выбранных типах нод такие поля присутствуют и подходят в качестве "ценника". Что делать понятно, да? Идем дальше.

4. Последним пунктом настроек: поля для ввода суффикса цен. Поясню: этот суффикс будет добавлен к цифрам "ценника". Если при настройке поля на страницах редактирования типов нод вы уже подобное указывали, то для нашего модуля надо сделать это еще раз. При взаимодействии с CCK-полями Node Basket оперирует лишь их значениями('value'), не отформатированным видом, от того и нужда в дублировании суффикса.

Вот с настройками и все.

Кнопка добавления в корзину при построении "вида" (модулем Views)

Если возникнут вопросы по кнопке для Views, читаем тут. Не вижу с сим сложностей, дабы пересказывать по-новой.

Демонстрация работы модуля

На все оставшиеся возможные вопросы по работе с модулем, думаю, лучше слов ответит наглядная демонстрация доступного функционала на "живом" сайте (ссылка ниже).

Dalay

Комментарии

А как сделать, чтобы отображалось не все содержимое, а просто картинка с надписью "Содержимое вашей корзины (n)"

Спасибо...сделал...))

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

В версии для 6-ки - только через изменение theme_nodebasket_basketview(). Пример приводил выше.

Спасибо огромное!!!

Можете подсказать как добавить еще одно поле для цены второй...по сути тоже самое, только цена другая и все....в одном месте я беру розничную, в другом оптовую....или код слишком много переписывать придется?в настройках модуля я добавил форму вторую чтобы выбирать значения....а как дальше не пойму...

...или код слишком много переписывать придется?

Да, именно так). Логика модуля другая.

А нет случайно версии без ценника?я бы посмотрел как она добавлялась и попробовал добавить еще одно поле....

Охх, уважаемый, примораживать начинаете. Коммерс уже поставьте и будет Вам счастье.

И придется заново статьи добавлять в него? если там уже много материала добавлено?или не придется?

Блин...ну пожалуйста...объясните как добавить ещё одно поле для цены...ведь по сути она же будет делать тоже самое как и обычная цена просто будет браться с другого поля...

Скажите пожалйста а можно ли текст обычный написать на странице корзины внизу таблицы заказов?

Подскажите как избавиться от &quot в заказе на электронной почте?? (у меня в названии товара есть ковычки...)

Замените в nodebasket.module, строка 658:
check_plain($v['title'])
на
$v['title']

Спасибо.. уже нашел)))

Здравствуйте, Dalay!
Вы не подскажете как в этом прекрасном модуле добавить поля в оформлении заказа?
Что-то не могу найти ответ на этот вопрос в коментах.

Так же, как Вы их добавляете к другим типам нод, посредством прекрасного модуля Field UI из ядра Друпала.

На 6-ке не нашел такого модуля.
Сейчас установлю.
Я в вопросе имел ввиду немного другое - что представляет из-за себя страница формления заказа?
Я думал что это вьювс, но это не он. То есть где искать эту страницу, чтобы потом отредактировать?

Тьфу не вьювс, а вэбформ!

Да причем тут вэбформ, Бог с Вами.

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

С помощью чего добавлять понял. Не понял опять же про страницу оформления заказа. Куда доблять поле - это тип материала или где искать эту страницу?

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

Спасибо за ответы!!!

Добрый день. Подскажите пожалуйста как реализовать такое: необходимо чтобы одновременно было две корзины на странице, одна вверху, другая снизу. Но добавление и удаление товаров из них надо чтобы было через ajax, без перезагрузки страницы. Сейчас возможно только чтобы одна из них работала через ajax. Какие есть варианты, прошу помощи!

Текущая реализация модуля не предпологает использование на одной странице более одной корзины.

А есть возможность кидать в корзину товар в количестве несколько штук?

Подскажите как реализовать в оформлении заказа, чтобы была выборка физ.лицо и юр.лицо, если выбрано юр. то добавляются еще дополнительных несколько полей. В D7 есть #states, как быть с D6?

Ну если с JS у Вас совсем никак, то ставьте дополнительные приблуды.