プログラムでテーマが有効になっているかどうかを確認する


9

drupalインストールでテーマが有効になっているかどうかを確認するにはどうすればよいですか?module_exists()のようなテーマを探しています。ドキュメントには何も見つかりませんでした。

回答:


6

list_themesを使用する

パラメーター

$ refresh:データベースからテーマのリストを再ロードするかどうか。デフォルトはFALSEです。

戻り値

現在利用可能なテーマの連想配列。キーはテーマのマシン名であり、値は次のプロパティを持つオブジェクトです。

  • filename:.infoファイルのファイルパスと名前。
  • name:テーマのマシン名。
  • status:有効な場合は1、無効な場合は0。
  • info:.infoファイルの内容。
  • stylesheets:2次元配列。メディア属性の最初のキー(「all」など)を使用し、2番目はファイルの名前(style.cssなど)のキーを使用します。値は完全なファイルパスです(例:themes / bartik / style.css)。.infoファイルでスタイルシートが定義されていない場合は設定されません。
  • scripts:ファイル名をキーとして使用し、完全なファイルパスを値として使用する、JavaScriptの連想配列。.infoファイルでスクリプトが定義されていない場合は設定されません。
  • prefix:ベーステーマエンジンのプレフィックス。
  • engine:テーマエンジンのマシン名。
  • base_theme:これがサブテーマの場合、.infoファイルで定義されたベーステーマのマシン名。それ以外の場合、要素は設定されません。
  • base_themes:これがサブテーマの場合、このテーマのベーステーマの祖先の連想配列。このテーマのベーステーマから始まり、次にベーステーマ自体のベーステーマなど。各エントリには、テーマの配列キーと等しい配列キーがあります。マシン名、および人間が読めるテーマ名に等しい値。マシン名が一致するテーマがシステムに存在しない場合、値は代わりにNULLになります(そのテーマ自体にベーステーマがあるかどうかがシステムで認識されないため、ベーステーマの配列が終了します)。テーマがサブテーマでない場合は設定されません。
  • sub_themes:直接的なサブテーマ(つまり、このテーマをベーステーマとして宣言する)、サブテーマの直接的なサブテーマなどのシステム上のテーマの連想配列。キーは、テーマのマシンです。名前、値はテーマの人間が読める名前です。システムにこのテーマをベーステーマとして宣言するテーマがない場合、この要素は設定されません。

path_to_themeを使用してアクティブなテーマを取得します。

アクティブなテーマまたはテーマ別の実装を処理するモジュールを指すことができます。たとえば、テーマ呼び出しのスコープ内で呼び出された場合、テーマ関数が処理される場所によって異なります。モジュールから実装されている場合は、モジュールを指します。アクティブなテーマから実装された場合、アクティブなテーマを指します。テーマ呼び出しの範囲外で呼び出されると、常にアクティブなテーマを指します。


3

データは実際にはまったく同じ場所、つまりsystemテーブルに保持されます。チェックする既存の関数を見つけることができませんでしたが(おそらくどこかにあるはずです)、これはピンチで実行する必要があります。

function theme_exists($theme_name) {
  $themes = list_themes();
  return isset($themes[$theme_name]) && $themes[$theme_name]->status == 1;
}

1
まったく同じことを入力し終えたところですtheme_exists
。__-

1
list_themes()はすでに静的キャッシングを行っているため、この関数ではおそらくその必要はありません。
Letharion 2013年

1
@チャパブ私はものを作るのが好きです...面白いです;)
クライヴ

@Letharion申し訳ありませんが、意味がわかりました。そのビットは削除されます
Clive

1
この機能が必要ないという意味ではありませんでした。私は、キャッシュによって改善できる可能性があるというあなた自身の声明を参照していましたが、この場合は役に立たないと思います。
Letharion 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.