亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
鑰匙要點
>
drupal 8插件衍生物具有難以置信的通用性可以在各種場景中使用。一些常見用例包括創(chuàng)建塊插件的多個實例,每個實例都具有不同的配置;從單個基礎插件生成多個菜單鏈接;并創(chuàng)建自定義模塊的多個變體,每個模塊都針對特定的任務或要求量身定制。
使用Drupal 8插件衍生詞有任何限制或挑戰(zhàn)?
是的,Drupal 8插件衍生物可以與第三方插件一起使用。但是,重要的是要注意,并非所有第三方插件都旨在支持衍生產(chǎn)品,因此您可能需要做一些其他工作以使其兼容。始終檢查您使用的特定插件的文檔,以查看它是否支持衍生產(chǎn)品以及如何實現(xiàn)它們。
>如何調試Drupal 8插件導數(shù)的問題?由于其動態(tài)性質,可能會具有挑戰(zhàn)性。但是,Drupal提供了幾種幫助解決此問題的工具和技術。最有用的是Devel模塊,該模塊提供了一系列調試和開發(fā)工具。此外,Drupal的錯誤記錄和報告功能可以提供有關出現(xiàn)的任何問題的有價值的信息。
首頁 后端開發(fā) php教程 有效使用Drupal 8插件衍生物的教程

有效使用Drupal 8插件衍生物的教程

Feb 16, 2025 am 11:26 AM

有效使用Drupal 8插件衍生物的教程

鑰匙要點

    Drupal 8中的
  • 插件衍生物允許同一插件的多個實例的動態(tài)聲明,將用戶配置的功能轉換為插件。
  • > deriver類用于提供基于初始插件但具有略有不同配置或定義數(shù)據(jù)的插件定義的列表。
  • >
  • >插件管理器中的派生式coveryDecorator用于檢索衍生詞,在每個插件上尋找派生類并詢問列表。
  • >
  • >插件導數(shù)是一種功能強大的工具,但它們可以設置和管理很復雜,尤其是對于新手Drupal或不熟悉其插件系統(tǒng)的開發(fā)人員。需要仔細的管理和測試,因為對基本插件的更改可能會影響其所有導數(shù)。
  • 在較早的教程中,我們查看了Drupal 8插件系統(tǒng)以及如何創(chuàng)建自己的自定義插件類型。我們已經(jīng)看到,Drupal 7中通過_info鉤聲聲明的許多功能已被這些插件替換。我們的用例非?;荆⑶铱梢酝ㄟ^新的插件類和關聯(lián)的表單手動聲明此類功能的每個
  • 實例
。

>但是,如果我們需要這樣的

實例有效使用Drupal 8插件衍生物的教程>動態(tài)聲明,具體取決于我們小子系統(tǒng)外部的某些因素?例如,當在Drupal 7中聲明_info鉤子時,我們可以獲得

的列表,循環(huán)循環(huán)并在返回的數(shù)組中為每個單獨的> something 聲明一個新項目。菜單系統(tǒng)這樣做是為了為每個菜單提供一個新塊,該菜單帶有Drupal Core,或者以后通過UI創(chuàng)建。 > Drupal 8呢?我們已經(jīng)看到,對于某種類型的每個插件,我們需要聲明其他PHP類。要創(chuàng)建一個新的塊,我們需要一個新類。要創(chuàng)建另一個塊,我們需要另一個類。那么,我們在Drupal 7中看到的循環(huán)在哪里?對此的簡短答案是:在>插件中 在本文中,我們將探索對此的長期答案,并了解派生是什么以及如何使用它們。對于后者,我們將在演示模塊中構建一個示例,該示例可以在此GIT存儲庫中找到,并希望它可以幫助我們更好地了解發(fā)生了什么。對于一個稍微復雜的示例,菜單系統(tǒng)非常好,因為它為其每個菜單提供了一個單獨的塊(類似于Drupal 7,但使用插件)。

>

