Приветствую специалистов по Commerce и Drupal. Тестовый сайт: http://dev.stoleshnikov-delivery.ru/catalog/frukty-ovoshchi
Обыкновенная вьюха c аргументами как в Taxonomy term выводит товары от Commerce.
После того, как переходишь на страницу пейджера, по кнопке "Добавить в корзину" пишет ошибки:
[{"command":"settings","settings":{"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"bartik","theme_token":"OD4hEQ9RAG382XFk_aopA80nkCY3IWk66nDUFNhArcg"}},"merge":true}]
Если отключить AJAX во вьюхе - все работает.
Это так и должно быть?
А как сделать чтобы и с AJAX работало?
Комментарии
Корзика тоже аяксовая? Я уже не помню точно, лечится это или нет, но на восьмёрке такая же фигня))) поэтому я обычно отключаю аякс с этих вьюх.
Аяксовая корзина отключена. Специально на тестовом сайте поотключал много, чтобы исключить влияние сторонних модулей.
Насколько я понял народ сообщает о том же что и я:
https://www.drupal.org/project/commerce/issues/2185239
https://www.drupal.org/project/commerce/issues/1294164
Кто-то пользуется этими решениями?
$base (basePath) прописан в settings?
basePath в settings.php не вижу.
Прописал: $base_url = 'http://www.dev.stoleshnikov-delivery.ru'; - не помогло
Да оно, только почему с www?
Поставил без www![Sad](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/sad.gif)
$base_url = 'http://dev.stoleshnikov-delivery.ru';
Не работает
Причём тут basePath? В ишью написано, что проблема в том, что экшн у форм - урл текущей страницы, а при отдаче контента аяксом вьюса текущая страница - это /views/ajax. И там в самом коллбэке стоит проверка, что если запрос пришёл не от аяксового вьюса, то выкидывается экзепшн. И тут basePath меняй, не меняй - толку не будет.
Как вариант, всё-таки попробовать поставить аяксовые корзинки, т.к. в семёрке у аяксовых форм экшн всегда /system/ajax, а не текущая страница.
С аяксовыми корзинами тоже не работает. Я специально все отключил, чтоб заработало хотя бы без аяксовых корзин.
А в логах что?
Где их глянуть? У вас это работает на страницах AJAХ пейджера?
Самопис
https://www.drupal.org/project/commerce/issues/2185239 #6
решает проблему помещения в корзину на страницах ajax пейджера.
if (strpos($form_id, 'commerce_cart_add_to_cart') !== FALSE) {
$query = drupal_http_build_query(drupal_get_query_parameters());
$form['#action'] = function hook_form_alter(&$form, &$form_state, $form_id) {
if (strpos($form_id, 'commerce_cart_add_to_cart') !== FALSE) {
$query = drupal_http_build_query(drupal_get_query_parameters());
$form['#action'] = base_path() . current_path() . '?' . $query;
}
}
. current_path() . '?' . $query;
}
}
Тут действительно встречается base_path(), но правки settings.php (мне) не помогли.
Также установил views_load_more и этот патч
https://www.drupal.org/project/commerce/issues/2185239
Ботанирую.
Ну ты ж смотри, здесь к base_path() добавляется current_path(), который как раз влияет на отправку формы.