[Помощь] OkayCMS 4.5.1 и более поздние версии

Fassendek

Постоялец
Регистрация
4 Май 2014
Сообщения
352
Реакции
182
Приветствую ВСЕХ! Кто-нибудь устанавливал Для просмотра ссылки Войди или Зарегистрируйся 4.5.1 и смог разобраться?
 
Сам не знаю, но спросит у ИИ и вот что он ответил, возможно он прав, попробуйте на тестовом сервере проделать такое:

Для версии OkayCMS 4.3.4 задача разделяется на два этапа: визуальная проверка (клиентская часть в scripts.tpl) и серверная валидация (PHP-логика), чтобы система не выдавала ошибку при пустом email.

Ниже приведена подробная инструкция по реализации.


1. Изменения в design\okay_shop\html\scripts.tpl​

В этой версии OkayCMS для валидации форм часто используется плагин validator. Вам нужно найти блок, отвечающий за валидацию формы заказа (обычно это селектор .fn_validate_checkout).

Замените или добавьте правила (rules) для полей email и phone:

Код:
$('.fn_validate_checkout').validate({
    rules: {
        email: {
            required: false, // Делаем email необязательным
            email: true
        },
        phone: {
            required: true,  // Делаем телефон обязательным
            digits: true,    // Разрешаем только цифры
            minlength: 10,   // Минимум 10 символов
            maxlength: 12    // Максимум 12 символов
        }
    },
    messages: {
        phone: {
            required: "Введите номер телефона",
            digits: "Используйте только цифры",
            minlength: "Номер должен быть не менее 10 цифр",
            maxlength: "Номер должен быть не более 12 цифр"
        }
    }
});

2. Изменение шаблона формы заказа (checkout.tpl)​

Чтобы пользователь понимал, что правила изменились, найдите файл design\okay_shop\html\checkout.tpl и уберите/добавьте пометку "звездочка" (*:(

  • У поля Email удалите атрибут required (если он есть в HTML5) и символ *.
  • У поля Phone добавьте символ * и атрибут data-language="form_enter_phone".

3. Серверная часть (PHP) — Важно!​

Если вы измените только JS, сервер OkayCMS все равно может отклонить пустой Email, так как в контроллере прописана проверка.

Вам нужно отредактировать файл: view/OrderView.php (или Okay/Controllers/OrderController.php в зависимости от точной архитектуры 4.3.x).

Найдите фрагмент кода, где проверяется заполнение полей:

PHP:
if (empty($order->name)) {
    $this->design->assign('error', 'empty_name');
} elseif (empty($order->email)) { // <--- ЭТУ ПРОВЕРКУ НУЖНО УБРАТЬ ИЛИ ЗАМЕНИТЬ
    $this->design->assign('error', 'empty_email');
}

Замените проверку email на проверку телефона:

Код:
if (empty($order->name)) {
    $this->design->assign('error', 'empty_name');
} elseif (empty($order->phone)) { // Теперь проверяем телефон
    $this->design->assign('error', 'empty_phone');
}

4. Настройка в базе данных (если требуется)​

В некоторых версиях поле email в таблице ok_orders может иметь ограничение NOT NULL. Если после правок заказы не сохраняются:

  1. Зайдите в phpMyAdmin.
  2. Найдите таблицу ok_orders.
  3. Измените структуру поля email, установив галочку NULL (разрешить пустое значение).

Что это даст:​

  1. scripts.tpl: Клиент не сможет отправить форму, пока не введет от 10 до 12 цифр в поле телефона.
  2. OrderView.php: Сервер примет заказ даже без заполненного e-mail.
  3. Безопасность: Валидация digits: true в JS отсекает ввод букв и спецсимволов.
Подсказка: Если вы хотите, чтобы в админке поле Email также не подсвечивалось красным при редактировании, проверьте аналогичные скрипты в папке backend/design/html/.
 
Назад
Сверху