我們要做的實際上非常簡單。我們將實現(xiàn)基本節(jié)點塊功??能,通過該功能,對于我們網(wǎng)站上的所有文章節(jié)點,我們都將擁有一個塊。荒謬的?當然。我們應該為我們網(wǎng)站上的所有節(jié)點做到這一點嗎?絕對不是!但這是一個非?;镜膶崿F(xiàn),旨在使情況保持簡短并展示插件衍生物的使用。>

>插件衍生物

插件衍生物是可以在系統(tǒng)中表示某種類型的插件作為自身的多個實例的方式。換句話說,插件可以引用負責提供基于初始插件的插件定義列表(從同一基本定義開始)但具有略有不同的配置或定義數(shù)據(jù)的插件類別。我們上面提到的SystemMenublock是一個很好的例子。這是一個單個插件,具有與網(wǎng)站上的菜單一樣多的衍生詞。>

>更深一些,當請求某個類型的所有插件的列表時,插件管理器使用其發(fā)現(xiàn)機制加載此類型的所有插件。如果該機制裝飾有衍生化合物的裝飾器,則經(jīng)理也將能夠檢索衍生物。為了做到這一點,派生發(fā)現(xiàn)在每個插件上尋找一個衍生程序類,如果找到一個插件,請為此列表詢問。

擴展DefaultPluginManager基類的

插件類型管理器通常應具有裝飾默認發(fā)現(xiàn)(注釋)的派生發(fā)現(xiàn)機制。這是Drupal Core插件系統(tǒng)中最常見的模式:由衍生物包裹的注釋發(fā)現(xiàn)。

衍生類類

>我們知道插件衍生物的作用是什么,讓我們創(chuàng)建將由塊插件使用的第一個deriver類(我們將在一分鐘內創(chuàng)建)。 演示模塊的

>內部src/plugin/dembin/derivative/nodeblock.php。

>我們所有類都需要實現(xiàn)的是deriverinterface并實現(xiàn)其兩種方法。我們使用containderiverInterface,因為我們想使我們的派生容器知道。為什么?因為我們使用依賴項注入來加載Drupal的Entity Manager,以便我們可以訪問節(jié)點存儲(這是構造函數(shù)和Create()方法所做的)。此外,我們的deriver類從deriverbase類延伸,因為這已經(jīng)處理了所需方法之一(getDerivativedEfinition())。最后,GetDerivativedEfinitions()是負責提供插件定義數(shù)組的方法,這些定義是從使用此類的插件中得出的。它接收$ base_plugin_definition作為參數(shù)(使用此衍生物的實際插件的定義),我們使用它來構建衍生物定義。在我們的情況下,我們不加打加載所有文章節(jié)點,對于每個節(jié)點,創(chuàng)建一個單獨的定義,該定義僅通過具有不同的admin_label(這是drupalcoreblockantationblock andotation entotation Class上的屬性)而有所不同。衍生物的數(shù)組由衍生物的ID鍵入(在我們的情況下,我們將稍后使用的節(jié)點ID)。

>我們需要提出的一個非常重要的一點是,從其中加載所有節(jié)點并創(chuàng)建插件從來都不是一個好主意??赡苡腥さ氖菍崿F(xiàn)功能,通過該功能可以通過復選框或類似的內容將單個節(jié)點作為塊暴露為塊。

>

塊插件

>現(xiàn)在我們有了我們的派生類,讓我們創(chuàng)建一個簡單的塊插件來使用它來生成自身的多個實例(每個文章節(jié)點一個)。

>內部src/plugin/block/nodeblock.php:

>我們在此插件的注釋中注意到的第一件事是指向我們之前創(chuàng)建的類的衍生鍵。這基本上就是我們要近兩者所需的全部。派生發(fā)現(xiàn)裝飾器處理繁重的舉重。

>其他大部分是我們應該熟悉的基本塊構建。有趣的是,我們可以使用getDerivativeId()方法檢索我們也使用的節(jié)點ID作為所顯示的派生的ID,并使用該方法加載節(jié)點對象并將塊作為實際節(jié)點輸出構建塊。最后,在BlockAccess()方法中,我們確保此塊具有與實際節(jié)點本身相同的訪問檢查。因此,如果當前用戶無法訪問查看當前節(jié)點,則該塊甚至不會顯示。
<?php

/**
 * @file
 * Contains \Drupal\demo\Plugin\Derivative\NodeBlock.
 */

namespace Drupal\demo\Plugin\Derivative;

use Drupal\Component\Plugin\Derivative\DeriverBase;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provides block plugin definitions for nodes.
 *
 * @see \Drupal\demo\Plugin\Block\NodeBlock
 */
class NodeBlock extends DeriverBase implements ContainerDeriverInterface {

  /**
   * The node storage.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface
   */
  protected $nodeStorage;

  /**
   * Constructs new NodeBlock.
   *
   * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage
   *   The node storage.
   */
  public function __construct(EntityStorageInterface $node_storage) {
    $this->nodeStorage = $node_storage;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, $base_plugin_id) {
    return new static(
      $container->get('entity.manager')->getStorage('node')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition) {
    $nodes = $this->nodeStorage->loadByProperties(['type' => 'article']);
    foreach ($nodes as $node) {
      $this->derivatives[$node->id()] = $base_plugin_definition;
      $this->derivatives[$node->id()]['admin_label'] = t('Node block: ') . $node->label();
    }
    return $this->derivatives;
  }
}
>

>現(xiàn)在,如果我們清除緩存并導航到塊布局接口,我們應該看到一些稱為節(jié)點塊的塊:[node title]。您可以將這些放置在您想要的位置,它們將渲染相關的節(jié)點。

結論

在本文中,我們研究了插件衍生物,并看到了它們如何工作的簡單示例。關鍵在此主題上是插件導數(shù)是我們動態(tài)聲明同一插件的多個實例的方式。它們通??梢詭椭覀儗⒂脩襞渲玫墓δ埽ɡ绮藛危┺D換為插件(例如菜單塊)。

。 為了說明衍生物的使用,我們已經(jīng)看到了一種非常簡單的技術,它使我們能夠將文章節(jié)點作為塊。我們應該記住,雖然不要在網(wǎng)站上嘗試使用許多文章節(jié)點,而是實現(xiàn)限制暴露的節(jié)點數(shù)量的其他功能。你知道,所以我們不會崩潰我們的網(wǎng)站。

>問題?評論?您想進一步解釋嗎?讓我們知道!

>經(jīng)常詢問有關使用Drupal 8插件衍生物有效的問題(常見問題解答)

什么是Drupal 8插件衍生物,為什么它們很重要?

drupal 8插件導數(shù)是Drupal 8的強大功能,它允許開發(fā)人員動態(tài)生成單個插件的多個實例。當您有大量類似的任務執(zhí)行時,這特別有用,但是每個任務都需要略有不同的配置。通過使用插件導數(shù),您可以創(chuàng)建一個基本插件,然后根據(jù)需要生成該插件的多種變化,每個插件都具有自己的獨特配置。這可以極大地簡化您的代碼,并使您的Drupal 8站點更加高效,更易于管理。

>

如何創(chuàng)建Drupal 8插件衍生物?

>創(chuàng)建Drupal 8插件涉及多個步驟。首先,您需要創(chuàng)建一個基本插件來定義所有衍生物都將共享的基本功能。接下來,您需要創(chuàng)建一個插件導數(shù)類,該類別擴展基本插件并實現(xiàn)派生界面。該課程負責產(chǎn)生單個衍生物。最后,您需要在Drupal的插件管理器上注冊您的插件導數(shù),以便可以發(fā)現(xiàn)和使用它。

>

>我可以使用Drupal 8插件帶有自定義模塊的插件嗎?衍生物可以與自定義模塊一起使用。實際上,它們在這種情況下特別有用,因為它們允許您創(chuàng)建一個基本模塊,然后生成該模塊的多個變體,每個模塊都有其獨特的配置。這可以極大地簡化開發(fā)過程,并使您的自定義模塊更有效,更易于管理。

>

> drupal 8插件衍生物有哪些常見用例?

drupal 8插件衍生物具有難以置信的通用性可以在各種場景中使用。一些常見用例包括創(chuàng)建塊插件的多個實例,每個實例都具有不同的配置;從單個基礎插件生成多個菜單鏈接;并創(chuàng)建自定義模塊的多個變體,每個模塊都針對特定的任務或要求量身定制。

>

>如何管理和維護Drupal 8插件導數(shù)?跟蹤基本插件及其所有導數(shù),以確保它們都是最新的,并且可以正確運行。這可以通過Drupal的插件管理器來完成,該插件管理器提供了用于管理所有插件的集中式接口。此外,重要的是要定期查看和更新??您的插件衍生詞,以確保它們繼續(xù)滿足您網(wǎng)站用戶的需求和需求。

使用Drupal 8插件衍生詞有任何限制或挑戰(zhàn)?

,而Drupal 8插件導數(shù)是一個強大的工具,它們確實面臨一些挑戰(zhàn)。主要挑戰(zhàn)之一是它們可以建立和管理很復雜,尤其是對于新手或不熟悉其插件系統(tǒng)的開發(fā)人員而言。此外,由于每個派生型都是單個基本插件的變體,因此對基本插件的更改可能會影響其所有衍生物,因此需要仔細的管理和測試。 我可以使用Drupal 8插件帶有第三個插件派對插件?

是的,Drupal 8插件衍生物可以與第三方插件一起使用。但是,重要的是要注意,并非所有第三方插件都旨在支持衍生產(chǎn)品,因此您可能需要做一些其他工作以使其兼容。始終檢查您使用的特定插件的文檔,以查看它是否支持衍生產(chǎn)品以及如何實現(xiàn)它們。

>

> drupal 8插件導數(shù)如何改善站點性能?

drupal 8插件衍生物可以通過減少每個任務需要執(zhí)行的代碼數(shù)量來提高站點性能。通過創(chuàng)建一個基本插件,然后生成多個導數(shù),您可以避免為每個任務編寫和執(zhí)行單獨的代碼。這可能會導致性能的重大提升,尤其是對于具有大量類似任務的網(wǎng)站。

>

>如何調試Drupal 8插件導數(shù)的問題?由于其動態(tài)性質,可能會具有挑戰(zhàn)性。但是,Drupal提供了幾種幫助解決此問題的工具和技術。最有用的是Devel模塊,該模塊提供了一系列調試和開發(fā)工具。此外,Drupal的錯誤記錄和報告功能可以提供有關出現(xiàn)的任何問題的有價值的信息。

>

>在哪里可以找到更多有關使用Drupal 8插件衍生詞的資源?了解有關Drupal 8插件衍生物的更多信息。官方的Drupal文檔是一個不錯的起點,因為它提供了有關Drupal開發(fā)各個方面的全面信息,包括插件衍生產(chǎn)品。此外,還有許多教程,博客文章和論壇討論,可以深入涵蓋此主題。

以上是有效使用Drupal 8插件衍生物的教程的詳細內容。更多信息請關注PHP中文網(wǎng)其他相關文章!

本站聲明
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
PHP變量范圍解釋了 PHP變量范圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數(shù)內部無法訪問全局變量,需使用global關鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次并在多次調用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助于避免錯誤并提升代碼穩(wěn)定性。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗證來源與類型、控制文件名與路徑、設置服務器限制并二次處理媒體文件。1.驗證上傳來源通過token防止CSRF并通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機字符串并根據(jù)檢測類型決定擴展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP注釋代碼常用方法有三種:1.單行注釋用//或#屏蔽一行代碼,推薦使用//;2.多行注釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧注釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

發(fā)電機如何在PHP中工作? 發(fā)電機如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP注釋的關鍵在于明確目的與規(guī)范,注釋應解釋“為什么”而非“做了什么”,避免冗余或過于簡單。1.使用統(tǒng)一格式,如docblock(/*/)用于類、方法說明,提升可讀性與工具兼容性;2.強調邏輯背后的原因,如說明為何需手動輸出JS跳轉;3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便于后續(xù)追蹤與協(xié)作。好的注釋能降低溝通成本,提升代碼維護效率。

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

如何通過php中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出范圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結果;實際應用中循環(huán)訪問前應檢查字符串長度,動態(tài)字符串需驗證有效性,多語言項目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

學習PHP:初學者指南 學習PHP:初學者指南 Jul 18, 2025 am 04:54 AM

易于效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles