Обновление Ajaxify Node Basket: версия с «ценником»
Данное обновление модуля основой своей посвящено теме многочисленных просьб от веб-трудящихся - установление и отображение стоимости товара/продукта в корзине. Теперь у модуля Node Basket такая опция появилась. В качестве цены продукта берется значение CCK-поля, определенного в настройках модуля.
О настройке поля с ценой
Возможность назначить ценником нужное поле появиться на странице настроек модуля сразу же после назначения определенного типа(типов) материала продуктом.

В выпадающем списке вы можете выбрать одно из уже созданных полей «цифровых» типов float или integer. В списке будут отображены только те поля, что принадлежат типу(или типам) материала, уже назначенному, как продукт.
Помимо выбора поля с ценой можно, при желании, так же задать и суффикс, добавляемый к значению поля при отображении содержимого корзины. Настройки суффиксов, определенные при создании нового поля для типа для Node Basket не действительны: посчитал, что «рентабельней» внутри модуля будет иметь свои собственные суффиксы для цены.
«Кнопка для Views».
Ужаснувшись запросам, что генерирует Views с подачи модуля Views Custom Field, добавил в Node Basket «вьюсовы» обработчики отображения кнопки добавления в корзину для нод при формирования «вида». При манипуляциях с настройкой и добавлением полей в Views кнопка «добавить в корзину» может отныне быть обнаружена в группе «Node»(или «Материал», ежели ваши Вьюсы подверглись обрусению):

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


Пожалуй, все. Приятных экспериментов в деле созидания. И напомню, что прием багов и замечаний по модулю, в комментах или мылом, ведется круглосуточно и без выходных.
Прикрепленные файлыКомментарии
Публикации с похожими темами
- Ajaxify Node Basket. Новая версия модуля корзины для нод
- Node Basket: Модуль корзины для нод. Drupal 6
- Сниппет для вывода анонсов нод определенного типа (с пейджером и без)
- jQuery: Делаем сворачивающиеся блоки в теле ноды
- Вывод списка последних нод, связанных с определенным словарем.
- О наиболее простом варианте (по мнению автора) добавления изображений в ноды
- Вывод заголовков нод, содержащих те же термины, что и текущая, открытая нода.
Спасибо! Буду дорабатывать :)
Добавил возможность «внедрения» поля кнопки для нод в Views. Описание выше дополнено и архив с файлами, соответственно, обновлен.
за модуль большое спасибо! давно искал...
Заметил несколько глюков
1) история покупок вылазит за приделы блока
2) картинки корзины не правильно выводятся (где-то криво, где-то налазят на текст).
3) третий глюк более серьезный - так сказать конфликт с модулем viewscarousel. при добавлении в корзину карусель слетает (перестает отображаться)
Первых два так пустяки - решаются быстро. с третьим уже проблема.
И на будущее. Хотелось бы увидеть в следующих версиях возможность скрыть блок корзины если она пуста. Сейчас сделал с помощью пхп фильтра но появились глюки - иногда пропадает полностью.
А так модуль супер!
Спасибо за внимание к модулю.
По глюкам:
1) и 2) вполне ожидаемы - не может быть, естественно, универсальных css-правил, следуя которым отображение будет одинаковым с любыми темами и в любых браузерах. Стили отображения для модуля добавлены лишь исходя из презентационных целей, и предполагается, что для каждой отдельно взятой темы они будут адаптироваться к оной мозолистыми руками сайтоваятеля.
3) Собственно, модуль писался «под Друпал», а не под модуль Viewscarousel.:) Который конфликтует много с чем. Попробуйте рецепт из этой темы: в файле viewscarousel.js модуля найдите строчку:
и замените ее на:
"1) и 2) вполне ожидаемы - не может быть, естественно, универсальных css-правил, следуя которым отображение будет одинаковым с любыми темами и в любых браузерах. Стили отображения для модуля добавлены лишь исходя из презентационных целей, и предполагается, что для каждой отдельно взятой темы они будут адаптироваться к оной мозолистыми руками сайтоваятеля."
Править нужно nodebasket.css, правильно ли я догадался?
Лучше делать это в css-файлах темы.
Спасибо за скорый ответ.
да модуль Viewscarousel глючный... ссылки не помогли... мне удалось выйти из положения грубым методом- закоментировал строку $('#basket-block').html(data.getbasket).animate({ opacity: 1 }, 500)
Честно говоря я в скриптах ноль.. сам программист с++, с пхп еще разобраться могу, но дальше не гугу.
модуль очень полезен. сейчас дорабатываю его под себя в моём случаи должно быть несколько продавцов, но это уже дело техники.
Буду следить за обновлениями модуля а сайт в закладки.
Спасибо огромное за модуль!
Можно ли при оформлении заказа ввести произвольное количество, например, 150 кг или 20 штук?
Ну если только в комментах к заказу.
А принципиально добавить возможно?
Простой ввод числа в поле Количество. Или через модальный диалог, маленькую формочку.
Я новичок, и бегло не могу это оценить.
P.S. Будет ли версия модуля для Drupal 7?
Почитал впечатления о Drupal 7, понравилось.
Ну почему ж нельзя то, модуль с открытым кодом, вникайте в суть и творите.
Под 7-ку когда-нить будет, скорее всего. Пока же как рабочую среду для создания серьезных ресурсов рассматривать новорожденную ветку несерьезно.
Еще про формат номера телефона.
Пробовал ввести в формате (код) 123-4567 - "неправилььный формат номера телефона"
Но ведь такой формат привычен для обычных пользователей.
Валидация этого поля регэкспом чекается, странно, что ваш формат не проходит:
$regex = "^[0-9\-\(\)\ \+]+$";
Попробовал подставить свой "-" - не помогло.
Почитал статью Регулярные выражения — Википедия
Подраздел "Традиционные регулярные выражения в UNIX":
шаблон DNS-имени, куда могут входить буквы, цифры, минус и точка-разделитель: [-0-9a-zA-Z.];
По аналогии поставил:
$regex = "^[-0-9\(\)\ \+]+$";
Заработало! :)
P.S.
А что означает слово "dalay" в начале модуля в комментариях?
Погуглил, нашел лишь Dalai - Далай [Лама]
Пропустил правило относительно минуса:
Чтобы добавить символ - в набор, его следует поместить туда первым или последним. Например:
шаблон DNS-имени ...
Может, у меня старый php
Или такой php, где используется лишь
"Расширенные регулярные выражения в стандарте POSIX" (подраздел из той же статьи в Вкикпедии)
Насчет старый это очень врядли, функция ereg() поддерживается в PHP еще с 3 версии. Возможно, POSIX в PHP не включен, но это как то уж очень маловероятно.
Качните программку Regex Coach(линк на версию под линух) и балуйтесь с регэкспами вволю.
пс
Шутку про «что означает слово "dalay" в начале модуля в комментариях» не оценил.
Dalay, спасибо!
Прошу извинить, был невнимателен. В e-mail оповещении заметил и понял, что это Ваш ник.
Извините!
:)
> Качните программку Regex Coach(линк на версию под линух) и балуйтесь с регэкспами вволю.
Под Ubuntu не пошла, зато смотрю ее документацию.
А для Ubuntu нашел через Центр приложений Kiki, правда, на Pythone (кажется), а не на Lisp'е.
Ну не пошла, забейте, других подобных немерянное количество. Например для файерфокса плагин.
Спасибо за плагин!
Подписался на комментарии
Заметил, что на странице Корзина "ломается" 1-я строчка footer'а.
Вот черт его ведает о чем идет речь. Как девочка ломается? Тогда дайте ей созреть, даст сама.
FF 3.6.13 Нетбук, разрешение 1024х600, тема Marvin, Drupal 6.19 Можно добавить скриншот?
Вышел из положения, добавив в Footer message пустую строку в начале.
Часть 1-й строки Footer message (.admin/settings/site-information) на странице /basket размещается в строке перед логотипом корзины и ссылкой "Оформление заказа", оставшаяся часть Footer message на следующей строке.
Проверьте в Гарланде. Если тот же баг, то да, дайте скрин глянуть(что бы ссылка в комментах добавилась поставьте перед http какой-нить символ, например так: __http://йа_адрес_ссылки).
В Garland с Footer Message без проблем.
Но ссылка на корзину с небольшим багом (Фрагмент скриншота в Garland _zalil.ru/30331173 )
В Marvin (1280 х 1024 и 1024 х 600) еще один баг.
В блоке "Корзина" ссылка "История уже оформленных Вами заказов" заползает на следующий блок.
(Фрагмент скриншота _zalil.ru/30331454)
_ убрать
Ну какой же это баг. Вот тут человеку уже отвечал на подобное, справедливо и для вашего случая.
Спасибо. Извините, пропустил.
Спасибо Вам большое за модуль. Но возникла следующая проблема:
Сайт у меня на двух языковых версиях (русская и английская версия), под администратором блок ваша корзина отображается правильно в обеих версиях, а вот под анонимным пользователем при обновлении страницы в английской версии, блок корзина возвращает русские строки.
С чем может быть связано?
при отключенном кеше все нормально... Есть варианты?
На сайт дайте глянуть.
В опере при обновлении сразу появляется надпись Your Basket is Empty, но потом меняется на русскую и если сделаете заказ в английской версии то сразу все нормально, но при обновлении все строки и ссылки опять меняются на русские.
Да, согласно текущей реализации модуля так и должно происходить. Медитирую... Исправлю.
Удачной Вам нирваны ;)
И нафиг мне тогда будут нужен этот друпал?
xD тогда экстаза после удачно проделанной работы с Drupal'ом)
Ладно, поеб...мся
Вот, опробуйте. Пока не обновляю «основной» архив, надо потестировать с различными вариантами включения мультиязычности, с вашим же все должно работать исправно.
Спасибо за проделанную работу. Обновил полностью все файлы, но эффект абсолютно тот же :(
http:_//zgw.zet-media.com/en/content/production
Допишите в самом начале функции nodebasket_preprocess_page()(файл nodebasket.module, стр. 174):
global $language;зеванул обьявление
http_://zgw.zet-media.com/en/content/production
кеш включил. Смотрите
День добрый!
Спасибо за модуль! Подскажите пож. в какую сторону копнуть чтобы добавить на страницу с выпадающий списк с опциями (белый, черный, красный...)и выбранная опция отобразилась в корзине
Если мы говорим о Друпале, то разве не очевиден ответ? - в сторону мануалов по Drupal API, куда ж еще.
Спасибо за модуль, Dalay! Очень полезная вещь :)
У меня возник вопрос (В PHP я слабак), можно ли каким-то образом при заказе отображать CCK поле с размерами одежды, например XL 42-46, сложно ли это будет интегрировать в модуль?
Т.е. например имеется тип контента - товар, а в нем есть ССК поле text (select list), а в нем указаны размеры XL 42, XL 46. Когда админ создает ноду типа товар, он может указать несколько размеров, т.е. XL 42 и XXXL 48 например. Можно ли сделать чтобы на странице оформления заказов отображался этот селект лист(с размерами, выбранными админом сайта) т.е. с доступными размерами?
Спасибо)
За модуль пожалуйста. По существу заданных вопросов: боюсь, что без мало-мальских знаний PHP и Drupal API(или без изучения оных) нельзя.
Не могли бы вы наставить меня на путь верный? Можно ли сск поле вывести в форме заказа таким образом
print $fields['field_razmer']->content;Скопируйте из модуля в template.php своей темы код(целиком) функции theme_nodebasket_basketview($is_block = NULL). Переименуйте ее в НАЗВАНИЕ_ТЕМЫ_nodebasket_basketview($is_block = NULL). Затем разберитесь с «куском» в коде скопированной функции theme_nodebasket_basketview($is_block = NULL), где формируются табличные данные для отображения в блоке или на странице корзины, и добавьте в нужное место(в код скопированной и переименованной функции theme_nodebasket_basketview($is_block = NULL)) свой код.
ps. Код для вывода значения cck-поля(для справки):
//Или
print $field_НАЗВАНИЕ_ПОЛЯ[0]['value']; //Выведет «тупо» значение без «форматирования» и суффиксов/префиксов(если таковые есть).
function emma_nodebasket_basketview($is_block = NULL) {
print $field_НАЗВАНИЕ_ПОЛЯ[0]['value'];
}
Вот так можно выводить?