"Уже сегодня делай то, о чем другие будут думать завтра!"

Передача шаблонной переменной (TV) от ресурса к новой странице для использования в форме.

Сайдбар

Вам когда-нибудь было нужно найти шаблонную переменную ресурса, использовать ее значение в форме FormIt и отправить результат письмом администратору? Я покажу, как я сделал это, создав preHook.

 

Замысел: мой клиент хочет (без использования системы интернет-магазина) демонстрировать продукты, которые он продает, и в случае, если пользователя заинтересует какой-либо продукт, требуется возможность кликнуть на кнопке, которая бы вызвала страницу с формой, позволяющей пользователю сделать запрос о продукте.

Посещенной странице с формой нужно “знать”, описание какого продукта просматривал пользователь , и, в сою очередь, отправить эту информацию владельцу сайта с помощью email.

Решение:

  1. Написать сниппет, который в динамическом режиме создаст кнопку-ссылку, содержащую ID ресурса.
  2. Написать сниппет, который примет ID и отправит нужную информацию об этом ресурсе
  3. Задать этот сниппет как preHook для использования в FormIt
  4. Написать соответствующую форму с полями для ввода, получающую переменные через preHook.

Теперь рассмотрим это в деталях:

Создаем ссылку

 

Первый сниппет будет динамически создавать кнопку-ссылку. Я назову его (по причине отсутствия более красивого названия) “makeURLProfileValues”.  Вам нужно знать ID реурса, который будет содержать форму. В нашем случае это 26.

$landingid=26;
$id=$modx->resource->get('id');
$url = $modx->makeUrl($landingid,'',array( 'resourceid' => $id, ));
return $url; 

Я включил сниппет в мой шаблон страницы продукта, как показано ниже:

 

Ссылка-результат имеет альтернативное SEO-адаптированное имя, плюс ID ресурса страницы продукта.

Например: (http://www.mywebsite.com/orderform.html?resourceid=16).

 

Сниппет, принимающий ID ресурса.

 

По той же причине, что и выше, я назвал этот сниппет “getProductValues”.  Этот сниппет получает ID ресурса, находит ресурс и оправляет те значения, которые мне нужны. В данном случае я хочу получить pagetitle, являющийся именем продукта. Вы можете адаптировать этот код для получения такого количества переменных, какое вам нужно.

$id=$_GET['resourceid']; //call up database and get the needed values $c = $modx->newQuery('modResource'); $c->where(array( 'id' => $id, 'published' => true, 'deleted'=> false )); $collection = $modx->getCollection('modResource',$c); foreach ($collection as $resource) { $ta = $resource->toArray(); $productName=$ta['pagetitle']; }; $hook->setValues(array( 'productName'=> $productName )); return true;



$hook->setValues(array( 'productName'=> $productName ));
return true;

Первое, что я сделаю – извлеку ID, используя $_GET.  Затем проверю, что данный ID опубликован и не удален. Затем я создам массив и заполню его теми значениями, которые нужны – в нашем случае это просто pagetitle

Я создал переменную-крючок и задал ее значение из массива. Наконец, я вернул значение.

 

“На крючке”

На странице, содержащей форму, я обращаюсь к сниппету как preHook.

 

Примечание: Я не привожу здесь все другие конфигурации formIt. Если хотите больше узнать о FormIt, я рекомендую перейти по ссылке:

http://rtfm.modx.com/display/ADDON/FormIt

Моя HTML форма

Теперь мне нужно использовать новые значения из preHook в моей форме. Вы можете получить доступ к значениям, используя плейсхолдеры. При использовании preHook вам нужно добавлять ‘fi’ при назначении имен вашим плейсхолдерам. Похоже, что у меня есть проблемы с кэшированием и нужно удержать плейсхолдеры от кэширования. Что бы сделать это, просто добавьте восклицательный знак в начало вызова плейсхолдера, как я только что показал.

Теперь в моей форме я отправлю имя продукта администратору с помощью скрытого входного поля.

 

Я могу использовать имя снова при показе формы:

 

Теперь, когда пользователь заполнил форму заказа, имя продукта добавлено в форму.

 

Еmail чанк FormIt

Если вы знакомы с FormIt, то вы должны знать, что письма для отправки поступают из html чанка. Теперь в чанке вы можете использовать плейсхолдер, использующий соответственно правил присвоения имен входные поля вашей формы. В нашем случае это productName. В мой чанк я могу добавить это:

 

Итог

На этом все. Это очень простой способ раскопать данные в вашем ресурсе и добавить их в форму на отдельной странице.

P.S. Теперь кто-то может сказать, что он может добавить html код и элементы MODX (чанки, плейсхолдеры, сиппеты ) на вебстраницу и это не будет работать?

Хостинг для MODX

Смотрите также:

Asset Manager MODX Revolution

Asset Manager MODX Revolution

Смотреть

Quickstart Buttons

Quickstart Buttons

Смотреть

Как обновить MODX Revolution

Как обновить MODX Revolution

Смотреть


Услуги по MODX Revolution

Посмотреть все услуги

Оптимизация сайта

Оптимизация сайта

Заказав услуги по технической оптимизации сайта мы избавим вас от ошибок присутствующих на сайте, а так же увеличим скорость работы вашего сайта.

Подробнее & Заказать

Создание сайта на MODX

Создание сайта на MODX

Мы создадим для вас такой сайт, который подойдет именно в вашем случае и станет отличным инструментом привлечения клиентов и увеличения продаж.

Подробнее & Заказать

Перенос сайта на MODX

Перенос сайта на MODX

Работа по переносу сайта на MODX осуществляется в максимально короткие сроки. Стоимость зависит от сложности переносимого сайта

Подробнее & Заказать

Продвижение сайта на MODX

Продвижение сайта на MODX

Если вы хотите получить быстрые и ощутимые результаты, подняться в топ в минимальные сроки, то доверьте нам продвижение своего сайта.

Подробнее & Заказать

Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

telegram: @Accusser
skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Sign In