מספר סידורי לNODE
שלומות!
לאתר שאני עובד עליו עכשיו נדרשת דרך כלשהיא של הצמדת "מספר סדורי" לNODE.
לא היו לי יותר מידי רעיונות לעשות זאת ואחד הפתרונות שהגעתי אליו הוא למעשה להשתמש בID של הNODE ובכך לקבל מספר סידורי כלשהו.
אז באמצעות Automatic Nodetitles ו Token גרמתי לNODE לקבל באופן קבוע את המספר שלו.
רק יש בעיה אחת, שלא ממש הצלחתי למצוא לא פיתרון.
המספר של הNODE מתקבל רק לאחר שהNODE נשמר. מה גורם לכך שהמספר שלו לא מתקבל ומופיע בכותרת - לצערי.
האם מישהו מכיר דרך להתמודד עם הנ"ל?
או לחילופין דרך אחרת של הרצת מספרים (ממש לא משנה מאיזה מספר או איזה סדר {עדיף שיהיה עוקב}) בתוך יצירת NODE חדש?
לתשובתכם אודה!

מה לגבי שימוש ב-
מה לגבי שימוש ב- hook_nodeapi() עם op=insert ?
יכול להיות שערך op אחר יתאים. אני זוכר שהתאור של הערכים לא מאוד אינטואיטיבי וייתכן ש- op אחר יעבוד לך. בכל מקרה אני די בטוח שאתה יכול לתפוס את ה-node ארי היצירה שלה, כשיש לך את הnid ולעדכן איתו את הכותרת.
כמובן, יש עוד דרכים (TIMTOWTDI)...
בועז
נכתב על ידי boaz_r: כמובן, יש
כמובן, יש עוד דרכים (TIMTOWTDI)...
לכן השאלה זה איזה שימוש תעשה במספר הסידורי ואיה מטרה הוא משרת ?
yakoub abaya
זה בדיוק מה שהיה לי לשאול
זה בדיוק מה שהיה לי לשאול בהמשך. הכל תלוי ב-למה אתה צריך את המספר, מתי את משתמש בו ואיך, וגם לאיזה כיוונים תצטרך לשנות או להרחיב בעתיד.
בועז
המטרה ממש לא עקרונית זה סתם
המטרה ממש לא עקרונית
זה סתם סוג של מעקב - לכן עדיף שיהיה רציף.
מה שקורה לצורך העיניין - אתה מזין טופס (NODE) אני מקבל את המספר שלו - מתעד אותו במקום אחר ומשם מטפל בו
הקטע הוא שיהיה מספר לNODE שיופיע בכותרת שלו..
שחר מזרחי, YSM
http://YSMblog.net
עזוב אותך מעקרונות , ותגיד מה
עזוב אותך מעקרונות , ותגיד מה אתה מנסה לעשות
תתאר את התהליך , איך הוא שונה מתהליך "יצירת תוכן" רגיל ?
אתה אומר שהוכתרת צריכה להראות הסידורי , האם הכותרת משרתת מטרה אחרת ?
אפשר להשתמש בפעולת ה load של nodeapi ואז פשוט תשרשר הסידורי לכותרת :
http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hoo...
<?phpfunction mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
if($op=='load'){
//$node->title="$node->title [ $node->nid ] ";
//or maybe this is better :
$extra['title']="$node->title [ $node->nid ] ";
return $extra;
}
?>
תסתכל על הקטע פו :
node.module/function/node_load/6" title="http://api.drupal.org/api/drupal/modules--node--node.module/function/node_load/6">http://api.drupal.org/api/drupal/modules--node--node.module/function/nod...
<?phpif ($extra = node_invoke_nodeapi($node, 'load')) {
foreach ($extra as $key => $value) {
$node->$key = $value;
}
}
?>
ואולי ישרת אותך יותר טוב פעולת ה prepare
http://api.drupal.org/api/drupal/modules--node--node.pages.inc/function/...
yakoub abaya
לא הבנתי כל כך את קטעי הקוד
לא הבנתי כל כך את קטעי הקוד שצירפת.
עם זאת,
מה שאני מנסה לעשות הוא דבר כזה:
יצרתי סוג תוכן חדש, בו נמצאים שדות פתוחים / לבחירה
כאשר אתה כביכול ממלא את הטופס הנ"ל הפלט שאתה מקבל הוא למעשה סיכום של התשובות שלך.
עד כאן הכל טוב.
מכאן, אני צריך שהכותרת של העמוד שאתה יוצא תיהיה ערך מספרי כלשהו. (כאשר בעדיפות שזה יהיה מספר עולה עם כל עמוד שנוצר - לכן בחרתי להשתמש במספר עמוד עצמו שהעמוד מקבל לאחר שאתה מגיש אותו).
הבעיה היא שכל עוד אתה לא יוצר את העמוד עצמו הוא לא מקבל ערך מספרי, אלא רק אחרי השמירה.
מכאן שעובדה שהכותרת היא מספר העמוד חסרת ערך כל עוד אתה לא מבצע שמירה פעם נוספת ע"מ שהעמוד יתעדכן ויקח את מספר העמוד לכותרת.
לכן, הפתרון (הלא כל כך) הגיוני לכך הוא לשמור את העמוד פעמיים (לא בכפילות, אלא בפעם אחרי פעם) בכדי שיוכל לקבל את הערך המספרי שהעמוד מקבל ויכניס אותו לכותרת.
השאלה עכשיו היא איך לעזאזל אני עושה את זה... :~/
ובלי כל קשר תודה רבה על העזרה!!
שחר מזרחי, YSM
http://YSMblog.net
הבעיה היא אם המשתמש יבחר
הבעיה היא אם המשתמש יבחר בביטול הטופס לאחר הצגתו אז נוצר node ללא שימוש
מצד שני אם אתה לא יוצר node ושומר אותו , אז יש בעיה בגישת משתמשים לטופס במקביל
לכן הפתרון זה כן ליצר node לפני הצגת הטופס , אבל צריך להכניס אותו למאגר
כך שאם משתמש מבטל אז ה node יישמר עבור הפעם הבאה שמשתמש יפתח הטופס
קצת מסובך , אני אחזור לך עם קוד יותר מאוחר
yakoub abaya
מה זה האוואטר הזה שלך?
מה זה האוואטר הזה שלך? slackware עוד חיים??? :-)
מסתבר שכן, בביקור באתר שלהם... .
החיים מלאים בהפתעות :-)
בועז
אני מאמין באנשים שאומרים
אני מאמין באנשים שאומרים דברים בטקסט פשוט בלי גרפיקה ושיווק
http://slackware.com/info/
וספר המדריך שלהם מאוד נוח ויפה לקריאה :
http://www.slackbook.org/html/index.html
yakoub abaya
אם הבנתי נכון אולי אפשר ב-
אם הבנתי נכון אולי אפשר ב- op=load, ז"א בהצגת node לבדוק האם יש לה את המספר בכותרת. אם המספר הזה תמיד בסוף הכותרת זה קל לבדוק. ואז, אם אין, ה- node מעודכן אוטומטית לפני הצגתו, נשמר, ורק אז מוצג.
כל זה טוב,
רק אם אין לך שימוש ב- nodes האלו לפני הצגתם, שזה ייתכן רק אם אתה שומר node איכשהו בלי הצגתו, וגם לא מציג אח"כ אלא בעזרת, למשל, view כלשהו.
רוב הסיכויים שמה תיארתי לא רלוונטי ולכן אתה יכול לעשות מה שתואר בפסקה הראשונה. כל זה, בהנחה שהבנתי את הדרישות :-)
אני מקווה שאני ברור... .
בועז
למען האמת לא ממש הבנתי למה
למען האמת לא ממש הבנתי למה אתה מתכוון בפיסקה הראשונה
הרי כל עוד הNODE לא נשמר הוא לא מקבל ערך מספרי. (הכוונה לNODE/100 למשל)
שחר מזרחי, YSM
http://YSMblog.net
נכון אבל תזכור שבשיגור
נכון אבל תזכור שבשיגור דיפולטי של node, מיד אח"כ הוא מוצג לך, והרי לך אופרצית load של ה- node הזה. למעשה, הצגת ה-node הזה מיד אחרי שיגורו לא שונה מהצגתו בכל פעם אחרת. בכל הצגה של node, אתה יכול לבדוק אם הכותרת שלו מעודכנת עם המספר.
בועז
יש פה כמה רעיונות שאולי
יש פה כמה רעיונות שאולי יעניינו אתכם :
http://drupal.org/node/194197
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming
יאללה! יש פיתרון! תגובה 48 שם
יאללה! יש פיתרון!
תגובה 48 שם פתרה את הבעיה.
פאצ' קטן ליישום על המודול auto_nodetitle
שחר מזרחי, YSM
http://YSMblog.net
שזה בדיוק מה שהומלץ בהתחלת
שזה בדיוק מה שהומלץ בהתחלת השרשור הזה.
תבדוק טוב את הקוד שהוא עושה בדיוק, ורק את מה שאתה רוצה.
חוץ מזה, אולי שווה לך להסתמך לא על auto_nodetitle אלא פשוט קוד שלך כדי לממש את השינוי שאתה רוצה, כדי לא ליצור תלות על מודול נוסף.
בועז
אני ממליץ כן להסתמך על
אני ממליץ כן להסתמך על auto_nodetitle.module - בוגר, חזק, נפוץ, אמין ועם הפנים קדימה... (d7)
אני אף מלמד אותו בקורס דרופל של פרקטיקול :) הוא פשוט מצוין.
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
אין לי שום דבר נגד המודול אבל
אין לי שום דבר נגד המודול אבל באופן עקרוני, כן לשלב מודול או לא זו סוג של שאלה ארכיקטורלית.
אם אתה מנצל את מרבית שרותי המודול, והוא טוב, זה מתבקש לשלב.
אם כל מה שאתה צריך ממנו זה קטע הקוד שהוזכר למעלה אני לא רואה סיבה להכניס עוד מודול לקונפיגורציה של האתר. כל מפתח דרופל, ובכלל, יודע שהוספה של "פלאגאינים" גם מכבידים על המערכת. השאלה צריכה להיות מוכרעת על בסיס האם מימוש קטע קוד לא ארוך של nodeapi() עושה את העבודה או לא (גם במבט לעתיד, הרחבה של הפונקציונליות הנדרשת).
בועז
אוקיי הבנתי. אני באותה גישה.
אוקיי הבנתי. אני באותה גישה. חשבתי שהוא כן עושה שימוש ברכיב גם לשמירת מחרוזת אחרת ורצה "על הדרך" להשתמש בו גם עבור זה. מסכים לחלוטין.
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
לא חשבתי שחשבת אחרת :-) פשוט
לא חשבתי שחשבת אחרת :-)
פשוט רציתי להבהיר באופן כללי.
ובודאי שאם הוא משתמש במודול גם ככה (ובאמת צריך אותו) אז ההוספה לעיל כנראה טובה.
בועז
הפאצ הזה גרוע כי הוא כותב
הפאצ הזה גרוע כי הוא כותב ישירות לטבלאת node מתוך hook_nodeapi
לא כך צריכים לעבוד עם hook_nodeapi , יש סדר של קריאות והשתלשלות הפעולות
זה לא נכון באמצע ההשתלשלות לעקוף הכול וסתם לכתוב לטבלא לא שלך .
בנוסף הרי כל האתגר זה ליצר המספר הסידורי והכותרת עם עלית הטופס עוד לפני שהנתונים נשמרים , אבל הפאצ זה עושה זאת בזמן שמירה
yakoub abaya
והנה הרעיון
והנה הרעיון שלי:
http://drupal.org/project/serial
מומחים באפיון, עיצוב ובניית אתרי דרופל | WGN Media
אני בהחלט חושב שזה הפיתרון
אני בהחלט חושב שזה הפיתרון שלי - אני מנסה אותו עכשיו :)
ןTSL ממש תודה על הקישור - הוא פיתרון (קוד) לא רע בכלל.
בכל אופן שלחתי מייל למפתח של המודול שיכניס שם כמה תיקונים בכדי שלא נצטרך לעשות שם HOOKים שכאלה :)
איידע ברגע שאסיים :)
תודה רבה לכולם!!
שחר מזרחי, YSM
http://YSMblog.net
פתרון טוב, אבל עדיין קיימת
פתרון טוב, אבל עדיין קיימת הבעיה של שמירת הNODE מחדש...
כל עוד הNODE לא נוצר אי אפשר לקבל עבורו מספר - מה שגורם לכך שסריאלי לצורך העיניין לא מופיע בכותרת.
כנראה שהפתרון היחדי הוא להשתמש בקוד כשלהו :/
רעיונות?
שחר מזרחי, YSM
http://YSMblog.net
האהאהאהא ... תחכה לפתרון שלי
האהאהאהא ... תחכה לפתרון שלי , רק אני מבין מה אתה מנסה לעשות אבל אני עסוק עכשיו
yakoub abaya
חחח הפתרון כבר נמצא... אתה לא
חחח הפתרון כבר נמצא... אתה לא עוקב :P
שחר מזרחי, YSM
http://YSMblog.net
טוב בכל מקרה היה דיון מעניין
טוב בכל מקרה היה דיון מעניין :)
אני אנסה להציג הפתרון שלי בכל זאת מאוחר יותר
yakoub abaya
מגניב, מעניין יהיה לשמוע.
מגניב, מעניין יהיה לשמוע.
שחר מזרחי, YSM
http://YSMblog.net
אני מבין שכבר מצאת פתרון, אבל
אני מבין שכבר מצאת פתרון, אבל אם לא, אז הנה דרך מאד פשוטה שבה אני משתמש לפתרון אותה הבעיה בדיוק.
מודול RULES.
ושם את יכול לקבוע כלל שמופעל אחרי שמירה של תוכן ובו אתה יכול גם לשנות את שדה הטייטל של אוו התוכן בדיוק. לא צריך הוקים, לא צריך קוד ולא צריך לשמור פעמיים...
נראה לי שזו הדרך האלגנטית
נראה לי שזו הדרך האלגנטית והנכונה ביותר. צודק.
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
נכתב על ידי ליאור פ: כלל
כלל שמופעל אחרי שמירה של תוכן
כבר אמרנו כמה פעמים שהאתגר הוא ליצר הכותרת והסידורי לפני השמירה
yakoub abaya
מי אמר? ולמה אתגר? הציגו כאן
מי אמר? ולמה אתגר?
הציגו כאן בעיה שצריכה פתרון ולא אתגר אינטלקטואלי שיראה כמה יפה אתה שולט בהוקים.
הדרישה שהעלה מפרסם השאלה היא שכותרת האייטם תהיה ה-NID שלו.
הפתרון שהצעתי עושה בדיוק את זה.
גם אם זה קורה רק עם לחיצה על שמירה של התוכן.
זה לא מצריך את המשתמש לעשות משהו ידנית, זה פשוט קורה. ועובד. כמו שצריך ולפי הדרישה.
זה לא סקסי כמו לכתוב הוקים, וזה לא מוציא אותך (או אותי) גדול.
אבל זה עושה את העבודה, וזו השורה התחתונה.
אתה מדבר על הפתרון הזה כמשהו
אתה מדבר על הפתרון הזה כמשהו מוכח / שניסית אותו?!
לייצג את הNID בכותרת זה פשוט. הבעיה מגיעה שאתה שומר את הNODE בפעם הראשונה רק אז הוא מקבל את הNID שלו ואז הוא לא מייצג אותו בכותרת...
שחר מזרחי, YSM
http://YSMblog.net
זה משהו מוכח שניסיתי
זה משהו מוכח שניסיתי ועובד.
אתה מייצר RULE שעובד עם שמירת ה-NODE ומה שהוא עושה, זה למעשה להחליף את הכותרת בכל דבר שתבחר.
זה נעשה מייד עם שמירת ה-NODק, אבל לא מצריך שום התערבות.
עובד כמו שעון שוויצרי.
אני משתמש בזה בכל עמודי המכשירים באתר gsm-israel.
הכותרת אותה מזינים עורכי האתר הינו דגם המכשיר.
ורצינו שהכותרת תהיה שם החברה + שם המכשיר.
בהתחלה ניסיתי לעשות את זה בדרך שאותה תיארת (auto node titles), אבל זה באמת הצריך שמירה כפולה של התוכן.
ברגע שהעברתי את זה לצורה הזו זה עובד באופן חלק והוכנסו כבר כמה אלפי תכנים בדרך זו ללא בעיה.
אם תצטרך עזרה במימוש, תשאל ואשמח לעזור.
למה לא עבד לך האוטונוד טייטל
למה לא עבד לך האוטונוד טייטל אני לא מבין. אם מדובר במחרוזות מתוך CCK (שדה טקסט, שדה מצביע) - זה עובד. למה לא עבד?
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
כי זה לא מתוך שדה CCK. הייתי
כי זה לא מתוך שדה CCK.
הייתי צריך שעם שמירת התוכן שדה הכותרת ישתנה ויהפוך להיות:
מונח ממילון טקסונומי + מה שהוכנס כשדה הכותרת.
אוטונוד טייטל לא יודע מה הוכנס לשדה עד שהעמוד נשמר כך שצריכים לשמור אותו פעם נוספת כדי לגרום לזה לקרות.
השימוש ב-RULES פתר את הבעיה כיוון שהוא מופעל מייד עם שמירת התוכן וכל הערכים כבר נמצאים ומוכנים לשימוש.
ליאור! במילה אחת : אתה במילה
ליאור!
במילה אחת : אתה
במילה שניה : מלך
במשפט שלם : אתה מלך!
אחלה של פיתרון - ניסיתי אותו - עובד מעולה!!
והרבה יותר עדיף לדעתי על הוקים בקוד של המודול P:
שחר מזרחי, YSM
http://YSMblog.net
אפרופו כותרות אוטומטיות,
אפרופו כותרות אוטומטיות, אהבתי את הכותרת האוטומטית שניתנה לתגובה שעליה אני מגיב ("ליאור! במילה אחת : אתה במילה").
:-)
בועז
חחח עבודה טובה של לבבי, אני
חחח
עבודה טובה של לבבי, אני מניח?
שחר מזרחי, YSM
http://YSMblog.net
לא, עבודה של הנהלת דרופל
לא, עבודה של הנהלת דרופל העולמית :)
רכיב node - כשאין כותרת פשוט יוצר כותרת מהמילים הראשונות.
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
התכוונת comment, לא ?
התכוונת comment, לא ?
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming
לפי מה שאני רואה, אין לך
לפי מה שאני רואה, אין לך אפשרות בכלל לחבר או בכלל לשנות את הכותרת...
שחר מזרחי, YSM
http://YSMblog.net
זו מן הסתם עבודה של מודול ה-
זו מן הסתם עבודה של מודול ה- comment.
האם כבר יש לנו את השרשור הארוך ב- DOIL? :)
בועז
עם כל החפירות האלה... יש
עם כל החפירות האלה...
יש מצב...
שחר מזרחי, YSM
http://YSMblog.net
השיא זה 58 תגובות אבל אנחנו
השיא זה 58 תגובות אבל אנחנו בכיוון
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming
איפה ראית את זה? ואם כבר שיא
איפה ראית את זה?
ואם כבר שיא בתגובות נראה לי שהדיון על מסיבת דרופל 7 תיקח את השירשור הזה בסיבוב - החפירות חוסר והסדר והבלבול עברו שם כל גבול :P
שחר מזרחי, YSM
http://YSMblog.net
http://www.drupal.org.il/trac
http://www.drupal.org.il/tracker?order=comment_count&sort=desc
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming
אמרתי לך...
אמרתי לך...
שחר מזרחי, YSM
http://YSMblog.net
שיט, זה באמת comment - רכיב
שיט, זה באמת comment - רכיב פרימיטיבי... תודה על התיקון! אם זה היה node אז אולי היה סיכוי לשדות כבר ב-6
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
אני הבנתי את זה שכבר בעלית דף
אני הבנתי את זה שכבר בעלית דף הטופס של יצירת ה node יופיע שדה הכותרת עם מספר סידורי בערך ברירת מחדל
האמת שאין הרבה הגיון בדרישה הזאת , אבל אני כנראה לקחתי את זה בכיוון הזה כי זה נראה לי מעניין .
yakoub abaya
נכתב על ידי Shahar: הבעיה היא
הבעיה היא שכל עוד אתה לא יוצר את העמוד עצמו הוא לא מקבל ערך מספרי, אלא רק אחרי השמירה....
....לייצג את הNID בכותרת זה פשוט. הבעיה מגיעה שאתה שומר את הNODE בפעם הראשונה רק אז הוא מקבל את הNID שלו ואז הוא לא מייצג אותו בכותרת...
גם אני.
צחי שלידור, לינוויט
תשתיות תוכן קהילתיות
Sasson - Smart Drupal Theming