Szabály: Névtelen felhasználót iránytsa a regisztrálási oldalra tartalom beküldésekor

vidra képe

Hali.

Szeretnék egy szabályt létrehozni arra, hogy ha egy névtelen felhasználó be szeretne küldeni egy tarartalmat (tehát node/add/....) akkor autómatikusen ugorjon a regisztrációs oldalra.

Nos azt hittem ezt egyszerűen megoldom, de nem sikerült.

Mi legyen pl. az esemény?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
y50cw képe

Namármost, ha regisztrációhoz van kötve a tartalom beküldés, akkor ugye a jogosultságokat kell belőni. Innentől viszont minek kell átirányítani?
Eleve muszáj lesz regisztrálni, ha tartalmat akar beküldeni....

Erre nincs konkrétan ilyen trigger[*]. De, egyszer volt egy ilyen nekem;

Van ugye "A" lap:
-----
Hozzáférés megtagadva
Nincs megfelelő jogosultság a lap megtekintéséhez.
----

Na ezt szépen szerkesztjük, mehet rá link is a regisztrációhoz, és így már amúgy is kell bővebb információ. A felhasználóknak, sosem elég az infó. :)

Rendben, ez pl. nem irányít át magától, de szerintem ne is tegye. Én úgy vettem észre, jobb ha egy külön lapra viszed az usert, és ott megtalálja az információt; ez most miért történt, és egyáltalán mi merre... Meg fogják hálálni, ha informatív vagy.

[*] Lehet, van rá modul; De nem írtad, melyik Drupal verzió...

0
0
vidra képe

ez is egy megoldás, ha minden kötél szakad.

Eerre azért van szükségem, mert bár a jogosúltságok be vannak állítva, de van egy tartalmam ami mindenki számára publikus, és ki van helyezve egy link, hogy ha úgy tartja kedve küldhet be bárki. Természetesen csak miután regisztrált, de ezt a link mellé nincs feltüntetve.

Ezért szerettem volna azt, hogy ennél az egy tartalomtípusnál ebben az esetben ugorjon a regisztrációs oldalra.

0
0
y50cw képe

Ez rendben is van, de engem zavarna, ha már eleve regisztrált tag vagyok,
csak nem vagyok belépve... :)

De megnézem neked, mit lehet tenni; van megoldás az biztos.
Este jelentkezem.

0
0
vidra képe

Keresgéltem én is egyenlőre még semmi.

0
0
Illyés Edit képe

A Hibajelentés oldalon beállítod 403-nak a user vagy a user/register útvonalat.

0
0
vidra képe

Ezt még nem is néztem, ez még jó is lehetne, csak az a baj, hogy ezt a dolgot csak erre az egy tartalomtípusra szeretném alkalmazni. Így viszont gondolom az összesre vonatkozik.

0
0
szantog képe

Ez egy nagyon szép és drága esemény: content is going to be viewed, drupalul a hook_init. Ez azt jelenti, hogy minden oldalletöltésből el fog rabolni 20-40ms-ot csak az, hogy beindul a rules, és nem fut le, mert ugye megakad a feltételnél.
Szóval inkább egy page_preprocess, valami ilyesmivel:

global $user;
if ($user->uid == '0' && (arg(0) == 'node' && arg(1) == 'add' ))) {
  drupal_goto('user/register');
  drupal_set_message(t('szép kis üzenet angolul, hogy le lehessen fordítani'));
}
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

vidra képe

És amúgy ezt a php kódot a template.php-ban kellene elhelyezni?

0
0
szantog képe

Egy pár napja elég bő lére engedett témában lett kivesézve.
http://drupal.hu/forum/men%C3%BCk-h%C3%A1tt%C3%A9rk%C3%A9p%C3%A9nek-cser...

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

vidra képe

majdnem jó volt a kód. Egy unset($_REQUEST['destination']) be kellett szúrnom mert az istennek se ugrott az oldalra csak várakozott.

  global $user;
  if ($user->uid == '0' && (arg(0) == 'node' && arg(1) == 'add' )) {
  unset($_REQUEST['destination']);
  drupal_set_message(t('A tartalom beküldéséhez regisztráció szükséges!'));
  drupal_goto('user/register');
 }

Köszönöm a segítséget, egyenlőre kiindulásnak ez jó lesz.

0
0
vidra képe

hogy ha a goto után iratom ki a message-et akkor nem írja ki, viszont így ahogy írtam így meg kiirja. Pedig logikus lenne, hogy kiirja fordítva is nem? És úgy is lenne célszerűbb.

0
0
aries képe

Ha megnézed a drupal_goto() forrását látni fogod, hogy az utolsó utasítás egy exit(). Azért kell elé a drupal_set_messages(), mert az a $_SESSION-be teszi az üzenetet, amit a sminkmotor minden oldalletöltésnél megvizsgál.

0
0
dj képe

<?php
  global $user;
  if ($user->uid == '0' && (arg(0) == 'node' && arg(1) == 'add' )) {
    drupal_set_message(t('A tartalom beküldéséhez regisztráció szükséges!'));
    drupal_goto('user/register');
    exit();
  }
?>
0
0

Üdv!
Dudás József

hosszu.kalman képe

A preprocess_page a sminkréteg függvénye, ez pedig funkcionális kérdés, ezért oda semmiképpen nem raknám.
Viszont erre való a hook_nodeapi prepare eseménye, amiben miután megvizsgálod a feltételeket át tudod irányítani a regisztrációs oldalra a felhasználót.

0
0