Перейти к содержанию
Форум поддержки пользователей VamShop

Сортировка модулей оплаты - не работает


Рекомендуемые сообщения

Всем установленным модулям присвоен номер, и не действует. Сортировка способов доставки - работает. А вот номера порядка сортировки модулей оплаты действуют только на порядок чекбоксов в "Доставка-оплата" . Пробовал на шаблоне vamshop - та же история. версия 1.55 , обновление патчем.

Ссылка на сообщение
Поделиться на другие сайты

Действует, сам сортируют модули оплаты на vamshop.ru у себя.

Может не у всех модулей выставили порядок сортироки, поэтому те, у которых остался 0 порядок вылезли наверх.

Ссылка на сообщение
Поделиться на другие сайты

Саш, вот скрины для примера по этой ситуации. оплата сребанком должна быть последней и остальное тоже не так, как на странице выбора оплаты. Модуль вебмани не участвует в выборе, у него в настройках стоит "Разрешить модуль WebMoney-False" но если его просто удалить - мерчант не работает, выдается ошибка "Warning: constant() [function.constant]: Couldn't find constant MODULE_PAYMENT_WEBMONEY_ALLOWED in /home/u38702/tv-peopleru/www/includes/classes/payment.php on line 73 "

post-3895-1304838316,233_thumb.jpg

post-3895-1304838316,3789_thumb.jpg

Ссылка на сообщение
Поделиться на другие сайты

Вот что получается - если удалить какую-то из зависимостей "оплата-доставка", а потом опять ее поставить - то выбор оплаты сортируется как надо. Кэш выключен, кэш браузера тоже сбрасывал. Интересно, что сортировка способов доставки работает "на лету", то есть достаточно обновить страницу. Наверно можно считать вопрос закрытым... может у меня что не так, попробую поставить на тестовом сайте скрипт с нуля, отпишусь.

Ссылка на сообщение
Поделиться на другие сайты

Зарегистрируйте ошибку на vamshop.ru/bugs

Обязательно напишите про доставку-оплату.

Пока не знаю как исправить, буду смотреть к выходу следующей версии.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 years later...
  • 2 years later...
  • 2 years later...

Решается доработкой модулей оплаты и класса payment

В модулях оплаты в метод selection() добавляем примерно так

	function selection() {
		return array ('id' => $this->code, 'module' => $this->title, 'description' => $this->info, 'sort_order' => $this->sort_order);
	}

'sort_order' => $this->sort_order

В класс payment добавляем в метод selection()

вместо

return $selection_array;

вставляем

    $out = array();

    foreach( $selection_array as $item ){

        if ( count($out) == 0 ) {
            $out[] = $item;
        } else {

            foreach ($out as $key => $val) {
                if ( $item['sort_order'] <= $val['sort_order']) {
                    array_splice($out, $key, 0, array($item));
                    break;
                } else {
                    if ( $key == count($out)-1 ) {
                        $out[] = $item;
                        break;
                    }
                }

            }
        }

    }
        
        return $out;

Вроде как тогда работает.... Поправьте, если есть более красивое решение.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...