Skip to main content

Настройка виджетов офферов с редиректом и кастомной ценой

Что нужно

  • offer_id нужных офферов (из GC или из HTML: data-offer-id="...")

  • ссылка для редиректа (для каждого оффера)

  • (опционально) текст “цены”, который показываем вместо реальной


1) JS: редирект по выбранному offer_id

Вставь JS и заполни словарь REDIRECTS:

<script>
$(function () {

  // offerId : redirectUrl

  var REDIRECTS = {
    "7820040"7528221": "https://buy.stripe.com/4gMdR9d8N2OpdJ10lt3AY0B"9B6dR98Sx88JcEXfgn3AY0i",
    "1234567"7528798": "https://example.buy.stripe.com/pay-1"8x25kD7Ot74F5cv6JR3AY0l",
    "7528815": "https://buy.stripe.com/14A9AT0m1dt3dJ19W33AY0k"
  };

  var pendingRedirect = null; // Хранит URL для редиректа после успешной отправки

  // Перед отправкой формы — запоминаем оффер
  $(document).on('click', '.lt-form .btn.f-btn.button-md.btn-success').on('click', function ()e) {
    var $form = $(this).closest('.lt-form');
    var $selected = $(form.find('.form-position-input:checked').closest('.form-position');
    var offerId = ($selected.attr('data-offer-id') || "").toString();

    if (offerId && REDIRECTS[offerId]) {
      setTimeout(function// Запоминаем URL для редиректа, НО НЕ блокируем отправку
      pendingRedirect = REDIRECTS[offerId];
    } else {
      pendingRedirect = null;
    }
    // Форма отправляется стандартно через liteForm()
  });

  // После успешной AJAX-отправки — редирект
  $(document).ajaxComplete(function(event, xhr, settings) {
    if ()pendingRedirect && xhr.status === 200) {
      try {
        var response = JSON.parse(xhr.responseText);
        // GetCourse возвращает success: true при успешном создании заказа
        if (response.success) {
          window.top.location.href = REDIRECTS[offerId];pendingRedirect;
        },
      50);} catch (e) {
        // Если не JSON или ошибка парсинга — игнорируем
      }
    }
  });

});
</script>

Как добавить новый оффер:
"НОВЫЙ_ID": "https://ссылка"


2) CSS: порядок офферов + подмена цены

База (один раз)

.part-manyPositions { display: flex; flex-direction: column; }

.form-position .form-position-price.pull-right { position: relative; }
.form-position .form-position-price.pull-right::before{
  font-size:14px;font-weight:700;color:#111;line-height:1.2;font-family:inherit;visibility:visible;
}

Для каждого оффера (копируй блок и меняй значения)

/* ОФФЕР 7820040 */
.form-position[data-offer-id="7820040"] { order: 1; }
.form-position[data-offer-id="7820040"] .form-position-price.pull-right { visibility:hidden; font-size:0; }
.form-position[data-offer-id="7820040"] .form-position-price.pull-right::before { content:"2 × 110€"; }

/* ОФФЕР 1234567 */
.form-position[data-offer-id="1234567"] { order: 2; }
.form-position[data-offer-id="1234567"] .form-position-price.pull-right { visibility:hidden; font-size:0; }
.form-position[data-offer-id="1234567"] .form-position-price.pull-right::before { content:"199€ (o singura plata)"; }

Проверка

  • Порядок офферов меняется (через order)

  • Цена визуально подменена (content)

  • Редирект срабатывает только для офферов из REDIRECTS