Többnyelvű oldal, kizárólag magyar loginnal

Dibusz Tamás képe

Sziasztok!

Többnyelvű oldal esetében hogyan érdemes (egyszerűen, gyorsan, elegánsan) megoldani, hogy a login kizárólag a magyar nyelvű oldalakon jelenjen meg?
A login blokkot levettem, de pl.: a www.valami.hu/en/user oldalon a login és a regisztráció elérhető.
Azért szeretném ezt megoldani, mert egy készülő oldalon, regisztrációhoz kötött ügyféltámogatást szeretne nyújtani a megrendelő, viszont szeretnénk elkerülni az idegen nyelvű felhasználók regisztrációját, illetve az ezzel kapcsolatos bonyodalmakat.

Drupal verzió: 
Sk8erPeter képe

Legegyszerűbb megoldás az, ha egy #after_builddel egy tetszőleges modulban megadsz egy függvényt, amivel eltünteted a formot, ha nem a magyar nyelvű felületet használják.
De ettől még a magyar nyelvű felületet böngészve persze a külföldi felhasználók is ugyanúgy be fognak tudni jelentkezni vagy regisztrálni!

Példa:

  1. /**
  2.  * Denying registering or logging in when not using the Hungarian interface
  3.  */
  4. function YOURMODULE_deny_login_or_register_form_after_build(&$form, &$form_state) {
  5. global $language;
  6. if ($language->language !== 'hu') {
  7. $form = array();
  8.  
  9. $form['login_or_register_denied'] = array(
  10. '#value' => '<div class="form-item">' . t("We're sorry, but logging in or registering is currently enabled only for Hungarian users.") . '</div>'
  11. );
  12. }
  13.  
  14. return $form;
  15. }
  16.  
  17. /**
  18.  * Implementation of hook_form_FORM_ID_alter()
  19.  */
  20. function YOURMODULE_form_user_login_alter(&$form, &$form_state) {
  21. $form['#after_build'][] = 'YOURMODULE_deny_login_or_register_form_after_build';
  22. }
  23.  
  24. /**
  25.  * Implementation of hook_form_FORM_ID_alter()
  26.  */
  27. function YOURMODULE_form_user_login_block_alter(&$form, &$form_state) {
  28. $form['#after_build'][] = 'YOURMODULE_deny_login_or_register_form_after_build';
  29. }
  30.  
  31. /**
  32.  * Implementation of hook_form_FORM_ID_alter()
  33.  */
  34. function YOURMODULE_form_user_register_alter(&$form, &$form_state) {
  35. $form['#after_build'][] = 'YOURMODULE_deny_login_or_register_form_after_build';
  36. }

Teszteltem, működik: ha nem a magyar nyelvű felületen keresztül próbálnak regelni vagy bejelentkezni, akkor megjeleníti a figyelmeztetést. De ez persze csak előszűrőnek jó.
(YOURMODULE persze mindenhol helyettesítendő a saját modulod machine name-jével.)

0
0
Dibusz Tamás képe

köszönet!

Remélem nem állnak neki számukra idegen nyelven űrlapokat kitölteni. Mindenesetre kiindulási alapnak tökéletes, valamilyen formában tudatjuk velük, hogy bizonyos funkciók csak a magyar felhasználók számára elérhetőek.

0
0
Sk8erPeter képe

Örülök, hogy segített a kód!

0
0