Դիտումների համատեքստային ֆիլտրեր, հարաբերություններ - արգումենտներ և հարաբերություններ (կապեր)
Այս դասում ես հատուկ ուշադրություն կդարձնեմ Views-ում արգումենտների (contextual filters) հետ աշխատանքին։ Արգումենտներ են համարվում URL-ի այն մասերը, որոնք փոխանցվում են հասցեում, օրինակ՝
node/15 Առաջին արգումենտը՝ node, երկրորդը՝ 15 taxonomy/term/10 Առաջին՝ taxonomy, երկրորդ՝ term, երրորդ՝ 10 user/67 Առաջին՝ user, երկրորդ՝ 67
Կարծում եմ, որ օրինակները հստակ են և բացատրության կարիք չունեն։
Արգումենտները կարելի է ստանալ՝ օգտագործելով arg() ֆունկցիան՝
<?php print arg(0) . '<br />'; print arg(1); ?>
Եթե URL-ը node/15 է, ապա կցուցադրվի՝
node 15
arg ֆունկցիայի արգումենտների համարակալումը սկսվում է 0-ից։ Այժմ դիտարկենք, թե ինչ պատրաստի լուծումներ կան Views մոդուլում։
Օգտատիրոջ նոդերի ցուցադրում
Ենթադրենք՝ գտնվում ենք user/1 էջում և ցանկանում ենք ցուցադրել այդ uid=1 ունեցող օգտատիրոջ բոլոր նոդերը։ Դրա համար կօգտագործենք արգումենտ URL-ից։
Ստեղծում ենք նոր view՝ բլոկի տեսքով, դաշտերում նշում ենք node-ի title դաշտը, ցույց ենք տալիս միայն հրապարակված նոդերը, դասավորում ենք ըստ Post date դաշտի (նվազման կարգով)։
Վերնագիր
Վերնագիր՝ user_nodes
Ցուցադրման ձև
Unformatted list | Կարգավորումներ
Ցուցադրել՝ Fields | Կարգավորումներ
Դաշտեր
Բովանդակություն՝ Վերնագիր
Ֆիլտրեր
Բովանդակություն՝ Հրապարակված (Այո)
Դասավորում
Բովանդակություն՝ Post date (նվազման կարգով)
Էջատում
Օգտագործել pager՝ Ցուցադրել 15 տարր
More link՝ Ոչ
Այժմ սեղմում ենք՝ Contextual filters (նախկինում arguments)։ Ընտրում ենք՝
Բովանդակություն՝ Author uid
Այնուհետև՝
When the filter value is NOT available Provide default value User ID from URL Provide default value
Պահպանում ենք view-ը։ Տեղադրում ենք բլոկը համապատասխան շրջանում և երբ բացենք user/1 էջը, բլոկում կցուցադրվեն uid=1 ունեցող օգտատիրոջ բոլոր նոդերը։
Կապակցված նոդերի ցուցադրում
Այժմ օրինակը կբարդացնենք։ Ենթադրենք՝ անհրաժեշտ է մի նոդի հետ կապել մի քանի այլ նոդեր։ Դրա համար օգտագործվում են node reference դաշտեր։ Դրանք հասանելի են References մոդուլի և դրա ենթամոդուլների օգնությամբ։
http://drupal.org/project/references
Դաշտերը թույլ են տալիս մի նոդին միացնել մի քանի օգտատեր և մի քանի այլ նոդ՝ միաժամանակ։ Դրա համար օգտագործվում է node reference դաշտ։ Քանի որ Դրուպալ 7-ում հնարավոր է դաշտեր ավելացնել ցանկացած էությանը, կարելի է կապել ցանկացած տեսակի էություններ։
Իմ կայքում կան 4 նորություն, և ես ցանկանում եմ երկրորդ նորությանն ավելացնել կապ՝ առաջին և երրորդ նորությունների հետ, քանի որ դրանք նման թեմաներ են։
Մտնում ենք «Նորություն» տեսակի դաշտերի կառավարում և ավելացնում ենք node reference դաշտ՝ ավտոմատ լրացման հնարավորությամբ։ Կկոչենք «Նմանատիպ նորություններ»։ Ընտրում ենք՝ որ բովանդակության տեսակների հետ կարող է կապ լինել, նշում ենք կապի հնարավոր նոդերի քանակը։ Ես ընտրում եմ միայն «Նորություն»-ը։ Պահպանում ենք դաշտը։ Այժմ խմբագրում ենք երկրորդ նոդը, այնտեղ կհայտնվի «Նմանատիպ նորություններ» դաշտը՝ node reference տիպով։
Իհարկե նոդերի վրա արդեն կցուցադրվեն կապված նորությունները, սակայն մեր նպատակը view-ի միջոցով ցուցադրելն է։ Ստեղծում ենք նոր view՝ կրկին բլոկի տեսքով։
Վերնագիր:
similar_news
Ցուցադրման ձև:
Unformatted list | Կարգավորումներ
Ցուցադրել՝ Fields | Կարգավորումներ
Դաշտեր
Բովանդակություն՝ Վերնագիր
Ֆիլտրեր
Բովանդակություն՝ Հրապարակված (Այո)
Բովանդակություն՝ Տեսակ (= Նորություն)
Դասավորում
Բովանդակություն՝ Post date (նվազման կարգով)
Pager
Օգտագործել pager՝ Ցուցադրել 5 տարր
Ավելացնում ենք Contextual filter՝ Բովանդակություն: Nid։ Այս անգամ ընտրում ենք՝
When the filter value is NOT available Provide default value Content ID from URL
Այժմ՝ Relationships բաժնում ավելացնում ենք՝ Բովանդակություն: Նմանատիպ նորություններ (field_similar)։ Եթե դաշտն ուրիշ անուն ունի, ընտրեք համապատասխան դաշտը։ Ուշադրություն դարձրեք՝ կա նաև «reverse» տարբերակ։ Սա նշանակում է՝ ցուցադրվելու են կապի հակառակ ուղղությամբ տրված նոդերը։ Այսինքն՝ եթե գտնվենք Նորություն 3-ի էջում, կցուցադրվի Նորություն 2, որը կապել ենք Նորություն 1 և Նորություն 3-ի հետ։
Վերջնական պարամետրերը՝
Contextual filters
Բովանդակություն՝ Nid
Relationships
Բովանդակություն՝ Նմանատիպ նորություններ
Այժմ մեր դաշտում պետք է նշել՝ որ կապն օգտագործել։ Field-ում՝ փոխարինել «Do not use a relationship»՝ կապի անվանումով։
Դաշտ
(field_similar) Բովանդակություն՝ Վերնագիր
Պահպանում ենք view-ը, և բլոկը տեղադրում ենք ցանկալի շրջանում։
Այժմ Նորություն 2 էջում՝ բլոկում կցուցադրվեն Նորություն 1 և Նորություն 3՝ որպես նմանատիպ նորություններ։