web-dev-qa-db-ja.com

テーマへの絶対パスを取得するにはどうすればよいですか?

絶対的なテーマパスを返すDrupal関数はありますか?それとも、テーマパスを正しく返すこれを行うための標準的な/基本的な練習方法はありますか?

私がこれまでに見つけたのはこれです:

<?php
// @file template.php
$template_path = DRUPAL_ROOT . drupal_get_path('theme', 'foo');

次のように、template.phpファイルのテンプレートパスをrequire_onceしようとしています。

<?php
$template_path = DRUPAL_ROOT . drupal_get_path('theme', 'coo');
// ...
// Check file exists etc
require_once $template_path;
6
chrisjlee

base_path() 関数は、Drupalインストールのベースバスを返します。

DrupalインストールのベースURLパスを返します。少なくとも、これは常にデフォルトで/になります。

そして path_to_theme() は現在のテーマへのパスを返します。

現在のテーマの要素へのパスを返します。

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

18

Mohammed Shameemの答えは正しいですが、カスタムテンプレートをレンダリングする正しい方法(Drupal way))を本当に探している場合は、include()またはrequire_once()。代わりに、Drupalテーマシステムを使用します。すでにテンプレートがあるものの出力を変更するのは簡単です。方法については、 それらの出力を上書きする を参照してくださいテンプレートをオーバーライドするには、テンプレートがまだない場合は、 hook_theme について学習し、独自のテンプレートを登録し、配列をレンダリングする必要があります。

2
marcvangend

このモジュールを試すことができます: システムストリームラッパー

これはラッパーを提供します(モジュールのサイトの例):

  • module://file/icons/text-plain.png

  • theme://bartik/screenshot.png

  • theme://default/screenshot.png

  • profile://minimal/minimal.info

  • profile://current/standard.info(profile:// currentは、サイトのアクティブなプロファイルに展開されます)

  • library://ckeditor/images/spacer.gif(ライブラリモジュールが有効な場合にのみ機能)

0
Paul Nike