Jak wstawić formularz kontaktowy na wybranych wpisach?
Przepis działa zarówno w Drupalu 7 jak i 6
Adnotacja dla D6 na końcu tekstu.
Drupal 7
Potrzebny będzie dodatkowy moduł – Webform.
Dzięki niemu można tworzyć formularze kontaktowe z polami różnego typu, pola tekstowe, załączniki itp.
Instalacja modułu.
Ściągnij moduł do katalogu sites/all/modules i rozpakuj go tam.
Jeżeli używasz Drush:
drush dl webform
drush en webform
Konfiguracja modułu.
Dodatkowe opcje
1.wyświetlanie formularza kontaktowego na wybranych rodzajach zawartości
2.wyświetlanie formularza zależnie od wybranego pola we wpisie
3.jak w zapytaniu otrzymanym przez admina strony pokazać informację, z którego miejsca na stronie formularz został wysłany
Ad. 1
W części mówiącej o konfiguracji formularza wybrane zostało, że formularz ma być dostępny jako blok, teraz to wykorzystam.
Na stronie z blokami znajdź swój formularz coś w stylu Webform: Nazwa towjego formularza
Wejdź w jego konfigurację i zakładce Pokazuj blok na określonych stronach wybierz opcję Strony, na których poniższy kod PHP zwraca TRUE (opcja dla ekspertów) Musisz mieć włączony moduł PHP Filter, który jest rdzennym modułem Drupala nie musisz go ściągać.
UWAGA: Dla Drupala 6 w poniższych kodach zamień $node = node_load($nid) ; na $node = node_load(array('nid' => $nid));
Teraz w polu tekstowym wpisz poniższy kod:
<?php
$match = false;
// wpisz typy zawartosci na ktorych blok ma sie pojawic
$types = array('article' , 'page');
if (arg(0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$node = node_load($nid) ;
$type = $node->type;
$match |= in_array($type, $types);
}
return $match;
?>Ad. 2
Przykładowo, do wybranych produktów chcesz dołączyć formularz kontaktowy.
Wyświetlanie formularza będzie zależało od tego jakie ustawienia będzie miało pole w produkcie.
Dodaj nowe pole do swojego rodzaju zawartości. Typ przechowywanych danych wybierz Lista (tekst) a rodzaj pola do edycji danych Lista wyboru/lista pól radio.
W konfiguracji pola w możliwych opcjach wyboru wpisz pod sobą „tak” „nie” (bez „”).
Ustaw to pole jako wymagane.
Konfiguracja bloku formularza odbywa się tak samo jak w punkcie 1.
Różni się tylko kod, który w tym przypadku wygląda tak:
<?php
if (arg(0) == 'node' && is_numeric(arg(1)))
{
$node = node_load(arg(1));
if (isset($node->field_czyform)) // tutaj wpisz nazwę swojego pola które utworzyłeś
if($node->field_czyform['und'][0]['value'] == 'tak') // „tak” to jedna z opcji pola.
return true;
}
?>Ad. 3
W momencie gdy ktoś wyśle formularz, jego treść trafia do wybranych odbiorców. W treści zawarte są wszystkie dane, które wybrał użytkownik.
Przydatna informacją może być miejsce na stronie z którego został wysłany formularz.
Przykładowo gdy ktoś korzysta z formularza umieszczonego na stronie produktu i pyta o niego, w treści dostaniemy adres www produktu!
Co trzeba zrobić?
Dodać nowe pole do formularza
Wejdź na admin/content/webform tam edytuj wybrany formularz. Kliknij w zakładkę Webform.
Teraz dodaj nowe pole. Nazwij je jakoś a typ ustaw na Ukryty (Hidden)
Wartość domyślną wpisz:
%server[HTTP_HOST]%server[REQUEST_URI]
Pomocny był ten materiał http://php.net/manual/en/reserved.variables.server.php
Adnotacja dla Drupala 6
Potrzebne moduły – Webform i Webform Block
Kod php:
UWAGA: Dla Drupala 6 w poniższych kodach zamień $node = node_load($nid) ; na $node = node_load(array('nid' => $nid));
Reszta analogicznie.


