Joomla formularul de feedback 3 - adaugă capacitatea de a atașa un fișier

Recent, unul dintre vizitatorii site-ului meu mi-a oferit pentru a extinde funcționalitatea formularul de feedback: adăugați capacitatea de a atașa fișiere la mesajul care este trimis după completarea formularului. Fișierele trimise prin intermediul formularului ar trebui să fie format grafic. Astfel, vizitatorul va fi capabil să se atașeze la postarea orice captură de ecran.

Joomla formularul de feedback 3 - adaugă capacitatea de a atașa un fișier

Sunt interesat de această propunere, și un pic de reflecție, m-am dus la locul de muncă. De fapt, capacitatea de a extinde Joomla componenta com_contact este ușor. Cu toate acestea, există un moment de „rău“: Dacă efectuați modificări în fișierele componente, actualizați mai mult decât ar fi imposibil, pentru că atunci când faceți upgrade toate modificările vor fi pierdute.

Puteți încerca să clona componenta. Dar, așa cum este construit în sistem pentru a face acest lucru nu este atât de simplu - există multe vicii diferite, astfel încât să lucreze copie componentă com_contact nu am întors. Ca urmare, decizia sa dovedit a nu perfectă, dar funcționează :).

Deja la sfârșitul lucrării am „dat“ pe un singur articol de pe site-ul documentația pentru Joomla. Se spune că pentru extinderea formei de feedback (și alte componente ale sistemului) trebuie să creați un plug-in. Astfel, nu modificați fișierele din componentele sistemului, și nu pierde ocazia de a actualiza CMS.

Cu toate acestea, articolul nu specifică modul în care să adăugați logica (în acest caz, verifica și trimite un fișier, împreună cu alte date), fără a modifica fișierele componente.

Acum voi descrie întregul proces de schimbare a componentei de feedback. Am petrecut pentru a adăuga în formă de „dosar“ tip de câmp.

Deci, mai întâi vom face mici modificări în partea administrativă a site-ului:

► Se modifică fișierele de limbă.

/administrator/language/ru-RU/ru-RU.com_contact.ini
Adăugați următoarele linii:

În fișierul /administrator/language/en-EN/en-EN.com_contact.ini adăugați aceeași linie, dar valoarea lor va fi expresii în limba engleză. Astfel, oferă mai multe limbi.

► Editați fișierele: (nume de secțiune FIELDSET = "CONTACT_FORM") /administrator/components/com_contact/config.xml și /administrator/components/com_contact/models/form/contact.xml (secțiunea numele FIELDSET = "e-mail") adăugat la ambele înaintez următorul cod:

Ca urmare a acestor două acțiuni în partea administrativă a site-ului la pagina caracteristica com_contact Joomla. Veți fi capabil de a activa și dezactiva afișajul câmp pentru a adăuga fișiere în formularul de feedback.

Pentru a aminti cititorului că o schimbare a parametrilor de contact admin, acestea sunt stocate într-o bază de date: Tabelul __contact_details. params domeniu.

Acum vom trece la a schimba fișierele componente în secțiunea publică.

► Acum șablon componentă com_contact devine o valoare a parametrului disponibil adăugată allow_images_attach. Înainte de a modifica codul șablonului, acesta ar trebui să fie copiate în șablonul site-ul dosar: /templates/imya_shablona/html/com_contact/contact/default_form.php

Pentru a verifica, puteți plasa codul de mai jos în acel fișier.

Dacă nu există erori, componenta de pagină în partea publică a site-ului va indica „1“.

► În continuare, se adaugă o descriere a câmpului pentru a atașa un fișier (imagini) în fișier XML cu descrierea câmpurilor de formular în modelul (/components/com_contact/models/forms/contact.xml).

► În limba fișierele pe care doriți să adăugați o semnătură (etichetă) și o descriere (descriere) pentru noul câmp (/language/ru-RU/ru-RU.com_contact.ini):

În fișierul /language/en-EN/en-EN.com_contact.ini adăugați aceeași linie, numai textul în limba engleză ca valoare.

► Adăugați la șablonul formular (/templates/imya_shablona/html/com_contact/contact/default_form.php) următorul cod:

După adăugarea acestui cod la componenta feedback-ul paginii există un câmp pentru a adăuga un fișier.

Pentru a forma repetat în mod corespunzător, trebuie să adăugați eticheta

următoarea expresie:

În plus, adăugați un câmp ascuns, care va conține dimensiunea maximă de fișier atașat:

► Acum vă puteți gândi la adăugarea de validare câmp. Pentru un bloc de start a descrierii câmpului într-un fișier adăuga element de /components/com_contact/models/forms/contact.xml validați.

Apoi, aveți nevoie pentru a crea o sursă de fișiere (reguli) pentru validare. fișier Contactemailattachment.php va fi numit și plasate în dosarul / componentelor / com_contact / modele / reguli /.

Inițial, sistemul nu validează câmpurile de formular pentru a atașa fișiere, astfel încât trebuie să adăugați un alt fișier în / biblioteci / joomla / formă / regula /. Sunați-l attachment.php

Acest fișier va crea clasa JFormRuleAttachment. din care va fi moștenită de clasa JFormRuleContactEmailAttachment. situat în fișierul /components/com_contact/models/rules/contactemailattachment.php

În ea, vom vedea postat codul pentru a verifica câmpurile sunt goale. De asemenea, verificat dacă este necesară sau nu domeniu.

În acest sens, am creat o clasă, vom verifica valoarea câmpurilor „noastre“ nou adăugate. Fișiere pe care utilizatorul se aplică mesajul, să fie exclusiv imaginea, plus fiind testat pe nul în cazul în câmpul obligatoriu (codul clasei părinte).

► După validare, puteți trece direct la trimiterea unui mesaj. Pentru a face acest lucru, adăugați codul necesar pentru metoda ContactControllerContact :: _ sendEmail componenta controler (fișier - /components/com_contact/controllers/contact.php).

Ei bine, de fapt, și totul se schimbă.

Acum, dacă totul se face corect, vizitatorii site-ului dvs. care doresc să vă trimită un mesaj au posibilitatea de a atașa la acesta un fișier imagine, și puteți gestiona această oportunitate prin intermediul site-ului admin: în orice moment pentru a opri câmpul pentru a adăuga un fișier de feedback-ul face Joomla3 sau porniți-l din nou.

Noi oferim următoarele servicii:

  • șablon de cuibărit site din structura de proiectare pentru Managerul CMS «1C-Bitrix Site-ul“ și CMS «Joomla»
  • Crearea de forme de complexitate diferite (chestionare de feedback etc) pentru CMS specificat
  • Configurare și personalizare a componentelor și a modulelor pentru CMS specificate
  • module si componente pentru Refinement CMS a spus, adăugând funcționalitate personalizată
  • Dezvoltarea de aterizare (aterizare pagini)

Pentru toate întrebările, vă rugăm să contactați prin formularul de contact

Vă aduc la cunoștință dumneavoastră: