How to Use Node Reference with Contextual Filter ?

Search Drupal Tutorials, Resources, Tips and Solutions

Keywords: 
contextual filter, node reference, advanced views
Research Detail: 

Drupal မှာ မတူတဲ့ Content Type နှစ်ခုကို ပုံစံအမျိုးမျိုးနဲ့ ဆက်စပ် ယှဉ်တွဲ ဖော်ပြချင်တယ် ဆိုရင် လုပ်လို့ရတဲ့ နည်းတွေ အများကြီး ရှိပါတယ်။ အဲဒီထဲက အလွယ်ဆုံး၊ အရှင်းဆုံးနဲ့ အလုပ်အဖြစ်ဆုံးနည်းကတော့ Node Reference, Views နဲ့ Contextual Filter တွေကို အသုံးပြုတဲ့ နည်းပါ။

ဘောလုံးအသင်းတစ်သင်းလုပ်ကြည့်မယ်။ ဘောလုံးအသင်းတွေကို စိတ်ကြိုက်ထည့်လို့ရမယ်။ မန်ယူ၊ အာဆင်နယ်၊ မန်စီးတီး အစရှိသဖြင့်ပေါ့။ နောက်ပြီး ဘောလုံးအသင်းတစ်သင်းစီမှာလည်း ဘောလုံးသမားတွေကို စိတ်ကြိုက်ထည့်မယ်။ ပြီးရင် ဘောလုံးသမားတွေကြီးပဲ ဖော်ပြမယ့် Page ရယ်၊ ဘောလုံးအသင်းတွေကြီးပဲ ဖော်ပြမယ့် Page ရယ်နှစ်ခု လိုချင်တယ်။ နောက်ပြီး မန်ယူအသင်းရဲ့ Page ကိုကြည့်ရင် မန်ယူအသင်းတွင် ပါဝင်သော ကစားသမားများဆိုတာကို ဖော်ပြပေးရမယ်။ တစ်ခြားအသင်းတွေလည်း ထိုနည်းလည်းကောင်းပဲပေါ့။

အရင်ဆုံး modules တွေထည့်မယ်။

Module

Fig:1 - Module installion

ဘာကြောင့် Node Reference ကို သုံးမှာလဲ။

အခု Content (သို့) Object ဘယ်နှစ်ခုရှိသလဲဆိုတော့ နှစ်ခုရှိတယ်။ ဘောလုံးအသင်းနဲ့ ဘောလုံးသမား။ Relationship က One (ဘောလုံးအသင်း) to Many (ဘောလုံးသမား) ။ Content နှစ်မျိုးရှိတဲ့အတွက် Content Type နှစ်မျိုးဆောက်မယ်။ Team နဲ့ Player ။ "Team" Content Type အတွက် Fields တွေကို Title, Body, Path ဆိုပြီးပဲ ထားထားလိုက်တော့မယ်။ Fields တွေကတော့ ကိုယ်ချဲ့ချင်ရင် ချဲ့ချင်သလောက်ထည့်ပေါ့။Player အတွက် Content Type မှာ Fields တွေကို Title, Body, Path အပြင် တစ်ခုပိုထည့်ရမယ်။ အဲဒါကတော့ "node reference" ။ node reference ကို ဘာ့ကြောင့်ထည့်ရတာလဲ ဆိုတော့ Player ကို အသင်းသတ်မှတ်ပေးချင်လို့ပါ။ အဲဒီတော့ refenrence ဆိုတဲ့ module ကို သွင်းပါ။ node reference ကို မသုံးဘဲ taxonomy ကိုသုံးလည်း ရတယ်။ ဘာကွာသွားသလဲဆိုတော့ taxonomy က ကြိုတင်သတ်မှတ်ထားရတယ်။ အဲဒီအတွက် ဘောလုံးသမားဆိုတဲ့ content တစ်ခုထည့်မယ်ဆိုရင် ကြိုတင်သတ်မှတ်ပေးထားတဲ့ taxonomy term တွေကနေရွေးပေးရတယ်။ ဥပမာ - team ဆိုတဲ့ taxonomy တစ်ခုမှာ Man-U, Man-City, Arsenal ဆိုတဲ့ term သုံးခုသတ်မှတ်ပေးထားမယ် ဆိုရင် Player ဆိုတဲ့ Content Type ထဲက Content အသစ်တွေထည့်ရင် ဒီကစားသမားက Man-U လား၊ Man-City လား၊ Arsenal လားဆိုပြီး အသင်းသုံးသင်းထဲကပဲ ရွေးခွင့်ရှိနေတယ်။ အသင်းသစ်ထည့်ချင်ရင် taxonomy မှာ သွားထည့်ရမယ်။ Content Writer ကို taxonomy သွားပြင်ခိုင်းဖို့ကျတော့ သိပ်အဆင်မပြေတော့ဘူး။ အဲဒါကြောင့် node reference ကိုသုံးလိုက်မယ်။ node reference မှာကျတော့ Player ဆိုတဲ့ Content Type မှာ Team ဆိုတဲ့ Content ကို field တစ်ခုထည့်ပေးထားလိုက်တော့ Content Writer အတွက် အဆင်ပြေသွားတယ်။ အသင်းသစ်ထည့်ချင်ရင် Add Team မှာ Content အသစ်တစ်ခု ထည့်ရုံပဲ။ အဲဒါဆိုရင် Player အသစ်တစ်ယောက်ရွေးရင် Team မှာ ထည့်ထားသမျှ အသင်းတွေကို စိတ်ကြိုက်ရွေးလို့ ရသွားတယ်။

