Понадобилось в уберкарте задействовать одновременно uc_option_image и uc_aac. По отдельности они вроде работают. Но вот вместе... Хотя uc_aac тоже не удалось запустить сразу. На друпал.org об этом много есть рассуждений от обновления nodewords (который у меня тоже стоял) до изменения весам модуля uc_store в системной таблице. Ошибка которая вылазила говорила об отстутсвии функции uc_price(). Как выяснилось у меня стояла не самая последняя версия уберкарта. И в моей версии просто напросто не было файла uc_price.inc, в котором и хранится эта функция.
Ну да ладно. Речь сейчас не об этом. Два этих модуля не хотят работать вместе. Решение было найдено здесь: http://drupal.org/node/712542. Выложенные по этой ссылке патчи у меня во всяком случае сработали. Попутно решил выяснить, как применяются патчи, т.к. до этого если и приходилось на них немножко смотреть, то только вручную. Теперь для себя выбрал вот этот способ применения патчей http://drupal.org/node/75790#comment-2615716 (для Windows).
Итак, модули вроде как заработали и друг с другом не конфликтуют. Но. В моем примере товар имеет атрибут цвет и каждому цвету сопостовляется соответствующая картинка. Так вот, при загрузке страницы по умолчанию выбирается какой-либо цвет, но картинка с цветом при этом не загружается. Она загружается только по выбору из select-а. Чтобы поправить сей факт пришлось немного подредактировать файл uc_option_image.js
if (Drupal.jsEnabled) { $(function(){ UCOI.init(); // start sel = $('#edit-attributes-3'); UCOI.switchImage(3, sel, Drupal.settings.UCOI.size); // end }); }
Где 3 - это номер атрибута "цвет". Не самый лучший вариант, конечно, но зато самый простой.
Есть еще один не приятный момент работы этих двух модулей. Кроме атрибута цвет, товар имеет еще и размер, при чем у размеров нет своих изображений. Поэтому при выборе цвета фотография загружается, а потом при выборе размера, фотография товара с цветом исчезает.
Чтобы этого не происходило, точно также, не особо заморачиваясь, опираясь только на номер атрибута можно дописать в том же файле:
UCOI.switchImage = function(aid, input, size) { ....... try { var images = this.images[nid][aid]; if (aid == 4) return; // вот это if ((oid=="" || images[oid].derivative=="") && image){ parentImage = image[0].parentNode; .....
Где 4 - это номер атрибута с размером товара. Т.е. при выборе размера мы не делаем перезагрузку фоток и последняя фотография товара с цветом остается.
А какие версии Друпала, Убекарта и модуля?
Drupal 6.13, 2009-07-01
Ubercart 6.x-2.2, 2009-11-18
Ajax Attribute Calculations 6.x-2.x, 2009-11-04
uc_option_image 6.x-1.4, 2009-04-21
Добрый день. не получается патч применить к файлу uc_aac. Следую вот этой рекомендации
Windows
Скачать программу PATCH: http://gnuwin32.sourceforge.net/packages/patch.htm
Устанавить (запустить Setup).
Зайти в папку установки и найти в папке bin программу patch.exe.
Скопировать patch.exe в папку с патчем и исходными файлами.
Запустить patch.exe - откроется терминальное окно.
Нажать CTRL+C - выпадаете в консоль: C:\patch>
Вот после этой команды терминальное окно пропадает, что делать дальше не пойму?
Выполнить команду:
patch.exe --binary -p0 < SA-CORE-2009-009-6.14.patch
Вместо SA-CORE-2009-009-6.14.patch нужно указать имя файла вашего патча.
Давно все это было, поэтому вспоминаю с трудом как я устанавливал. Но позволлю себе немного перевести то, что написано по приведенной мной ссылке:
1.download and extract the file to C:\Program Files\GnuWin32
Судя по всему вы скачали и распаковали.
2.double click on a downloaded patch file which you have saved in to the folder of the module you are patching
Вот этого шага я от вас не услышал. Либо вы как-то по-другому пытаетесь сделать. Мы запускаем сам файл с патчем uc_option_image-working_with_uc_aac.patch (предварительно скопировав его в папку с модулем, ну у вас он и так там лежит).
3.when Windows cannot open the file, opt to select the program from a list
С первого раза у вас, конечно, этот файл не пропатчит модуль. Вместо этого вылезет виндовое окно с выбором программы для запуска этого патча.
4.browse to patch.bat and select
Тут все должно быть ясно. Выбираем в списке выбора программ patch.bat
5.the programs run in a console window - check the output for success
Ну вроде бы и все. Если автоматом не сработает и выйдет сообщение о том, что надо указать имя файла который патчим, то ручками тогда пишем название модуля.
Спасибо. Вот по этой строчке еще непонятно, касательно загрузки картинки при загрузке страницы.
// start
sel = $('#edit-attributes-3');
UCOI.switchImage(3, sel, Drupal.settings.UCOI.size);
// end
какие параметры на свои менять и откуда брать?
Спасибо за помощь.
Можете проанализировать вот эту страницу:
http://www.gk12.ru/node/4020
В частности вот это
Отсюда и берем номер атрибута, который в данном случае равен 3.
Сделал, спасибо. И как я сам не догадался, что номер атрибута нужно в исходном коде посмотреть:-)
Еще неудобсво такое:
При подключении модуля uc_aac пропадает из селект бокса атрибута опция " Please select"
Особенно это касается выбора размера товара, ведь он не сопровождается картинкой и покупатель может не заметить необходимости выбора.
На официальном форуме Друпала эта проблема обсуждалась, но исправления нету. Я по крайней мере не нашел.
Есть какие нибудь идеи на этот счет?. Может создать атрибут " Please select" и закоментить его от выбора как-нибудь в коде или в таблице базы. И если не выбрали, то соответствующее сообщение выводить.
Спасибо.
Не знаю, не сталкивался с этим, поэтому советовать что-либо сложно. Надо окунаться в эту проблему. Помню нечто подобное было у меня, когда возился с фильтрами views.
http://www.allexx.info/drupal_hs_exposed_filter_any
Может быть как-то так же добавлять яваскриптом недостающие атрибуты.
Хотелось бы еще поменять расположение картинки атрибутов и опций в карточке товара.К примеру картинка справа -справа, опции слева. Не подскажете где задается расположение элементов? Или может свой стиль прописать?
Спасибо
Это вам возможно придется создавать в вашем шаблоне файлик node-product.tpl.php и там уже описывать расположение как вам взбредется. Но тогда придется полазить по модулям и посмотреть как там вывод инфы организован в функциях с названиями, начинающимися с theme_ :), ну и print_r($node) внутри этого файла вам в помощь.
Еще хотел, спросить. Добавление вот этого
// start
sel = $('#edit-attributes-3');
UCOI.switchImage(3, sel, Drupal.settings.UCOI.size);
// end
замедляет загрузку страницы. Как с этим можно бороться?
Ну, тут уж либо ковырять функцию switchImage и там что-то оптимизировать, либо тогда не делать загрузку картинки при загрузке страницы. Это естественно, что данный код будет замедлять загрузку, т.к. мы принудительно заставляем загружать картинку.
Отправить комментарий