Joomla форма 3 обратна връзка - добавя способността да прикачите файл

Наскоро един от посетителите на сайта ми ми предложи да се разшири функционалността на формата за обратна връзка: добавите възможността за прикачване на файлове към съобщението, което се изпраща след като попълните формата. Файлове изпратени чрез формата трябва да бъде графичен формат. Така посетителите ще могат да се прикрепят към публикацията си всяка снимка.

Joomla форма 3 обратна връзка - добавя способността да прикачите файл

Интересувам се от това предложение, и малко размисъл, аз отидох на работа. В действителност, възможността за разширяване на Joomla com_contact компонент е лесно. Въпреки това, има един "лош" момент: Ако направите промени в съставните файлове, актуализиране на нея повече отколкото би било невъзможно, защото, когато обновите всичките ви промени ще бъдат загубени.

Можете да опитате да се клонира компонента. Но тъй като тя е вградена в системата, за да се направи, че не е толкова просто - има много различни зависимости, така че да работи копие com_contact компонент не съм се обърна. В резултат на това решение се оказа че не е съвършен, но тя работи :).

Още в края на работата, която "препъна" на една статия по документацията на сайт за Joomla. Той казва, че за разширяване на формата за обратна връзка (и другите компоненти на системата) трябва да се създаде добавка. По този начин не се променят файловете в компонентите на системата, а не губи възможността за актуализиране на CMS.

Въпреки това, статията не се посочва как да добавите логика (в този случай, проверка и изпращане на файл, заедно с други данни), без да променя съставните файлове.

Сега ще опиша целия процес на промяна на компонента за обратна връзка. Прекарах да добавите във формата на "файл" тип поле.

Така че първо ние правим малки промени в административната част на сайта:

► Променете езиковите файлове.

/administrator/language/ru-RU/ru-RU.com_contact.ini
Добавете следните редове:

В /administrator/language/en-EN/en-EN.com_contact.ini файл добавете една и съща линия, но тяхната стойност ще бъде фрази в английския език. По този начин предоставя многоезичен.

► Редактиране на файлове: (име раздел fieldset = "CONTACT_FORM") /administrator/components/com_contact/config.xml и /administrator/components/com_contact/models/form/contact.xml (раздел име fieldset = "електронна поща"), прибавен към двете подаде следния код:

В резултат на тези две дейности в административната част на сайта, за да Joomla com_contact функция страница. Вие ще бъдете в състояние да се включва и изключва показването на полето, за да добавите файлове във формата за обратна връзка.

Да припомним, че промяна в параметрите на администратор за контакт, те се съхраняват в база данни: Таблица __contact_details. полеви Поколения назад.

Сега да преминем към промените съставните файлове в публичната част.

► Сега com_contact шаблон компонент става добавена стойност достъпно параметър allow_images_attach. Преди да редактирате кода на шаблон, той трябва да бъде копиран в шаблона на сайта папка: /templates/imya_shablona/html/com_contact/contact/default_form.php

За да проверите, можете да поставите следния код в този файл.

Ако няма грешки, компонент на страницата в публичната част на сайта ще показва "1".

► След това добавете описание на полето, за да прикачите файл (снимки) в XML-файл с описание на полетата на формата в модела (/components/com_contact/models/forms/contact.xml).

► На езика файловете, които искате да добавите подпис (етикет) и описание (описание) за новото поле (/language/ru-RU/ru-RU.com_contact.ini):

В /language/en-EN/en-EN.com_contact.ini файл добавете една и съща линия, само текстът на английски език като стойността.

► Добави в шаблона на формуляра (/templates/imya_shablona/html/com_contact/contact/default_form.php) следния код:

След добавянето на този код на компонента за обратна връзка на страницата има поле, за да добавите файл.

За да се образува репетирали правилно, трябва да добавите маркера

следния израз:

Освен това, добави скрито поле, което ще съдържа максималният размер на прикачен файл:

► Сега можете да мислите за добавяне на валидиране област. За начало блок на описанието на поле във файл, добавяне на /components/com_contact/models/forms/contact.xml елемент потвърдим.

След това е необходимо да се създаде източник файлове (правила) за валидиране. Contactemailattachment.php файл ще бъде обявен и се поставя в папката / компоненти / com_contact / модели / правила /.

Първоначално системата не потвърждава полетата на формуляра прикачвате файлове, така че трябва да се добави още един файл в / библиотеки / Joomla / форма / правило /. Наречете го attachment.php

Този файл ще създаде JFormRuleAttachment клас. от който ще бъде наследен JFormRuleContactEmailAttachment клас. намира в /components/com_contact/models/rules/contactemailattachment.php файл

В него виждаме, е публикувал кода, за да се покажат полетата са празни. Също така се проверява дали е необходимо областта или не.

В това, ние създадохме един клас, ние проверяваме стойността на "нашите" новодобавените области. Файл, че потребителят се отнася до съобщението, за да бъдем изключително изображението, плюс се тества върху празнината, ако в задължителното поле (кода на родителския клас).

► След потвърждение, можете да преминете направо към изпращането на съобщение. За да направите това, добавете необходимия код за ContactControllerContact на метод :: _ sendEmail компонента контролер (файла - /components/com_contact/controllers/contact.php).

Ами, всъщност, и всичко се променя.

Сега, ако всичко е направено правилно, посетителите на сайта, които искат да ви изпрати съобщение имат възможност да се прикрепят към него графичен файл, и можете да управлявате тази възможност чрез сайта на администратор: по всяко време, за да изключите тази област, за да добавите файл от обратната връзка се образува Joomla3 или да го превърнат отново.

Ние предлагаме следните услуги:

  • Разполагане сайт шаблон от оформлението на дизайн за мениджър CMS «1С-Битрикс на сайта" и CMS "Joomla"
  • Създаване на форми с различна сложност (въпросници за обратна връзка и т.н.) за посочения CMS
  • Setup и персонализиране на компоненти и модули за посочените CMS
  • Уточняване на модули и компоненти за заявиха, CMS, добавяйки, обичай функционалност
  • Развитие на Landing (целеви страници)

За всички въпроси, моля, свържете се чрез формата за контакт

Аз Представяме на Вашето внимание: