Պարագրաֆ կերպով ստեղծել բլոկ Drupal մոդուլում
Բլոկները Drupal 8-ում բլոկի պլագինի օրինակներ են։
Բլոկների մենեջեր-ը Drupal-ում սկանավորում է ձեր մոդուլները այն դասերի համար, որոնք պարունակում են @Block անոտացիա:
Ներկայացված կոդի օրինակն օգտագործում է @Block անոտացիան՝ «id» և «admin_label» հատկություններով՝ օգտատիրոջ բլոկը սահմանելու համար։
Ստեղծեք ֆայլը src/Plugin/Block/HelloBlock.php նախօրոք ստեղծված մոդուլի մաշկում և ավելացրեք ստորև նշված կոդը։
Որպեսզի ձեր Drupal կայքը ճանաչի այս նոր դասը, անհրաժեշտ է մաքրել կեշը։
<?php namespace Drupal\hello_world\Plugin\Block; use Drupal\Core\Block\BlockBase; /** * Provides a 'Hello' Block. * * @Block( * id = "hello_block", * admin_label = @Translation("Hello block"), * category = @Translation("Hello World"), * ) */ class HelloBlock extends BlockBase { /** * {@inheritdoc} */ public function build() { return [ '#markup' => $this->t('Hello, World!'), ]; } }
«Hello block»-ը ավելացնելու համար կարող եք գնալ Structure -> Block Layout (admin/structure/block) և սեղմել «Place block» կոճակը, որը կապված է յուրաքանչյուր հասանելի շրջանների հետ։
«Place block» կոճակը սեղմելուց հետո բացվում է պատուհան՝ «Place block»՝ բոլոր հասանելի բլոկների ցուցակով։ Ձեր բլոկը արագ գտնելու համար կարող եք օգտագործել «Filter by block name» տարբերակը կամ օգտագործել մկնիկի սքրոլը՝ «Hello block»-ը գտնելու համար։ Այսպիսով, կարող եք ավելացնել օգտատերերի բլոկի ցանկացած քանակ ցանկացած վայրում ձեր կայքում։
Խնդիրների որոնում
- Դասի անունն ու ֆայլի անունը պետք է նույնական լինեն (օրինակ՝ HelloBlock դասը և /src/Plugin/Block/HelloBlock.php ֆայլը): Եթե դասի անունը տարբերվում է, բլոկը կհայտնվի հասանելի բլոկների ցուցակում, բայց դուք չեք կարողանա ավելացնել այն։
- Ստուգեք կրկնակի բոլոր ուղիները և ֆայլերի անունները։ Ձեր .php ֆայլը պետք է լինի ճիշտ տեղադրված գրացուցակում (/src/Plugin/Block/): հակառակ դեպքում Drupal-ը չի հայտնաբերի այն։
- Եթե ձեր բլոկը չի տեղադրվում տարածաշրջանում, և էկրանին կամ լոգերում հայտնվում են սխալներ, ստուգեք PHP/Apache սխալի լոգերը։
- Եթե ձեր բլոկը չկա ցուցակում, համոզվեք, որ մաքրել եք Drupal-ի կեշերը (օրինակ՝ drush cr հրամանը)։
- Համոզվեք, որ ձեր մոդուլի անունը ամբողջությամբ փոքրատառ է։ Որոշ օգտատերեր հայտնում են, որ բլոկները չեն երևում camelCase մոդուլների դեպքում (օրինակ՝ myModule)։ Պետք է օգտագործել փոքրատառ տարբերակը՝ my_module։ Սա վերջին անգամ ստուգվել է Drupal 8.8.1-ում։
Հուշում։ Twig տեմպլեյթների օգտագործումը օգտատերերի բլոկների հետ
1. Ավելացրեք hook_theme ձեր .module ֆայլում։
Ուշադրություն՝ չմի անվանեք ձեր թեմային որպես 'block__...' — սա չի փոխանցի որևէ փոփոխական Twig տեմպլեյթներին։ Փոխարենը կարող եք օգտագործել մոդուլի անունը որպես պրեֆիքս։
2. Օգտագործեք «#theme» render array-ում build() մեթոդում և փոխանցեք փոփոխականները նույն մակարդակում, ինչ #theme, օրինակ՝ «#varname»։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.