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

အောင်မြင်ခြင်း သီအိုရီများ - အတားအဆီးများကို ဖော်ထုတ်ခြင်း(၈)

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

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

Tags:

New Way to Learn Best Quality Courses from Harvard & MIT for Free - EdX

If you always want to learn high quality courses from best classes from the best professors and universities, like Harvard and MIT, EdX is for you.

A Remote Team for a Tech Startup in Myanmar

How many tech, internet startup in Yangon are founded as "Remote Team"?

Initial Idea
The main idea is to overcome the following major problems.
- Super expensive office rental fee for a startup.
- Lack of enough Electricity
- Slow and Expensive internet lines
- Daily travelling hours between office and home which is a nightmare for both men and ladies.

Drupal Learning Tips and Tricks For Beignners and Beyond

Learning Drupal is always life time event for a Drupal user. If you are a new comer, it is hard to know Where and How to start. I was in that situation when I started my Drupal journey in mid 2009. Since that time, I'm always finding the ways to help Drupal new comers.

Drupal for Absolute Beginners slides Presented at Microsoft Singapore and Plug-In@Blk71 Singapore

A few months ago (17 Oct 2012), I had a chance to contributed to the community. That was to present a few Drupal introductory courses to the local community.

It was organized by the Drupal Developer Network Singapore. Microsoft (Singapore) sponsored venue and foods. It was a series of 3 parts events and you can see the details in the following links from Drupal.org.sg

Tags: