Drupalcon Szeged 2008

מעבר לדך הפרופיל מיד אחרי יצירה

מעבר לדף הפרופיל

למה אתה רוצה לעשות זאת? לא יזיק אם תתן לנו קצת חומר רקע בשאלות שלך, כי אולי נוכל לתת לך רעיונות אחרים או ביקורת.

אני מניח ש"אתה" פירושו "עתה".

ומה זה "פרופיל המשתמש"? האם זה דף עריכת "החשבון שלי"?

אם אני קורא את המחשבות שלך נכון, ה"מודול" הבא יעשה את העבודה:

<?php
function mymodule_user($op, &$edit, &$account) {
  if (
$op == 'insert' && user_access('administer users')) {
   
// we don't use drupal_goto() directly, because this will
    // abort some actions (e.g. sending notification email).
   
$_REQUEST['destination'] = "user/$account->uid/edit";
  }
}
?>

התשובה מפוזרת פה בפורום

אבל זה בעיקר בגלל שהצופה אינו המחבר וכך גם יוצר ה-node.
ה-node נוצר ע"י משתמש מסויים אבל נרשם כאילו עבור משתמש אחר.
לכן אני רוצה לאפשר מיד בסיום יצירת המשתמש (מה שבעזרת usernode יוצר גם nose מתאים) לעבור לnode שנוצר.
וזאת, ע"י מעבר אוטומטי לפרופיל הנוצר (משם כבר יש גישור אוטומטי לusernode)

כמעט אבל קרוב

אני צריך לדעת עכשיו מה ה-nid של ה-usernode שנוצר, ואליו לעבור.
חשבתי שזה יהיה באמת אוטומטי, אבל לא בגלל שפונים ישירות ל- user/uid...

...

את השורה הקריטית החלף בשתיים הבאות:

$nid = usernode_get_node_id($account);
$_REQUEST['destination'] = "node/$nid";

אבל יש בעיה קטנה: ה-node הזה עדיין לא קיים, כי המודול שלנו (mymodule) מתבצע לפני ש-usernode נכנס לפעולה ויוצר את ה-node.

זה משום שבסדר האל"ף בי"ת mymodule בא לפני usernode. לכן שנה את mymodule ל-zmymodule.

כן

כן

זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות

דרך נוספת היא

דרך נוספת היא להשתמש שוב בפונקציה שחובה להכיר אותה לעומק: form_alter, והפעם:

<?php
$form
['#redirect'] = "node/$nid";
?>

הנה ההסבר הרשמי, שמופי לא יגיד שהמצאתי...

זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות

זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות

הפנייה

יש כאן בעיה: המשתמש החדש נוצר רק לאחר submit, כך שבשלב המוקדם של form_alter עדיין איננו יודעים לאן להפנות.

חדש באתר