שלום.
יש שני סוגי תוכן המקושרים ע"י Node Reference.
סוג תוכן 1: ספריה. לסוג התוכן הזה יש השמה של Taxonomy "מיקום". אפשר יותר ממיקום אחד (למשל "חיפה" וגם "צפון").
סוג תוכן 2: ספר. לסוג התוכן הזה יש השמה של Taxonomy "ז'אנר". אפשר יותר מז'אנר אחד (למשל "מד"ב" וגם "ילדים")
ספר יכול להיות משוייך לכמה ספריות (סביר שפיזית יהיה עותק של הספר במספר ספריות).
כלומר שדה Node Reference המוגדר בסוג התוכן "ספר" יכול להכיל מספר ערכים.
הבעיה:
בדף חיפוש עם exposed terms משני הסוגי שהזכרתי לעיל. שם מוגדר שדה Relationship שהוא node referrer.
החיפוש רץ על הספריות (לפי הערך שנבחר לפילטר "מיקום"), ומהן מאתר את הספרים שיש בהן (לפי פילטר "ז'אנר").
התוצאה של הריצה מראה ריבוי של רשומות לספר נתון (כמספר הספריות אליהן קושר).
ההגדרה של ה delta בשדה ה- relationship חייבת להיות "all" אחרת יהיו ספרים שלא יוצגו כלל בתוצאות החיפוש.
אפשרות שעלתה בדעתי היא לבצע השמה של כל ה terms של כל אחת מהספריות גם לכל ספר המסוייך אליה. כלומר בסוג תוכן ספר יהיו terms של הז'אנר וגם של המיקום. התצוגה ב VIEWS תהיה קלה מאד.
אבל יש "מחיר" :
בעיה אחת היא שלא מצאתי מודול שעושה את זה. ניסיתי להשתמש ב RULES אבל זה לא עובד בשל ריבוי הערכים בשדה node ref. בעיה נוספת היא במקרה של "סגירה" של ספריה, צריך ללכת לכל הספרים שהיו משוייכים אליה ולהסיר את ה terms של המיקום.
האם יש למישהו פתרון אחר?
תודות, וחג שמח.
זה נובע מצורת ה joins שמבצע ה
זה נובע מצורת ה joins שמבצע ה view שלך. זה קורה, וזה טבעי, ומוסיפים Distinct להגדרות של ה view וזה פותר את הבעיה.
לא ציינתי, אבל בדקתי Distinct
לא ציינתי, אבל בדקתי Distinct וזה לא פתר.
חלק מהרשומות אכן הוצגו רק פעם אחת , אבל זה גם העלים לגמרי חלק מהרשומות , ואחת מהן עדיין נותרה מרובה.
אגב, במקום בו מאפשרים Distinct, כתוב שזה לא תמיד עובד.
www.kadarit.co.il
אני לא מבטיח שאוכל להתעמק
אני לא מבטיח שאוכל להתעמק בזה, אבל אם תשלח את השאילתא שנוצרת כאן בפורום אולי נוכל לעזור יותר.
תודה. הנה ה-VIEW הסורר... לא
תודה.
הנה ה-VIEW הסורר...
לא מצאתי איך לצרף כקובץ אז הנה כך.
//
$view = new view;
$view->name = 'TEST_book_query';
$view->description = 'Find books by typa and location';
$view->tag = 'taxonomy';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('relationships', array(
'nodereferer_referers' => array(
'label' => 'Referencing Nodes',
'required' => 1,
'referrer_delta' => '-1',
'referrer_field' => 'field_library_of_book',
'id' => 'nodereferer_referers',
'table' => 'node',
'field' => 'nodereferer_referers',
'relationship' => 'none',
),
));
$handler->override_option('fields', array(
'nid' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'link_class' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'target' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'strip_tags' => 0,
'html' => 0,
),
'empty' => '',
'hide_empty' => 0,
'empty_zero' => 0,
'link_to_node' => 0,
'exclude' => 0,
'id' => 'nid',
'table' => 'node',
'field' => 'nid',
'relationship' => 'nodereferer_referers',
),
'title' => array(
'label' => 'כותרת',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'link_class' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'target' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'strip_tags' => 0,
'html' => 0,
),
'empty' => '',
'hide_empty' => 0,
'empty_zero' => 0,
'link_to_node' => 0,
'exclude' => 0,
'id' => 'title',
'table' => 'node',
'field' => 'title',
'relationship' => 'nodereferer_referers',
),
));
$handler->override_option('filters', array(
'status' => array(
'operator' => '=',
'value' => '1',
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'status',
'table' => 'node',
'field' => 'status',
'relationship' => 'nodereferer_referers',
),
'tid_1' => array(
'operator' => 'or',
'value' => NULL,
'group' => '0',
'exposed' => TRUE,
'expose' => array(
'use_operator' => 0,
'operator' => 'tid_1_op',
'identifier' => 'tid_1',
'label' => 'book type category:',
'optional' => 1,
'remember' => 0,
),
'type' => 'hierarchical_select',
'limit' => TRUE,
'vid' => '6',
'id' => 'tid_1',
'table' => 'term_node',
'field' => 'tid',
'hierarchy' => 0,
'configure_hs' => 'Configure Hierarchical Select',
'relationship' => 'nodereferer_referers',
),
'tid' => array(
'operator' => 'or',
'value' => NULL,
'group' => '0',
'exposed' => TRUE,
'expose' => array(
'use_operator' => 0,
'operator' => 'tid_op',
'identifier' => 'tid',
'label' => 'book location category:',
'optional' => 1,
'remember' => 0,
),
'type' => 'hierarchical_select',
'limit' => TRUE,
'vid' => '5',
'id' => 'tid',
'table' => 'term_node',
'field' => 'tid',
'hierarchy' => 0,
'configure_hs' => 'Configure Hierarchical Select',
'relationship' => 'field_library_of_book_nid',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('cache', array(
'type' => 'none',
));
$handler->override_option('empty', 'לא נמצאו ספרים בקטגוריות שנבחרו.');
$handler->override_option('empty_format', '1');
$handler->override_option('items_per_page', 25);
$handler->override_option('use_pager', '1');
$handler->override_option('distinct', 1);
$handler->override_option('style_options', array(
'grouping' => '',
));
$handler->override_option('row_options', array(
'inline' => array(
'nid' => 'nid',
'title' => 'title',
'field_library_of_book_nid' => 'field_library_of_book_nid',
'counter' => 'counter',
'field_badword_value' => 'field_badword_value',
'field_contact_person_value' => 'field_contact_person_value',
),
'separator' => '|',
'hide_empty' => 1,
));
//
www.kadarit.co.il
אתה יכול להציג רק את השאילתא?
אתה יכול להציג רק את השאילתא? (אמורה להופיע לך כשאתה מבקש preview במסך העריכה).
הנה השאילתא. המיון הוא לפי
הנה השאילתא. המיון הוא לפי NID.
השאילתא עם Destinct = לא :
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
129 | ניצה הברווזה העקשנית
131 | אראגורן
132 | שם הורד
136 | להתאהב ביום חול
137 | יוני תחכמוני
138 | קובץ שירי ביאליק
162 | מתקפת הרובוטים
162 | מתקפת הרובוטים
162 | מתקפת הרובוטים
162 | מתקפת הרובוטים
175 | שני סיפורים לילדים
176 | שדות התותים
183 | החופש הגדול של רות
194 | לילה בפריז
194 | לילה בפריז
234 | עוגות לכל חג
234 | עוגות לכל חג
234 | עוגות לכל חג
235 | דון קורליאונה
235 | דון קורליאונה
235 | דון קורליאונה
235 | דון קורליאונה
235 | דון קורליאונה
235 | דון קורליאונה
235 | דון קורליאונה
237 | בוב הבנאי
238 | חופשה בקנריים
238 | חופשה בקנריים
255 | ריקוד מושחת
255 | ריקוד מושחת
255 | ריקוד מושחת
255 | ריקוד מושחת
255 | ריקוד מושחת
255 | ריקוד מושחת
255 | ריקוד מושחת
256 | נעלי פיל
256 | נעלי פיל
256 | נעלי פיל
256 | נעלי פיל
256 | נעלי פיל
256 | נעלי פיל
256 | נעלי פיל
259 | העץ הנדיב
השאילתא עם Destinct = כן :
138 | קובץ שירי ביאליק
162 | מתקפת הרובוטים
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
131 |אראגורן
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
58 | האופניים החדשים של נדב
237 | בוב הבנאי
www.kadarit.co.il
לא התעמקתי בהסבר שלך , אבל יש
לא התעמקתי בהסבר שלך , אבל יש 2 אפשרויות
מצב פתיר
כאשר אתה מוסיף את הפילטר יש checkox אשר לא מסומן בברירת מחדל
reduce duplicates חפש אותו
נראה לי שזה יפתור לך את הבעיה
http://drupal.org/node/726406
ומצב נוסף בו זה לא יעזור לך
http://drupal.org/node/345571#comment-2254238
אביאור
http://dev-art.net
תודה. בדקתי את שהצעת וזה לא
תודה.
בדקתי את שהצעת וזה לא עובד.
מקור הבעיה (כפי שאני מבין אותו) הוא ריבוי הספריות לכל ספר כפי שמוגדר בשדה מסוג node ref שיצרתי לסוג תוכן "ספר", ולא העובדה שיש מספר Terms לכל ספר (אגב, לכל סוג תוכן יש מילון אחד)
מספר המופעים של כל ספר הוא כמספר הספריות להן שוייך. הקטנתי/הגדלתי את המספר הזה לספר נתון, ומספר המופעים של כל ספר שנבדק - השתנה בהתאם.
www.kadarit.co.il
נפל האסימון ... השאילתא
נפל האסימון ...
השאילתא (Distinct=לא):
//
SELECT node.nid AS nid,
node_node.nid AS node_node_nid,
node_node.language AS node_node_language,
node_node.title AS node_node_title
FROM drup_node node
LEFT JOIN drup_content_field_library_of_book node2
ON node.nid = node2.field_library_of_book_nid
INNER JOIN drup_node node_node
ON node2.nid = node_node.nid
WHERE node_node.status <> 0
//
www.kadarit.co.il
זה מסביר למה אתה רואה כל ספר
זה מסביר למה אתה רואה כל ספר כמספר הספריות שלהן הוא שייך.
האם יכול להיות שספר לא יהיה שייך לאף ספריה?
איך נראית השאילתא עם distinct?
ספר חייב להיות שייך לספריה
ספר חייב להיות שייך לספריה אחת לפחות, ועם distinct כפי שכבר ציינתי - נעלמות רשומות.
מאחר ואיני רואה את מה שאתה רואה בשאילתא החלטתי לבנות VIEW אחר.
במקור השאילתא "רצה" על הספריות לפי מסנן מיקום, ולכל ספריה - באמצעות relationship עם שדה node refferer - מציגים את הספר הרצוי (לפ הז'אנר).
ב-VIEW החדש השאילתא "רצה" על הספרים (לפי הז'אנר) אבל כעת ה- relationship משתמש בשדה node reference ובאמצעותו מסנן ספריות לפי מיקום .
סימנתי בשני המסננים את האופציה לביטול כפילויות, וגם distinct וזה עובד.
מכל מקום, תודה על העזרה.
אגב, אם בוחרים במסנן taxonomy עם Hierarchical select לא מוצגת האופציה לביטול כפילויות.
www.kadarit.co.il