web-dev-qa-db-ja.com

Drupal 8でlibraries-overrideを使用してコアモジュールからCSSを無効にする方法は?

Theme.info.ymlファイルのレイアウト検出モジュールからCSSスタイルを無効にしようとしています。私はいくつかのオプションを試しましたが、それを機能させることができないようです。これは私が今持っているものです。

libraries-override:
  core/layout_discovery:
    css:
      theme:
        core/modules/layout_discovery/layouts/twocol/twocol.css: false

CSSスタイルは、現時点ではstylesheets-removeを使用して削除できますが、そのプロパティは廃止されています。現時点では機能しているようです。

可能であれば、libraries-overrideを使用してCSSスチュールを削除する適切な方法を見つけたいと思います。

stylesheets-remove:
  - core/modules/layout_discovery/layouts/onecol/onecol.css
3
Nate Dillon

フルパスの先頭に_/_がないようです。また、オーバーライドするライブラリの名前も間違っています。ライブラリ_core/layout_discovery_はありません。代わりに_layout_discovery/twocol_である必要があります。

_libraries-override:
  layout_discovery/twocol:
    css:
      theme:
        /core/modules/layout_discovery/layouts/twocol/twocol.css: false
_

ソース: ライブラリのオーバーライドと拡張


または、ライブラリを hook_page_attachments_alter() で設定解除しても同様の効果が得られます。これが、テーマの_*.theme_ファイルに配置される実際のコードスニペットです。 Replacy MYTHEMEをテーマのマシン名に置き換えます。

_/**
 * Implements hook_page_attachments_alter().
 */
function MYTHEME_page_attachments_alter(array &$attachments) {

  foreach ($attachments['#attached']['library'] as $key => $library) {

    // Install the Devel submodule Kint for debugging.
    // Check all libs:
    // ksm($attachments['#attached']['library']);

    // Here I disable the core base library.
    // Looks pretty ugly afterwards.
    if ($library == 'system/base') {
      unset($attachments['#attached']['library'][$key]);
    }

    // So for you it must be like following.
    // Simply try to find the right name via ksm($library);
    // or the other ksm() command from above.
    if ($library == 'layout_discovery/twocol') {
      unset($attachments['#attached']['library'][$key]);
    }
  }
}
_
1
leymannx

Http-requestsの数を減らし、すべての不要なDrupal core css-filesの設定を解除します。最後に、この構成は機能します。

libraries-override:    
  layout_discovery/onecol: false

MY_THEME_NAME.info.ymlファイルに追加する必要があります
「admin/config/development/performance」ページの「clear all caches」を忘れないでください。

0
Sergey Serov