Term Content Type

Fig: 2 - Creating team content type

Player Content Type

Fig: 3 - Adding node reference field on players content type

Team Reference

Fig: 4 - Choosing team reference

Create Player

Fig: 5 - ထည့်ထားသော အသင်းများကို ရွေးချယ်နိုင်ပုံ

Views ဆောက်ခြင်း

အခုဆိုရင် Team Content Type ရယ် Player Content Type ရယ် နှစ်ခုဆောက်ပြီးသွားပြီ။ အခုထပ်လုပ်ချင်တာက Team ဆိုတဲ့ Page မှာ Teams တွေကို ဖော်ပြချင်တယ်။ Players ဆိုတဲ့ Page မှာ Players တွေကို ဖော်ပြချင်တယ်။ Teams Page မှာ ရှိတဲ့ Teams တွေထဲက ဥပမာ Man-U ရဲ ့ Page ကိုကြည့်ရင် Man-U အသင်းအကြောင်းနဲ့ Man-U မှာ ရှိတဲ့ Players တွေကို ပြရမယ်။ ဒါဆိုရင် Views မှာ Page နှစ်ခုဆောက်ပေးမယ် Teams Page ရယ် Players Page ရယ်။ Teams Page မှာ Filter စစ်မှာက Content Type က Teams ဖြစ်ရမယ်ပေါ့။ Players Page မှာကတော့ Filter မှာ Content Type က Players ဖြစ်ရမယ်ပေါ့။ ဒါဆိုရင် ပထမဆုံးလိုချင်တဲ့ Team ဆိုတဲ့ Page မှာ Teams တွေကို ဖော်ပြချင်တာရယ်၊ Players ဆိုတဲ့ Page မှာ Players တွေကို ဖော်ပြချင်တာ ရယ်တော့ ပြီးသွားပြီ။ သက်ဆိုင်တဲ့ အသင်းတစ်သင်းစီကို ဝင်ကြည့်ရင် အသင်းအကြောင်းနဲ့ အသင်းမှာရှိတဲ့ ကစားသမားတွေ ပေါ်ဖို့ကျတော့ ဘယ်လိုလုပ်မလဲ။ ကျွန်တော်အရင်က လုပ်ရတာကတော့ တော်တော်လက်ညောင်းတယ်ဗျ :D ။ Views တွေ အများကြီးလိုက်ဆောက်မယ်။ Man-U Players Views, Man-City Players Views, Arsenal Players Views ဆိုပြီး တစ်ခုစီဆောက်၊ ပြီးရင် filter မှာ if (Content Type == 'Players') AND (Node Reference == 'Man-U') နောက်နှစ်သင်းအတွက်လည်း Man-U နေရာမှာပဲ Man-City, Arsenal ဆိုပြီး ပြောင်းမယ်။ ဒါဆိုရင် ရပြီ၊ ဒါပေမယ့် ပြဿနာက အသင်းတစ်ရာ ရှိနေရင် ဘယ်လိုလုပ်မလဲ။ Views အခုတစ်ရာ ဆောက်ရမှာလား :( ။

teams_view

Fig: 6 - View for teams page

Player View

Fig: 7 - View for players page

Teams Page

Fig: 8 - Teams Page

Players Page

Context ကိုသုံး၍ အခါတစ်ရာ လုပ်ရမည့် အလုပ်များကို လျှော့ချခြင်း

Contextual Filter ကိုသုံးလိုက်တော့ စနစ်ကျပြီး လက်ညောင်းသက်သာသွားတယ်ဗျ။ Views တွေလည်း ပွမနေတော့ဘူး။ Contextual Filter က Views ညာဘက်ထောင့်က Advanced ကိုနှိပ်လိုက်ရင် ပေါ်လာလိမ့်မယ်။ ခုနကလို Man-U Players, Man-City Players... etc.. အစရှိသဖြင့် ဆောက်မယ့်နေရာမှာ Team's Players ဆိုပြီး Views Block တစ်ခုဆောက်လိုက်မယ်။ Filter စစ်မှာကတော့ (Content Type == Players) ပေါ့။ Contextual Filter မှာက Content: Team Reference ဆိုတာကို add လုပ်လိုက်။ ပြီးရင် save လုပ်၊ Structure ထဲက Blocks မှာ အခုဆောက်လိုက်တဲ့ Views ကို ကိုယ်ပေါ်စေချင်တဲ့ region မှာ enable လုပ်လိုက်။ အဲဒါဆိုရင်တော့ အကုန်လုံး ပြီးပြည့်စုံသွားပါပြီ။ Teams Page ကိုသွား တစ်သင်းသင်းကို နှိပ်ကြည့်လိုက် Team အကြောင်းရယ် Team မှာရှိတဲ့ Players တွေရယ် ပေါ်နေပြီ။ ဒါဆိုရင်တော့ Tutorial ပြီးပါပြီ။

Comments

Thank U very much....

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Featured Articles

JDownloader - Free and Opensource alternative to Internet Download Manager

ကျွန်တော်တို့ ဆီမှာ အကြောင်းအမျိုးမျိုးကြောင့် သူများဆော့ဖ်ဝဲတွေကို မသိအောင် ခိုးသုံးနေခဲ့ရတာ အတော်ကြာခဲ့ပါပြီ။ အဲဒီထဲမှာ အသုံးအများဆုံး တစ်ခုကတော့ အင်တာနက် ဒေါင်းလုတ် မန်နေဂျာ ဆော့ဖ်ဝဲပါ။ ဒီဆောင်းပါးမှာတော့ အဲဒီဆော့ဖ်ဝဲအစား အခမဲ့ရယူ အသုံးပြုနိုင်ပြီး ပိုမို အစွမ်းထက်တဲ့ ဒေါင်းလုတ် မန်နေဂျာ ဆော့ဖ်ဝဲတစ်ခုနဲ့ မိတ်ဆက်ပေးချင်ပါတယ်။

အချိန်ကောင်း အခါကောင်း အခြေအနေကောင်း - အတားအဆီးများကို ဖော်ထုတ်ခြင်း (၇)

ကျွန်တော်တို့ အတွက် ကောင်းတာတစ်ခုခု လုပ်ဖို့ စဉ်းစားကြတဲ့အခါမှာ − အချိန်ကောင်းဆိုတာ ဘယ်အချိန်လဲ။ ကိုယ့်အတွက် ကိုယ်လုပ်ချင်တဲ့ အလုပ်တစ်ခုကို အောင်မြင်ဖို့အတွက် လိုအပ်တဲ့ အခြေအနေကို ဘယ်လို ဖန်တီးကြမလဲ။

လူတွေကို ကူညီတဲ့ အလုပ်ဟာ တစ်ကယ်ကို ပျင်းရိငြီးငွေ့ စရာကောင်းပြီး သင့်အတွက် လုံးဝ အကျိုးမရှိဘူးလို့ ထင်နေသလား။ တစ်ကယ် အရေးကြီးတယ် ဒါမှ မဟုတ် နောင်မှာ အရေးကြီးလာနိုင်တဲ့ အလုပ်တစ်ခုခုကို လုပ်လိုက်ဖို့ စိတ်အားထက်သန်မှု လိုအပ်နေလား။ လုပ်စရာ အလုပ်တွေ ရှိနေပေမယ့် သိပ်ပြီး ငြီးငွေ့နေတတ်တာမျိုး ခံစားနေရပြီလား...

ကျွန်တော်တို့ လုပ်ချင်တဲ့ အလုပ်၊ မဖြစ်မနေ လုပ်ကို လုပ်ရတော့မယ် အလုပ်တွေအတွက် လိုအပ်တဲ့ အခြေအနေကောင်းတွေနဲ့ စိတ်အားထက်သန်မှုတွေကို ဘယ်လို ရအောင် ဖန်တီးမလဲ၊ စိတ်ပါလက်ပါနဲ့ အောင်မြင်အောင် ဘယ်လို လုပ်ကြမလဲ..

အသုံးဝင်တဲ့ Views Hacks Module

Drupal ရဲ့ Views module ဟာ Drupal site တိုင်းအတွက် အလွန်အသုံးဝင်တယ်ဆိုတာ အားလုံး သိပြီးသားပါ။ Drupal stie တိုင်းမှာ မပါရင် မပြီးတဲ့ module တစ်ခုဖြစ်လို့ နောင်ထွက်လာမယ့် Drupal 8 မှာ တစ်ခါတည်း ပေါင်းထည့်ဖို့ ပြင်ဆင်နေကြပါပြီ။ Views ကို ဒီအတိုင်း သုံးတာထက်စာရင် Views plugin module လေးတွေနဲ့ တွဲသုံးတာက ပိုထိရောက်ပါတယ်။ ပိုပြီးတော့ အစွမ်းထက်လာပါတယ်။ ဉပမာ − Slideshow တွေ လုပ်ချင်တယ်ဆိုရင် Views slideshow ကို ထပ်ပေါင်းထည့်ပြီး လိုချင်တဲ့ Slideshow တွေ ဖန်တီးတာမျိုး

December Songs Collections (Burmese Version)

December music video collection for all my friends, December Birthday Boys and Birthday Girls. Have a Sweet December to you all... :)

နိုင်ငံပိုင် စီးပွားရေး၊ အစိုးရဝန်ထမ်း နဲ့ အခွန်ထမ်း ပြည်သူ

နိုင်ငံပိုင် စီးပွားရေး လုပ်ငန်းနဲ့ ဝန်ဆောင်မှုလုပ်ငန်းတွေဟာ နိုင်ငံသားတွေ ထမ်းဆောင်တဲ့ အခွန်တွေကရတဲ့ ငွေတွေနဲ့ တည်ထောင်ထားတာ ဖြစ်တဲ့ အတွက် အမြတ်အစွန်းရရှိဖို့ထက် ပြည်သူလူထု သက်သာ အဆင်ပြေဖို့ကို အဓိက ဦးစားပေးသင့်ပါတယ်။ နိုင်ငံတော်ကို အခွန်မှန်မှန် ပေးဆောင်နေတဲ့ အခွန်ထမ်း ပြည်သူတစ်ယောက် အနေနဲ့ နိုင်ငံပိုင် လုပ်ငန်းတစ်ခု အချိုးမပြေတာ၊ နိုင်ငံ့ဝန်ထမ်းတစ်ယောက် ပုံမလာတာကို အပြုသဘောနဲ့ ထောက်ပြခြင်းဟာ မှန်ကန်တဲ့ လုပ်ရပ်တစ်ခုပါ။

ဒါဟာ နိုင်ငံတည်ဆောက်ရေးမှာ သူတတ်နိုင်တဲ့ ဘက်က ပါဝင်တာ ဖြစ်ပါတယ်။ ဒါဟာ နိုင်ငံသားကောင်း တစ်ယောက်ရဲ့ မွေးရာပါ တာဝန်နဲ့ တိုင်းပြည်နဲ့ လူမျိုးကို တစ်ကယ်ချစ်တဲ့သူတိုင်း လိုက်နာကျင့်သုံးရမယ့်... စာနဲ့ ရေးမထားတဲ့ ဒီမိုကရေစီ နိုင်ငံတစ်ခုရဲ့ မွေးရာပါ နိုင်ငံသား အခွင့်အရေးပါပဲ...

Tags: