cck view
לכל מי שעדיין משתמש ב cck עם שדה node reference
אז אם ב tpl רוצים להציג שדות מ ה reference מומלץ להשתמש בשיטה זאת :
<?php
$node_ref = node_load($node->field_node_ref[0]['nid']);
content_view($node_ref, FALSE, TRUE);
drupal_render($node_ref->content);
content_alter($node_ref, FALSE, TRUE);
?>כך עבור שדה abc אפשר להציג :
<?php
print $node_ref->field_abc[0]['view']
?>במקום להתחיל לבנות אותו ידנית , כי אחרת זה עלול להוביל לפרצות xss
מעניין איך עושים את זה עם drupal 7 field api ?
עריכה : מספיק node_view
http://www.drupal.org.il/node/5985#comment-17469
- הבלוג של yakoub
- חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.

נתקלתי גם בזה לא
נתקלתי גם בזה לא מזמן:
http://drupal.org/project/nodereference_variables
נראה שצריך לתת לו עוד קצת אהבה - אבל הייתי אומר שזו הדרך הנכונה להביא את המידע הדרוש.
CPO.co.il - פתרונות דרופל.
node_view
השיטה שלהם לא טובה כי הם עושים node_view על כל ה node וככה ה מעצב מקבל מחרוזת html שרק יכול להדפיס
בשיטה שלי מקבלים אובייקט node שכל שדה בנפרד עבר render ולכן המעצב יכול להדפיס כל שדה בנפרד
אז לגמרי לא ברור למה אתה חושב שזאת הדרך ה "נכונה" , תסביר את עצמך ..
yakoub abaya
תראה: * Implementation of
תראה:
* Implementation of hook_preprocess_node().
Adds the fully loaded node object for each referenced Node
* Reference node attached to the parent node, E.g. if you
* have a Node Reference field called field_foo and it has
* three values, the loaded nodes will be accessible using:
print_r($field_foo[0]['node']);
* print_r($field_foo[1]['node']);
* print_r($field_foo[2]['node']);
להבנתי, שימוש בפונקציה של node_load בתוך קובץ .tpl זה לא בדיוק הדבר האופטימלי. אני חושב שעדיף להעביר את האובייקט עוד ב Hook_preprocess, ולא ב- Theming Layer.
ולהבנתי - אתה יכול בתוך כל אובייקט כזה להדפיס כל שדה בכל צורה - כולל בגרסה המרונדרת שלו (למרות שלא בדקתי בתכלס..) - ואם לא, אז אפשר להוסיף ולהשתמש בפונקציות שציינת בכדי לרנדר את התצוגה. אבל את האובייקט - להביא מה- hook.
לא? :)
CPO.co.il - פתרונות דרופל.
רפרנס
הפונקציה node_load לבד לא מתאימה , כי היא לא מוסיפה ['view'] לכל שדה
ואז המעצב צריך לבנות את מחרוזת ההצגה בעצמו בשימוש ב ['value']
וזה לא טוב כי לא ברור אם ה value עבר check_plain
אבל אני שכחתי שאובייקטים עוברים ב php ברפרנס גם אם לא מכריזים על זה בפונקציה המקבלת
לכן קריאה ל node_view עם אובייקט node ידאג לאתחל את ה ['view'] לכל השדות ואין צורך לקרוא לפונקציות למעלה כל אחת בנפרד כמו שעשיתי
yakoub abaya
יותר טוב היבט עם ארגומנט
ערך הארגומנט הוא כמובן ה-nid של הפריט המצביע.
את ההיבט אפשר להטמיע במספר דרכים - בקוד או בתוך פאנל.
אמיר
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
למה זה יותר טוב? :)
למה זה יותר טוב? :)
CPO.co.il - פתרונות דרופל.
הפשטה. למה דרופל יותר טוב מקוד ייעודי?
הפשטה.
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
נראה לי שאתם מתייחסים ל"יותר
נראה לי שאתם מתייחסים ל"יותר טוב" כפונקציה של פשטות עבודה ואבטחה - אני מתייחס ל"יותר טוב" כ"נכון מבחינת ביצועים".
זה שצריך לוודא שטקסט שמודפס או מרונדר עובר את הסינונים המתאימים - זה אמור להיות ברור. השאלה (לדעתי) היא מה יותר נכון מבחינת ביצועי האתר.
לא? :)
CPO.co.il - פתרונות דרופל.
כולם צודקים כאן...
חשובים הביצועים, ברור, אך באין נתונים מבחינת הדרישות, אז מבחינתי יש לבחור בדרך של רכיב קיים. זה שזה יותר מאובטח ויותר מהיר, אלו רק תופעות נגזרות מבורכות; מה שחשוב יותר זה השימוש החוזר בקוד חסון ושיפורו, אופציונלית.
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
נכון
היבט יותר טוב , למי שיודע להשתמש בהיבטים בדרך שתיארתה
נראה לי שהארגומנט צריך להיות ה nid של הפריט המוצבע ולא המצביע
הכי חשוב להימנע מלעבוד ישירות עם ערכי ה value של node_load
נראה לי שיש הרבה אתרים שעושים node_load ל node reference ועובדים עם ה value ישירות וזה משהו די גרוע לדעתי
yakoub abaya
תיקון נכון - הפריט המוצבע!
או במילים אחרות: זה שמהווה את ההקשר להצגת פריטים מקושרים.
אמיר
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
דרך ההיבט אתה יכול לגשת לשדות
של הnode המוצבע?
אני לא בטוח.
גם אני חושב שלא אפשרי
זה לא אפשרי בגלל זה כתבתי שהארגומנט זה ה "מוצבע" ולא ה "מצביע"
<?phpfunction template_preprocess_node(&$vars) {
$node = $vars['node'];
$node_reference_view = views_embed_view('myviewname',$node->field_node_ref[0]['nid']);
$vars['node_ref'] = $node_reference_view;
}
?>
yakoub abaya
relationships
שלום רב,
אני מנסה להבין את cck ו node reference בדרופל 7 .
yakoub מה הכוונה "למי שעדיין משתמש ב"
האם זה לא דבר בסיסי ליצירת relationships ?
נכון שרוב "המבנים" שך CCK נוספו לליבה של דרופל 7 , אך node reference לא!
האם זה לא נחוץ?!?
לתשובתכם אודה
גגה.
cck
לא התכוונתי להרחיב בעניין, רק רציתי לומר שהדיון מתיחס לדרופל 6 ולא 7
ובסוף הבעתי תמיהה "איך עושים בדרופל 7 ? " הכוונה היא איך מוצאים הגרסה ה"נקיה" של השדות שכבר עברו check_plain , check_markup
בשביל רפרנס ב 7 יש את אלה :
http://drupal.org/project/references
http://drupal.org/project/Relation
http://drupalcode.org/project/relation.git/blob/refs/heads/7.x-1.x:/CONC...
אנסה לבדוק הנושא בדרופל 7 ולכתוב פוסט חדש
yakoub abaya
בהנחה שאתה לא משתמש בפאנלס,
בהנחה שאתה לא משתמש בפאנלס, או מיני פאנלס -- או במילים אחרות, למה לא להשתמש בפאנלס או מיני :)
יש את פקודת field_view_field()
אמתי -- חברת גיזרה
alter
אני לא אוהב דברים כמו פאנלס, כי אני רוצה שהכל יהיה כתוב בקוד שהקריאה שלו מהנה ונעימה לעבודה , מה שפיתשרס נותן הוא לא קריא
היופי והחידוש ב 7 זה render arrays
אז בהנתן שהדיון למעלה מדבר על node.tpl.php הייתי הולך על hook_node_view_alter
כי ה content ב node.tpl.php הוא מערך ועדייין לא עבר render
באופן כללי עבור אוביקט node כלשהוא אז כמו שכתבתי למעלה עבור 6 אז גם ב 7 קריאה ל node_view תדאג לעדכן האוביקט עם content עבור כל השדות
בשביל ישות כלשהיא אפשר field_view_field כמו שאמרתה,ואם רוצים כל השדות בבת אחת אז field_attach_view אבל יש גם ה prepare , אפשר לראות דוגמה להכל כאן node.module/function/node_build_content/7" rel="nofollow"> node_build_content
yakoub abaya
field_view_field
this post elaborates on the subject:
http://www.computerminds.co.uk/articles/rendering-drupal-7-fields-right-way
quite a profound answer on how to render fields in 7
yakoub abaya
Subscribe
נושא מעניין