Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

9.14. Գրելու ինտեգրում Views-ի հետ

19/04/2025, by Ivan

Menu

Views մոդուլը լայնորեն օգտագործվում է Drupal էկոհամակարգում։ Բովանդակության ցուցակներ, աղյուսակներ, բլոկներ, սլայդշոուներ, տվյալների արտահանում — այս բովանդակությունների տեսքերն, ամենայն հավանականությամբ, ցուցադրվում են Views-ի միջոցով։ Եթե դուք օգտագործում եք Բովանդակության տեսակներ, Բլոկի տեսակներ կամ այլ Էակների տեսակներ, ապա Views-ը արդեն ինտեգրված է դրանց հետ, և դուք կարող եք օգտագործել այն բովանդակության ցուցադրման համար։ Բայց եթե դուք ունեք սեփական մոդուլ, որը ստեղծում է հատուկ տվյալների բազայի աղյուսակ՝ hook_schema()-ի միջոցով, ապա անհրաժեշտ է ձեռքով ինտեգրել այն Views-ի հետ, որպեսզի մոդուլի տվյալները երևան Views ինտերֆեյսում։

Եկեք դիտենք Did this help մոդուլի ինտեգրումը Views-ի հետ՝

https://www.drupal.org/project/did_this_help

Մոդուլը ստեղծում է իր սեփական աղյուսակը՝ տվյալներ պահպանելու համար։ Այս աղյուսակում կան տողեր, ID-ներ, ամսաթվեր, ուստի անհրաժեշտ է սահմանել տարբեր գործիքներ (handlers) Views-ի ինտեգրման համար։

Սկզբում պետք է ստեղծել ֆայլ `MODULENAME.views.inc`, որը ավտոմատ կերպով կբեռնվի և չի պահանջում լրացուցիչ ընդգրկում։ Այդ ֆայլում պետք է կիրառել `hook_views_data()` ֆունկցիան՝

<?php

/**
 * @file
 * Provide views data for did_this_help.module.
 */

/**
 * Implements hook_views_data().
 */
function did_this_help_views_data() {

}

Այս ֆունկցիան պետք է վերադարձնի զանգված, որը նկարագրում է հատուկ աղյուսակի կառուցվածքը։

Դիտել պաշտոնական փաստաթուղթը

Սկսում ենք տվյալների աղյուսակի անունով՝

$data['did_this_help'] = [
  'table' => [
    'group' => t('Did this help?'),
    'base' => [
      'field' => 'id',
      'title' => t('Did this help? entries'),
      'help' => t('Contains a list of Did this help? entries.'),
    ],
  ],
];

Այս հատվածում նկարագրվում է աղյուսակը՝ $data['did_this_help'] բանալիով։ Եթե ցանկանում եք մի քանի աղյուսակ ինտեգրել, օգտագործեք տարբեր բանալիներ՝ $data['custom_table1'], $data['custom_table2']։

group՝ խմբավորում է դաշտերը նույն բաժնում՝ UI-ում դաշտերի ընտրությունը հեշտացնելու համար։
base՝ հայտարարում է աղյուսակի հիմնական դաշտը, որը կարելի է օգտագործել միացումների (join) համար։

Այնուհետև նկարագրում ենք յուրաքանչյուր դաշտ՝

$data['did_this_help']['id'] = [
  'real field' => 'id',
  'title' => t('Did this help? record ID'),
  'help' => t('Did this help? record.'),
  'field' => ['id' => 'standard'],
  'sort' => ['id' => 'standard'],
  'filter' => ['id' => 'numeric'],
  'argument' => ['id' => 'numeric'],
];

real field՝ հայտարարում է տվյալ դաշտին համապատասխանող իրական դաշտի անունը տվյալների բազայում։
title, help՝ դաշտի վերաբերյալ տեղեկատվություն՝ UI-ում ցուցադրելու համար։
field, sort, filter, argument՝ Views մոդուլի գործիքների նույնացուցիչներ՝ դաշտերը ցուցադրելու, ֆիլտրելու և դասավորելու համար։

Դաշտերի (Field) գործիքներ

Օգտագործվում են SQL SELECT արտահայտության համար։
Տեսակների ցանկը՝ views_field_handlers

Օրինակ՝

'field' => ['id' => 'standard']

Դասավորման (Sort) գործիքներ

Օգտագործվում են SQL ORDER BY արտահայտության համար։
Տեսակների ցանկը՝ views_sort_handlers

Ֆիլտրերի (Filter) գործիքներ

Օգտագործվում են SQL WHERE արտահայտության համար։
Տեսակների ցանկը՝ views_filter_handlers

Օրինակ՝ ամսաթվի ֆիլտրման համար՝

$data['did_this_help']['created'] = [
  'title' => t('Created date for Did this help? record'),
  'help' => t('Created date for Did this help? record'),
  'field' => ['id' => 'date'],
  'argument' => ['id' => 'date'],
  'filter' => ['id' => 'date'],
  'sort' => ['id' => 'date'],
];

Relationship գործիք

Օգտագործվում է SQL JOIN արտահայտության միջոցով աղյուսակներ միացնելու համար։ Օրինակ՝ did_this_help աղյուսակը ունի uid դաշտ, որով կարող ենք միանալ users_field_data աղյուսակին՝

$data['did_this_help']['uid'] = [
  'title' => t('User ID for Did this help? record'),
  'help' => t('User ID for Did this help? record'),
  'field' => ['id' => 'standard'],
  'sort' => ['id' => 'standard'],
  'filter' => ['id' => 'numeric'],
  'argument' => ['id' => 'numeric'],
  'relationship' => [
    'title' => t('User'),
    'help' => t('The user on which the log entry as written.'),
    'base' => 'users_field_data',
    'base field' => 'uid',
    'id' => 'standard',
  ],
];

Այստեղ՝
base - աղյուսակի անուն, որի հետ պետք է միանալ,
base field - դաշտի անուն, որով պետք է միանալ,
title, help - UI-ի համար,
id - handler-ի տեսակ։
Տեսակների ցանկը՝ views_relationship_handlers

Չնայած այն բանին, որ Views-ը տրամադրում է բազմաթիվ գործիքներ՝ field, filter, sort և relationship-ի համար, դուք կարող եք ժառանգել դրանք և գրել ձեր սեփական գործիքները։ Հաջորդ հոդվածում կգրենք սեփական filter handler։