×
New project by Yuriy Vdovytchenko (01 март 2017)

ITCOD WEB DESKTOP - следующий этап развития проекта ITCOD.

Fancy AJAX Contact Form - модуль Joomla 3

Больше
2 года 9 мес. назад - 10 мес. 4 дн. назад #1 от Aleksej




Анонс новой статьи в блоге - Fancy AJAX Contact Form - модуль для Joomla 3 . Велкам по ссылке.

16.05.2016. Почти два года прошло со дня публикации этого топика. Судя по web-аналитике, модуль пользуется популярность, его активно качают. Внимание, не рекомендую этого делать сегодня; в самые ближайшие дни, надеюсь, станет доступен для загрузки новый релиз Fancy AJAX Contact Form - модуль Joomla 3. Это будет уже новый модуль - программный код доработан, контактная форма станет более гибкой, появятся новые стили, также и поддержка recaptcha v.2.0. Только одно неизменно - модуль по-прежнему останется бесплатным и свободным. Спасибо за ваш интерес к данному расширению, и подождите, пожалуйста, еще несколько дней: ссылка на описание и загрузку новой версии модуля обязательно появится здесь, в этом топике.

18.05.2016 - опубликовал. jTriad Contact Form - страничка проекта. Welcome.


ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


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

<field 
name="1email" 
type="text" 
default="" 
label="1 email" 
description="Введите 1 email" 
/>

и затем, зайдя в админку модуля, присвоим этому вновь созданному полю "1email" (обзовите как хотите) некое значение (любое, от балды напишите чего хотите). "Здесь был Вася", допустим. Сделали? - отлично, а теперь уже в php модуля пропишите всего пару строчек , опубликуйте и взгляните, что же там такое опубликовалось на сайте:

$email = $params->get('1email');
echo $email;

Получилось? ;)

Ну и вот. Возможность редактирования пунктов выпадающего списка можете попробовать вывести в админку таким примерно способом:

<option value = "<?=$params->get('1email'); ?>"><?=$params->get('1email'); ?></option>

c адресами электронной почты... ну, все то же самое, разберетесь.
Enjoy!
Последнее редактирование: 10 мес. 4 дн. назад от p.rishard.
Тема заблокирована.

Больше
2 года 9 мес. назад - 2 года 9 мес. назад #2 от serge

Aleksej пишет: и затем, зайдя в админку модуля, присвоим этому вновь созданному полю "1email" (обзовите как хотите) некое значение (любое, от балды напишите чего хотите). "Здесь был Вася", допустим.



ну вот так примерно могу выглядеть fields в xml-файле:

<config>
            <fields name="params">
                <fieldset name="basic">
                    
                     <field 
                         name="1email" 
                         type="text" 
                         default="" 
                         label="1 email" 
                         description="Введите 1 email" 
                     />
		     <field 
                         name="2email" 
                         type="text" 
                         default="" 
                         label="2 email" 
                         description="Введите 2 email" 
                     />
		     <field 
                         name="3email" 
                         type="text" 
                         default="" 
                         label="3 email" 
                         description="Введите 3 email" 
                     />
		     <field 
                         name="4email" 
                         type="text" 
                         default="" 
                         label="4 email" 
                         description="Введите 4 email" 
                     />
		     <field 
                         name="5email" 
                         type="text" 
                         default="" 
                         label="5 email" 
                         description="Введите 5 email" 
                     />
                    <field 
                        name="layout" 
                        type="modulelayout"
                        label="JFIELD_ALT_LAYOUT_LABEL"
                        description="JFIELD_ALT_MODULE_LAYOUT_DESC" />  
                    
                </fieldset>
                <!-- Дополнительные параметры для модуля -->
                <fieldset name="advanced">
             
                </fieldset>
            </fields>
        </config>

вставляется сразу после

</files>

А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 2 года 9 мес. назад от serge.
Тема заблокирована.
Больше
2 года 9 мес. назад - 2 года 9 мес. назад #3 от beginner

Aleksej пишет: Возможность редактирования пунктов выпадающего списка можете попробовать вывести в админку таким примерно способом...


Спасибо за статью. И все-таки. Как добиться отправки сообщения с сайта на несколько адресов, причем чтобы вводить разные emai я мог с админки?!
Последнее редактирование: 2 года 9 мес. назад от beginner.
Тема заблокирована.

Больше
2 года 9 мес. назад #4 от Aleksej

beginner пишет: Как добиться отправки сообщения с сайта на несколько адресов, причем чтобы вводить разные emai я мог с админки?!



Прошу прощения, только сейчас дошли руки ответить.
Итак, step-by-step.


В mod_contactform_masterpro.php пишем где-нибудь в самом конце области php:

$category_name = $params->get('email1');
$category_name1 = $params->get('email2');
$category_name2 = $params->get('email3');

и в этом же файле, например, рисуем три скрытых поля, оговаривая, что значения забираем из php:

<tr>
<td width="70%"><input type="hidden" name="category_name" id="category_name" value="<?=$category_name; ?>" /></td>
</tr>
<tr>
<td width="70%"><input type="hidden" name="category_name1" id="category_name1" value="<?=$category_name1; ?>" /></td>
</tr>
<tr>
<td width="70%"><input type="hidden" name="category_name2" id="category_name2" value="<?=$category_name2; ?>" /></td>
</tr>

В submit.php, сразу после

$mail->AddReplyTo($input->getString('email'), $input->getString('name'));

прописываем эти строчки:

$mail->AddAddress($input->getString('category_name'));
$mail->AddAddress($input->getString('category_name1'));
$mail->AddAddress($input->getString('category_name2'));

и далее все, что по-дефолту было в config_start, убираем:

/* config start */

/* config end */

В mod_contactform_masterpro.xml , в самом конце файла, но перед закрывающим

</extension>

пишем как-то так:

<config>
            <fields name="params">
                <fieldset name="basic">
                    
                     <field 
                         name="email1" 
                         type="text" 
                         default="" 
                         label="email1" 
                         description="Введите email 1" 
                     />
		     <field 
                         name="email2" 
                         type="text" 
                         default="" 
                         label="email2" 
                         description="Введите email 2" 
                     />
		     <field 
                         name="email3" 
                         type="text" 
                         default="" 
                         label="email3" 
                         description="Введите email 3" 
                     /> 
                    
             
                </fieldset>
            </fields>
        </config>


Ну вот в принципе и все. Только не спрашивайте меня, почему "$category_name"; попросту это первое что пришло в голову.
Тема заблокирована.
Больше
2 года 9 мес. назад #5 от beginner
что-то с валидацией текстового поля и алерты отображаются криво...
Тема заблокирована.

Больше
2 года 9 мес. назад #6 от Aleksej

beginner пишет: что-то с валидацией текстового поля и алерты отображаются криво...



Вы правы, перезалил архив, скачайте еще раз.
Тема заблокирована.
Больше
2 года 9 мес. назад #7 от Aleksej
Отредактировал первое сообщение топика, опубликовал еще одну версию модуля с recaptcha. Recaptcha должна быть включена, и лучше выбрать не clean стиль, а любой другой. Ибо иначе не помещается. Свитчера для recaptcha в админке модуля пока что нет. Чуть позже опубликую подробную, насколько смогу, аннотацию...
Тема заблокирована.

Больше
2 года 8 мес. назад - 2 года 8 мес. назад #8 от Aleksej

Aleksej пишет: Чуть позже опубликую подробную, насколько смогу, аннотацию...


Опубликовал; равно как и новую версию модуля . Теперь это полноценный модуль Joomla 3.*.





Последнее редактирование: 2 года 8 мес. назад от p.rishard. Причина: Добавлена иллюстрация
Тема заблокирована.
Больше
2 года 8 мес. назад #9 от beginner

Aleksej пишет: Возможность редактирования пунктов выпадающего списка можете попробовать вывести в админку таким примерно способом:

<option value = "<?=$params->get('1email'); ?>"><?=$params->get('1email'); ?></option>


А можно чуть более развернуто этот момент? не совсем ясно.
Тема заблокирована.
Больше
2 года 8 мес. назад - 2 года 8 мес. назад #10 от Aleksej

beginner пишет: А можно чуть более развернуто этот момент? не совсем ясно.


Ок. Все это касается второй ревизии модуля; не третьей.

1. В файле mod_contactform_masterpro.xml добавляем возмоность редактирования элементов выпадающего списка; число их зависит только от вас :

<field 
                         name="list_item_1" 
                         type="text" 
                         default="" 
                         label="Первый пункт списка" 
                         description="Введите тему 1" 
                     /> 
		     
		     <field 
                         name="list_item_2" 
                         type="text" 
                         default="" 
                         label="Второй пункт списка" 
                         description="Введите тему 2" 
                     />


2. В файле mod_contactform_masterpro.php убираем статичный dropdown-список и применяем следующую конструкцию:

<tr>
<td><label for="subject">Тема</label></td>
<td>
<select name="subject" id="subject">
<option value="" selected="selected"> - Выберите -</option>
<option value = "<?=$params->get('list_item_1'); ?>"><?=$params->get('list_item_1'); ?></option>
<option value = "<?=$params->get('list_item_2'); ?>"><?=$params->get('list_item_2'); ?></option>
<option value = "<?=$params->get('list_item_3'); ?>"><?=$params->get('list_item_3'); ?></option>
<option value = "<?=$params->get('list_item_4'); ?>"><?=$params->get('list_item_4'); ?></option>
</select>
</td>
<td>&nbsp;</td>
</tr>

Внес изменения в модуль, можно просто скачать и посмотреть.
Последнее редактирование: 2 года 8 мес. назад от Aleksej.
Спасибо сказали: beginner
Тема заблокирована.