Посмотрел вашу систему понравилась. У меня магазин на Simpla и вопрос. Как переделать шаблон на Impera?
Шаблон мне рисовали по заказу. Менять не буду. Хочу перенести в Impera.
Дайте руководство.
Посмотрел вашу систему понравилась. У меня магазин на Simpla и вопрос. Как переделать шаблон на Impera?
Шаблон мне рисовали по заказу. Менять не буду. Хочу перенести в Impera.
Дайте руководство.
Присоединяюсь. В июле была похожая задача. Зашли в тупик не знали как перенести шаблон.
Нужны примеры на будущее.
Такое руководство по переносу шаблона я не делал. С одной стороны потому что овчинка выделки не стоит: Симпловских магазинов, желающих перейти на Имперу может быть и много наберется, но пока нет технарей, кто занимался бы этим вопросом грамотно.
С другой стороны специалист, действительно разбирающийся в шаблонах Симплы (а таких и у Симплы единицы), рассматривая шаблон Имперы, легко выяснит самостоятельно, что перенос шаблона с Симплы в Имперу - по сути есть процесс замены имен файлов шаблона и имен некоторых переменных в этих файлах, если закрыть глаза на воспроизведение остальных Имперских функций в шаблоне. То есть когда шаблон переносится как есть, не заморачиваясь с тем, что большинство вспомогательного функционала Имперы просто будет отсутствовать в таком шаблоне.
Попробую на примере дефолтного шаблона Simpla из движка версии 2.2.4 дать здесь вводный курс по переносу шаблона на Имперу.
Следует сразу сравнить файловое строение шаблонов двух движков. Как видно из листинга папок справа и ниже слева, строение шаблонов похоже, отличаясь только набором и именами файлов.
В новых версиях Имперы поддерживается отказ от файлов шаблона, которые по какой-то причине не хотелось бы использовать. Поэтому в шаблоне для таких целей может присутствовать специальный файл (в листинге справа он помечен красным цветом), где напишем нечто в духе "Такая страница (или функция) не предусмотрена этим шаблоном". То есть лишние по вашему мнению файлы в шаблоне Имперы допустимо просто удалить.
Зеленым цветом отмечены файлы, относящиеся к уведомлениям о событиях на сайте.
Следует на всякий случай перечислить целевые значения всех tpl-файлов шаблона Имперы. Напомню, в новых версиях движка (новее версии 130418) ненужные вам файлы можно просто удалить.
index.tpl - макет страницы сайта без контента центральной части следующие файлы являются макетами центральной части account.tpl - личный кабинет покупателя article.tpl - страница статьи articles.tpl - список статей callme.tpl - форма запроса связи "Позвоните мне" cart.tpl - корзина catalog.tpl - главная страница compare.tpl - страница сравнения товаров feedback.tpl - форма обратной связи file.tpl - страница медиа файла (документации) files.tpl - список медиа файлов fulminant.order.tpl - форма мгновенного заказа товара login.tpl - форма авторизации на сайте navigation.htm - пагинация страниц news.tpl - список новостей news_item.tpl - страница новости notifyme.tpl - форма "Уведомить о наличии товара" order.tpl - страница оформленного заказа order_success.tpl - страница успешного оформления заказа page.configurator.tpl - страница оптового заказа page.quick_cart.tpl - всплывающая плашка "Товар добавлен в корзину" page.quick_compare.tpl - всплывающая плашка "Товар добавлен в сравнение" password_remind.tpl - форма "Забыли пароль?" product.tpl - страница товара products.tpl - список товаров registration.tpl - форма регистрации search.tpl - список найденных товаров sitemap.tpl - карта сайта static_page.tpl - страница статической (специальной) страницы stock.tpl - страница склада stocks.tpl - список складов следующие файлы относятся к выдаче информации вне сайта informer.tpl - информер 1 для внешнего сайта informerNNN.tpl - информер NNN для внешнего сайта (где NNN - некое число) price.tpl - макет прайс листа 1 price2.tpl - макет прайс листа 2 price3.tpl - макет прайс листа 3 price4.tpl - макет прайс листа 4 price5.tpl - макет прайс листа 5 price6.tpl - макет прайс листа 6 price7.tpl - макет прайс листа 7 price8.tpl - макет прайс листа 8 следующие файлы являются макетами емейл-писем email_notifyme_confirm.htm - покупателю о подтверждении подключения к уведомлениям о товарах email_password_remind.tpl - покупателю о новом пароле email_coupon_activity.htm - партнеру и админу об активности по скидочным купонам email_order_payment_to_admin.htm - админу о поступлении оплаты заказа email_order_payment_to_user.htm - покупателю о принятии оплаты заказа email_order_to_admin.htm - админу о новом (или изменившемся) заказе email_order_to_user.htm - покупателю о принятии заказа (или изменениях в нем) email_post_to_admin.htm - админу о новом комментарии товара/статьи/новости или сообщении обратной связи email_post_to_user.htm - покупателю о новом комментарии или ответе админа следующие файлы являются макетами СМС-ок sms_callme_to_admin.htm - админу о новом запросе "Позвоните мне" sms_order_change_to_user.htm - покупателю об изменении в заказе sms_order_payment_to_admin.htm - админу о поступлении оплаты заказа sms_order_payment_to_user.htm - покупателю о принятии оплаты заказа sms_order_to_admin.htm - админу о новом заказе sms_order_to_user.htm - покупателю о принятии заказа следующий файл является технической заглушкой missing_template.htm - контент центральной части, когда tpl-файла нет (удален)
- покупателю о новом комментарии или ответе админа
Не понял. С этого места подробнее пожалуйста. Impera может емейлить последний комент всем участникам?
Ниже я расскажу по шагам, как переделать шаблон Simpla CMS в шаблон для Impera CMS. В качестве примера я взял дефолтный шаблон из Симплы версии 2.2.4.
Дело в том, что система шаблонизации Impera CMS поддерживает отсутствие в шаблоне тех tpl- или htm-файлов, страницы которых владелец сайта посчитал ненужными для своего магазина. То есть простым удалением из клиентского шаблона отдельных tpl-файлов, связанных с конкретными модулями (например страница Склады, страница Медиа файлы и тому подобные), можно тем самым отказаться от данного функционала без каких-либо последствий.
Чтобы иметь возможность вывести пользователю некое уведомление вместо пустой страницы, когда тот искусственным образом попал на URL (адрес) той страницы, от которой отказались за счет удаления ее tpl-файла, в шаблоне предусмотрен специальный файл-заглушка, где вы можете написать произвольный текст. Например
{* страница заглушка *}
<h1> Страница не найдена! </h1>
<div class="message_error">
Поддержка такой страницы не предусмотрена на нашем сайте!
</div>
Наличие файла-заглушки в шаблоне тоже опционально. То есть в принципе вы можете отказаться даже от этого файла. Однако по смыслу уведомления он похож на страницу ошибки 404 (страница не найдена), поэтому может быть использован вами в качестве макета центральной части страницы 404.
Рассмотрим код исходного файла. Здесь цветами помечены входные переменные и их поля, а также локальные переменные, теги шаблонизатора Smarty и его модификаторы или параметры его функций.
{* Список записей блога *} <!-- Заголовок --> <h1> {$page->name} </h1> {include file = 'pagination.tpl'} <!-- Статьи --> <ul id="blog"> {foreach $posts as $post} <li> <h3> <a data-post="{$post->id}" href="blog/{$post->url}"> {$post->name|escape} </a> </h3> <p>{$post->date|date}</p> <p>{$post->annotation}</p> </li> {/foreach} </ul> {include file = 'pagination.tpl'}
Для использования этого файла в шаблоне Impera CMS, файл нужно переименовать в news.tpl и заменить имена некоторых переменных и полей, как показано ниже. Заметьте, что используется также одна глобальная переменная, чтобы сформировать абсолютный путь в ссылке вместо относительного, как было в исходном файле. В принципе можно не использовать эту глобальную переменную, если вас устраивают относительные ссылки.
{* файл news.tpl - список новостей *} <!-- заголовок --> <h1> {$section->header} </h1> {include file = 'navigation.htm'} <!-- новости --> <ul id="blog"> {foreach $all_news as $post} <li> <h3> <a data-post="{$post->news_id}" href="{$site}{$post->url_path}{$post->url}"> {$post->header|escape} </a> </h3> <p>{$post->date}</p> <p>{$post->annotation}</p> </li> {/foreach} </ul> <!-- пагинация страниц --> {include file = 'navigation.htm'}
Проведенные изменения:
Заметка: пунктирным квадратом обозначена опциональная часть тега (наведите курсор, чтобы увидеть эту часть). Ее как правило не используют, так как необходима лишь когда вы подключаете в шаблон специальный js-скрипт, который при обнаружении, что в текущий момент клиентскую сторону сайта просматривает администратор, ищет в html-разметке страницы все теги с подобными опциями и навешивает на них всплывающие инструменты администратора.
Далее на основе tpl-файла списка новостей можем получить файл списка статей - articles.tpl. Он похож на список новостей, только используется другая входная переменная.
{* файл articles.tpl - список статей *} <!-- заголовок --> <h1> {$section->header} </h1> {include file = 'navigation.htm'} <!-- статьи --> <ul id="blog"> {foreach $all_articles as $post} <li> <h3> <a data-article="{$post->article_id}" href="{$site}{$post->url_path}{$post->url}"> {$post->header|escape} </a> </h3> <p>{$post->date}</p> <p>{$post->annotation}</p> </li> {/foreach} </ul> <!-- пагинация страниц --> {include file = 'navigation.htm'}
Проведенные изменения:
Заметка: пунктирным квадратом обозначена опциональная часть тега (наведите курсор, чтобы увидеть эту часть). Ее как правило не используют, так как необходима лишь когда вы подключаете в шаблон специальный js-скрипт, который при обнаружении, что в текущий момент клиентскую сторону сайта просматривает администратор, ищет в html-разметке страницы все теги с подобными опциями и навешивает на них всплывающие инструменты администратора.
Далее на основе tpl-файла списка статей можем получить файл списка медиа файлов - files.tpl. Он похож на список статей, ровно как и на список новостей, только используется другая входная переменная.
{* файл files.tpl - список медиа файлов *} <!-- заголовок --> <h1> {$section->header} </h1> {include file = 'navigation.htm'} <!-- медиа файлы --> <ul id="blog"> {foreach $files as $post} <li> <h3> <a data-file="{$post->file_id}" href="{$site}{$post->url_path}{$post->url}"> {$post->header|escape} </a> </h3> <p>{$post->date}</p> <p>{$post->description}</p> </li> {/foreach} </ul> <!-- пагинация страниц --> {include file = 'navigation.htm'}
Проведенные изменения:
Заметка: пунктирным квадратом обозначена опциональная часть тега (наведите курсор, чтобы увидеть эту часть). Ее как правило не используют, так как необходима лишь когда вы подключаете в шаблон специальный js-скрипт, который при обнаружении, что в текущий момент клиентскую сторону сайта просматривает администратор, ищет в html-разметке страницы все теги с подобными опциями и навешивает на них всплывающие инструменты администратора.
Далее снова же на основе tpl-файла списка статей можем получить файл списка складов - stocks.tpl. Он похож на список статей, на список новостей, только используется другая входная переменная и у записей складов нет такого понятия как дата публикации.
{* файл stocks.tpl - список складов *} <!-- заголовок --> <h1> {$section->header} </h1> {include file = 'navigation.htm'} <!-- склады --> <ul id="blog"> {foreach $stocks as $post} <li> <h3> <a data-stock="{$post->stock_id}" href="{$site}{$post->url_path}{$post->url}"> {$post->name|escape} </a> </h3> <p>{$post->annotation}</p> </li> {/foreach} </ul> <!-- пагинация страниц --> {include file = 'navigation.htm'}
Проведенные изменения:
Заметка: пунктирным квадратом обозначена опциональная часть тега (наведите курсор, чтобы увидеть эту часть). Ее как правило не используют, так как необходима лишь когда вы подключаете в шаблон специальный js-скрипт, который при обнаружении, что в текущий момент клиентскую сторону сайта просматривает администратор, ищет в html-разметке страницы все теги с подобными опциями и навешивает на них всплывающие инструменты администратора.
Ну дальше продолжите или нет?
Понимаю может у Вас нет времени. Мне очень надо.
Знал бы не связывался с CMS Simpla. Движ понятный а дальше гонево. Модули самописы купить можно но гвоздями каждый забивать в движ. Что ни мод пачку правок делать самому. Потом багов немеряно. Совместимости ноль все модули от посторонних вендоров. Только бабло и нервы портишь.
CMS Impera в этом смысле лучше. Все есть в комплекте. Хоть с этим не париться.
Теперь шаблон бы перенести. И трындец не ясно как. Ну да articles.tpl news.tpl stocks.tpl files.tpl получилось сделать. А дальше?
Поэтому прошу все таки продолжить. Файлы page.tpl login.tpl register.tpl сейчас мучаю.
Рассмотрим код исходного файла. Здесь цветами помечены входные переменные и их поля, а также модификаторы шаблонизатора Smarty.
{* Шаблон текстовой страницы *} <!-- Заголовок страницы --> <h1 data-page="{$page->id}"> {$page->header|escape} </h1> <!-- Тело страницы --> {$page->body}
Для использования этого файла в шаблоне Impera CMS, файл нужно переименовать в static_page.tpl и заменить имя одного поля, как показано ниже.
{* файл static_page.tpl - специальная страница *} <!-- заголовок --> <h1 data-page="{$page->section_id}"> {$page->header|escape} </h1> <!-- текст --> {$page->body}
Проведенные изменения:
Заметка: пунктирным квадратом обозначена опциональная часть тега (наведите курсор, чтобы увидеть эту часть). Ее как правило не используют, так как необходима лишь когда вы подключаете в шаблон специальный js-скрипт, который при обнаружении, что в текущий момент клиентскую сторону сайта просматривает администратор, ищет в html-разметке страницы все теги с подобными опциями и навешивает на них всплывающие инструменты администратора.
Рассмотрим код исходного файла. Здесь цветами помечены входные переменные, а также глобальные переменные, теги шаблонизатора Smarty и его модификаторы или параметры его инструкций.
{* Страница входа пользователя *} {$meta_title = "Вход" scope=parent} <h1> Вход </h1> {if $error} <div class="message_error"> {if $error == 'login_incorrect'} Неверный логин или пароль {elseif $error == 'user_disabled'} Ваш аккаунт еще не активирован. {else} {$error} {/if} </div> {/if} <form class="form login_form" method="post"> <label> Email </label> <input type="text" name="email" value="{$email|escape}" data-format="email" data-notice="Введите email" maxlength="255" /> <label> Пароль (<a href="user/password_remind"> напомнить </a>) </label> <input type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" /> <input type="submit" class="button" name="login" value="Войти"> </form>
Для использования этого файла в шаблоне Impera CMS, нужно заменить имя одной переменной и поправить адрес ссылки, как показано ниже.
{* файл login.tpl - страница авторизации *} <h1> {$title} </h1> <!-- если допустили ошибку --> {if $error} <div class="message_error"> {$error} </div> {/if} <!-- форма ввода --> <form class="form login_form" method="post"> <label> Email </label> <input type="text" name="email" value="{$item->email|escape}" data-format="email" data-notice="Введите email" maxlength="255" /> <label> Пароль (<a href="{$site}login/remind"> напомнить </a>) </label> <input type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" /> <!-- кнопка --> <input type="submit" class="button" name="login" value="Войти" /> </form>
Проведенные изменения:
Заметка: изменение, помеченное [*], не обязательно и служит повышению читабельности кода, на самом деле шаблон будет идентично работать и без этого изменения.
Заметка: пунктирными квадратами обозначены опциональные части тегов (наведите курсор, чтобы увидеть нужную часть). Опция maxlength используется когда нужно указать предельно возможную длину вводимой строки. Опции data-format и data-notice используются лишь когда вы применяете специальный js-скрипт валидации (проверки правильного заполнения) полей формы, для некоторых скриптов могут быть записаны как format и notice. Опция name кнопки в данном случае бесполезна (если только на нее не завязан какой-нибудь стиль из CSS), так как движок не контролирует имя такой кнопки.
Рассмотрим код исходного файла. Здесь цветами помечены входные переменные, а также глобальные переменные, теги шаблонизатора Smarty и его модификаторы или параметры его инструкций.
{* Страница регистрации *} {$meta_title = "Регистрация" scope=parent} <h1> Регистрация </h1> {if $error} <div class="message_error"> {if $error == 'empty_name'} Введите имя {elseif $error == 'empty_email'} Введите email {elseif $error == 'empty_password'} Введите пароль {elseif $error == 'user_exists'} Пользователь с таким email уже зарегистрирован {elseif $error == 'captcha'} Неверно введена капча {else} {$error} {/if} </div> {/if} <form class="form register_form" method="post"> <label> Имя </label> <input type="text" name="name" value="{$name|escape}" data-format=".+" data-notice="Введите имя" maxlength="255" /> <label> Email </label> <input type="text" name="email" value="{$email|escape}" data-format="email" data-notice="Введите email" maxlength="255" /> <label> Пароль </label> <input type="password" name="password" value="" data-format=".+" data-notice="Введите пароль" /> <div class="captcha"> <img src="captcha/image.php?{math equation='rand(10,10000)'}"/> </div> <input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/> <input type="submit" class="button" name="register" value="Зарегистрироваться"> </form>
Для использования этого файла в шаблоне Impera CMS, файл нужно переименовать в registration.tpl, заменить имена двух переменных, поправить адрес капчи и имя поля капчи, как показано ниже. Еще продублировать строку пароля, так как в Impera CMS при регистрации пользователя пароль требуется повторить для исключения ошибки.
{* файл registration.tpl - страница регистрации *} <h1> {$title} </h1> <!-- если допустили ошибку --> {if $error} <div class="message_error"> {$error} </div> {/if} <!-- форма ввода --> <form class="form register_form" method="post"> <label> Имя </label> <input type="text" name="name" value="{$item->name|escape}" data-format=".+" data-notice="Введите имя" maxlength="255" /> <label> Email </label> <input type="text" name="email" value="{$item->email|escape}" data-format="email" data-notice="Введите email" maxlength="255" /> <label> Пароль </label> <input type="password" name="password" value="" data-format=".+" data-notice="Введите пароль" /> <label> Повторите пароль </label> <input type="password" name="password2" value="" data-format=".+" data-notice="Повторите пароль" /> <!-- капча --> <div class="captcha"> <img src="{$site}captcha.jpg?unique={math equation = 'rand(10, 10000)'}" /> </div> <input class="input_captcha" id="comment_captcha" type="text" name="captcha" value="" data-format=".+" data-notice="Введите капчу" /> <!-- кнопка --> <input type="submit" class="button" name="register" value="Зарегистрироваться" /> </form>
Проведенные изменения:
Заметка: изменение, помеченное [*], не обязательно и служит повышению читабельности кода, на самом деле шаблон будет идентично работать и без этого изменения.
Заметка: пунктирными квадратами обозначены опциональные части тегов (наведите курсор, чтобы увидеть нужную часть). Опция maxlength используется когда нужно указать предельно возможную длину вводимой строки. Опции data-format и data-notice используются лишь когда вы применяете специальный js-скрипт валидации (проверки правильного заполнения) полей формы, для некоторых скриптов могут быть записаны как format и notice. Назначение опции id поля капчи не выяснено. Опция name кнопки в данном случае бесполезна (если только на нее не завязан какой-нибудь стиль из CSS), так как движок не контролирует имя такой кнопки.
Заметка: капча в Impera CMS может состоять из более чем 4 символов, поэтому при валидации формы у поля капчи не рекомедуется указывать формат типа "\d\d\d\d" (он означает ровно 4 цифры). Лучше воспользоваться форматом ".+" (он означает любое непустое количество символов).
О чудо свершилось спасибо мое не знает границ!! Я ожидал будет сложнее. Оказалось типи топ.
Мне кадры с CMS Simpla уши проели все твердили шаблон делать на CMS Impera нереально.
Типа за очень очень большой бабос можно но дохера трудно. Я потому и повелся на их движ. Мать ё!
Надеюсь на Ваше продолжение. Теперь интересуют переделка password_remind.tpl и feedback.tpl.
Рассмотрим код исходного файла. Здесь цветами помечены входные переменные, а также теги шаблонизатора Smarty и его модификаторы или параметры его инструкций.
{* Письмо пользователю для восстановления пароля *} {if $email_sent} <h1> Вам отправлено письмо </h1> <p>На {$email|escape} отправлено письмо для восстановления пароля.</p> {else} <h1> Напоминание пароля </h1> {if $error} <div class="message_error"> {if $error == 'user_not_found'} Пользователь не найден {else} {$error} {/if} </div> {/if} <form class="form" method="post"> <label> Введите email, который вы указывали при регистрации </label> <input type="text" name="email" value="{$email|escape}" data-format="email" data-notice="Введите email" maxlength="255"/> <input type="submit" class="button_submit" value="Вспомнить" /> </form> {/if}
Для использования этого файла в шаблоне Impera CMS, нужно заменить имена двух переменных, как показано ниже. Еще добавить строку капчи, так как в Impera CMS функция восстановления пароля защищена от массовой смены пользовательских паролей с помощью ботов. Обратите также внимание, что в Impera CMS сообщение об отправке письма пользователю может иметь несколько состояний (а не одно как в Симпле), что и проверяется условием if-elseif-else.
{* файл password_remind.tpl - страница восстановления пароля *} <!-- если форма обработана --> {if $message || isset($new_password)} <h1> {$title} </h1> {if $message} <p>{$message}</p> {elseif $new_password} <p>На Ваш емейл отправлено письмо с новым паролем.</p> {else} <p>На указанный Вами емейл отправлено письмо для восстановления пароля.</p> {/if} <!-- иначе форму еще не заполняли или допустили ошибку --> {else} <h1> {$title} </h1> {if $error} <div class="message_error"> {$error} </div> {/if} <form class="form" method="post"> <label> Введите email, который вы указывали при регистрации </label> <input type="text" name="email" value="{$item->email|escape}" data-format="email" data-notice="Введите email" maxlength="255" /> <!-- капча --> <div class="captcha"> <img src="{$site}captcha.jpg?unique={math equation = 'rand(10, 10000)'}" /> </div> <input class="input_captcha" type="text" name="captcha" value="" data-format=".+" data-notice="Введите капчу" /> <!-- кнопка --> <input type="submit" class="button_submit" value="Вспомнить" /> </form> {/if}
Проведенные изменения:
Заметка: изменение, помеченное [*], не обязательно и служит повышению читабельности кода, на самом деле шаблон будет идентично работать и без этого изменения.
Заметка: пунктирными квадратами обозначены опциональные части тегов (наведите курсор, чтобы увидеть нужную часть). Опция maxlength используется когда нужно указать предельно возможную длину вводимой строки. Опции data-format и data-notice используются лишь когда вы применяете специальный js-скрипт валидации (проверки правильного заполнения) полей формы, для некоторых скриптов могут быть записаны как format и notice.
Заметка: капча в Impera CMS может состоять из более чем 4 символов, поэтому при валидации формы у поля капчи не рекомедуется указывать формат типа "\d\d\d\d" (он означает ровно 4 цифры). Лучше воспользоваться форматом ".+" (он означает любое непустое количество символов).
Рассмотрим код исходного файла. Здесь цветами помечены входные переменные и их поля, а также теги шаблонизатора Smarty и его модификаторы или параметры его инструкций.
{* Страница с формой обратной связи *} <h1> {$page->name|escape} </h1> {$page->body} <h2> Обратная связь </h2> {if $message_sent} {$name|escape}, ваше сообщение отправлено. {else} <form class="form feedback_form" method="post"> {if $error} <div class="message_error"> {if $error == 'captcha'} Неверно введена капча {elseif $error == 'empty_name'} Введите имя {elseif $error == 'empty_email'} Введите email {elseif $error == 'empty_text'} Введите сообщение {/if} </div> {/if} <label> Имя </label> <input type="text" name="name" value="{$name|escape}" data-format=".+" data-notice="Введите имя" maxlength="255"/> <label> Email </label> <input type="text" name="email" value="{$email|escape}" data-format="email" data-notice="Введите email" maxlength="255"/> <label> Сообщение </label> <textarea name="message" value="{$message|escape}" data-format=".+" data-notice="Введите сообщение">{$message|escape}</textarea> <input class="button" type="submit" name="feedback" value="Отправить" /> <div class="captcha"> <img src="captcha/image.php?{math equation='rand(10,10000)'}"/> </div> <input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/> </form> {/if}
Для использования этого файла в шаблоне Impera CMS, нужно заменить имена двух переменных, как показано ниже.
{* файл feedback.tpl - страница обратной связи *} <h1> {$section->header|escape} </h1> {$section->body} <h2> Обратная связь </h2> <!-- если форма обработана --> {if $accepted} Ваше сообщение принято успешно. <!-- иначе форму еще не заполняли или допустили ошибку --> {else} <form class="form feedback_form" method="post"> {if $error} <div class="message_error"> {$error} </div> {/if} <label> Имя </label> <input type="text" name="name" value="{$name|escape}" data-format=".+" data-notice="Введите имя" maxlength="255" /> <label> Email </label> <input type="text" name="email" value="{$email|escape}" data-format="email" data-notice="Введите email" maxlength="255" /> <label> Сообщение </label> <textarea name="message" data-format=".+" data-notice="Введите сообщение">{$message|escape}</textarea> <!-- кнопка --> <input class="button" type="submit" name="feedback" value="Отправить" /> <!-- капча --> <div class="captcha"> <img src="{$site}captcha/image.php?{math equation = 'rand(10, 10000)'}" /> </div> <input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format=".*" data-notice="Введите капчу" /> </form> {/if}
Проведенные изменения:
Заметка: изменение, помеченное [*], не обязательно и служит повышению читабельности кода, на самом деле шаблон будет идентично работать и без этого изменения.
Заметка: пунктирными квадратами обозначены опциональные части тегов (наведите курсор, чтобы увидеть нужную часть). Опция maxlength используется когда нужно указать предельно возможную длину вводимой строки. Опции data-format и data-notice используются лишь когда вы применяете специальный js-скрипт валидации (проверки правильного заполнения) полей формы, для некоторых скриптов могут быть записаны как format и notice. Назначение опции id поля капчи не выяснено. Опция name кнопки в данном случае бесполезна (если только на нее не завязан какой-нибудь стиль из CSS), так как движок не контролирует имя такой кнопки.
Заметка: капча в Impera CMS может состоять из более чем 4 символов, поэтому при валидации формы у поля капчи не рекомедуется указывать формат типа "\d\d\d\d" (он означает ровно 4 цифры). Лучше воспользоваться форматом ".+" (он означает любое непустое количество символов).
Описание следующего шага добавлю позже.