уникальные URL для каждого этапа заказа

#
уникальные URL для каждого этапа заказа
Добрый день.

Столкнулся с такой проблемой: для отслеживания конверсии необходимо сделать уникальные URL для каждого этапа заполнения информации в корзине:

cart_1
cart_2
cart_3
cart_final

Как это можно реализовать, ведь сейчас URL 1 - просто cart для всех страниц

Заранее спасибо!
Редакция Малый Бизнес 6.7.5
#
Re: уникальные URL для каждого этапа заказа
Acca, а расскажите подробнее, зачем вам это надо? Просто для системы сбора статистики, или, например, для того чтобы шаги пользователя по корзине правильно отображались в вебвизоре?
Я делал такую штуку, но там есть нюансы.
Заказов не беру. Консультирую редко.
#
Re: уникальные URL для каждого этапа заказа
На данный момент цели 2:

1 Определить на каком этапе пользователь прерывает оформление заказа ( в частности сначала определить экран,  а потом посмотреть трекером типа вебвизора)

2 Выставить цель "Заказ " в метрике или аналитике. Сейчас не репрезентативные данные - показывает по 3 выполненные цели
Редакция Малый Бизнес 6.7.5
#
Re: уникальные URL для каждого этапа заказа
Acca, понял вас.
С целью все ок, а вот с вебвизором беда.
Он же работает только с get-параметрами, а заказ оформляется через post.
Логичная идея - переделать оформление с post на get приводит к одному очень неприятному эффекту - в результате, каждый раз при просмотре оформления заказа через вебвизор на сайте создается копия этого же заказа.

Что же касается конкретных рецептов как это сделать - я завтра доберусь до офиса и оттуда вам все выложу.
Заказов не беру. Консультирую редко.
#
Re: уникальные URL для каждого этапа заказа
Ну вот, пришло время конкретных рецептов
Условимся о следующем.
Шаги в корзине будут выглядеть следующим образом:
/cart/
/cart/address/
/cart/delivery/
/cart/pay_method/
/cart/complete/

Тогда для начала готовим к этому ТДС "Корзина". На вкладке "Настройки страницы" в начало ТДС, сразу после <?php добавляем следующий код:

<?php

// начало добавляемого кода
$url_items = array();

// last_url_part => needed POST field
$url_items['cart'] = false;
$url_items['address'] = 'step_1';
$url_items['delivery'] = 'step_2';
$url_items['pay_method'] = 'step_3';
$url_items['complete'] = 'step_4';

$last_url_item = end($GLOBALS['URL_ARRAY']);

$page_valid = false;

if (isset($url_items[$last_url_item])) {
    $need_post_field = $url_items[$last_url_item];
    if ($need_post_field) {
        // мы находимся в /cart/some_folder/
        if (isset($_REQUEST[$need_post_field])) {
            $page_valid = true;
        }
    } else {
        // мы находимся в /cart/
        $page_valid = true;
    }
}

if (!$page_valid) {
    // Элемент/группа не найдены, возвращаем 404 ошибку.
    ShowHeader404();

    // Запрещаем отдавать 200-й заголовок
    if (!defined('IS_ERROR_404')) {
        define('IS_ERROR_404', true);
    }

    $site = &singleton('site');
    $site_row = $site->GetSite(CURRENT_SITE);

    if ($site_row['site_error404']) {
        $structure = &singleton('Structure');

        $structure_id = intval($site_row['site_error404']);
        $structure_row = $structure->GetStructureItem($structure_id);

        // Если тип - страница
        if ($structure_row['structure_type'] == 0) {
            $document = &singleton('documents');

            $documents_version_row = $document->GetCurrentDocumentVersion($structure_row['documents_id']);
            $documents_version_id = $documents_version_row['documents_version_id'];

            // Текущая страница
            $kernel->set_current_page(PAGE_DIR . 'documents' . $documents_version_id .
                '.html');
        } elseif ($structure_row['structure_type'] == 1) {
            // Текущая страница - модуль
            $kernel->set_current_page(CMS_FOLDER . 'structure/Modules/Module' . $structure_id .
                '.php');
        } else {
            /* типовая динамическая страница */
            $lib_id = intval($structure_row['lib_id']);

            /* Получаем параметры типовой динамической страницы */
            $lib = new lib();
            $GLOBALS['LA'] = $lib->LoadLibPropertiesValue($lib_id, $structure_id);

            $kernel->set_current_page(CMS_FOLDER . "lib/lib_$lib_id/lib_$lib_id.php");
        }

        // Шаблон вывода для страницы
        $kernel->set_current_page_data_template($structure_row['data_templates_id']);
    } elseif (to_str($_SERVER['REQUEST_URI']) != '/') {
        header('Location: /');

        // Прекращаем выполнение
        exit();
    }
}
// конец добавляемого кода. далее текст самой ТДС без изменений

/* Создаем экземпляр класса магазина (при создании устанавливаем флаг необходимости очитстки кукисов в истину) */
$shop = &singleton('shop');

/* Идентификатор интернет-магазина */
$shop_id = to_int($GLOBALS['LA']['shop_id']);

...

Код этот проверяет, соответствует ли текущий url какому-либо шагу корзины, и если да, то передано ли ключевое поле формы. Если да, то отображается соответствующий шаг корзины, если нет - то ошибка 404.

Далее идем в раздел XSL-шаблоны. В редакторе шаблона "МагазинКорзина" дополняем значение action для формы:
<form action="{/cart/shop/path}cart/address/?step_1=1" name="address" method="POST">

Обратите внимание, что для формы от первого шага оформления нам необходимо в action явно прописать get-запрос step1=1 - это нужно для корректного показа процесса оформления в вебвизоре.

Далее в редакторе xsl-шаблона "МагазинАдресДоставки" дополняем путь action в форме и меняем метод с post на get
<form action="{/cart/shop/path}cart/delivery/" name="address" id="address" method="get">


То же самое делаем в шаблоне "МагазинДоставки", но путь для action уже будет
{/cart/shop/path}cart/pay_method/
а метод тоже get

И, наконец, в шаблоне "МагазинПлатежнаяСистема" пишем путь для action
{/cart/shop/path}cart/complete/
и метод тоже указываем get

Собственно, и все.
Заказов не беру. Консультирую редко.
#
Re: уникальные URL для каждого этапа заказа
Kotoff, большое спасибо! Передал программисту для реализации.
Редакция Малый Бизнес 6.7.5
#
Re: уникальные URL для каждого этапа заказа
Пожалуйста )
Заказов не беру. Консультирую редко.
#
Re: уникальные URL для каждого этапа заказа
Да что та не работает код!
Происходит зацикливание
#
Re: уникальные URL для каждого этапа заказа
unekt, опишите ошибку подробнее.
Заказов не беру. Консультирую редко.
#
Re: уникальные URL для каждого этапа заказа
Добрый день Kotoff!
устонавливаем код в ТДС «Корзина»
Потом
Далее идем в раздел XSL-шаблоны. В редакторе шаблона «МагазинКорзина» дополняем значение action для формы:
<form action="{/cart/shop/path}cart/address/?step_1=1" name="address" method="POST">
Потом
Далее в редакторе xsl-шаблона «МагазинАдресДоставки» дополняем путь action в форме и меняем метод с post на get
<form action="{/cart/shop/path}cart/delivery/" name="address" id="address" method="get">
и после этого корзина возрашыеться в начало а не в доставку с таким url
/shop/cart/cart/address
Авторизация