CMS Drupal

Понадобилось в уберкарте задействовать одновременно 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 - это номер атрибута с размером товара. Т.е. при выборе размера мы не делаем перезагрузку фоток и последняя фотография товара с цветом остается.

Комментарии

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

А какие версии Друпала, Убекарта и модуля?

admin аватар

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 нужно указать имя файла вашего патча.

admin аватар

Давно все это было, поэтому вспоминаю с трудом как я устанавливал. Но позволлю себе немного перевести то, что написано по приведенной мной ссылке:

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

какие параметры на свои менять и откуда брать?
Спасибо за помощь.

admin аватар

Можете проанализировать вот эту страницу:
http://www.gk12.ru/node/4020

В частности вот это

<select id="edit-attributes-3" class="form-select required" name="attributes[3]">
<option selected="selected" value="29">Речной жемчуг</option>
</select>

Отсюда и берем номер атрибута, который в данном случае равен 3.

Сделал, спасибо. И как я сам не догадался, что номер атрибута нужно в исходном коде посмотреть:-)

Еще неудобсво такое:
При подключении модуля uc_aac пропадает из селект бокса атрибута опция " Please select"
Особенно это касается выбора размера товара, ведь он не сопровождается картинкой и покупатель может не заметить необходимости выбора.
На официальном форуме Друпала эта проблема обсуждалась, но исправления нету. Я по крайней мере не нашел.
Есть какие нибудь идеи на этот счет?. Может создать атрибут " Please select" и закоментить его от выбора как-нибудь в коде или в таблице базы. И если не выбрали, то соответствующее сообщение выводить.
Спасибо.

admin аватар

Не знаю, не сталкивался с этим, поэтому советовать что-либо сложно. Надо окунаться в эту проблему. Помню нечто подобное было у меня, когда возился с фильтрами views.
http://www.allexx.info/drupal_hs_exposed_filter_any
Может быть как-то так же добавлять яваскриптом недостающие атрибуты.

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

admin аватар

Это вам возможно придется создавать в вашем шаблоне файлик node-product.tpl.php и там уже описывать расположение как вам взбредется. Но тогда придется полазить по модулям и посмотреть как там вывод инфы организован в функциях с названиями, начинающимися с theme_ :), ну и print_r($node) внутри этого файла вам в помощь.

Еще хотел, спросить. Добавление вот этого

// start
sel = $('#edit-attributes-3');
UCOI.switchImage(3, sel, Drupal.settings.UCOI.size);
// end

замедляет загрузку страницы. Как с этим можно бороться?

admin аватар

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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".