Drupal 7でロゴパスを取得する方法


7

私はカスタムロゴを持っており、この方法theme_get_setting('logo_path')で彼のパスを取得しようとしましたが、期待される結果は得られませんでした。

入力ブロックのカスタムブロックでコードを使用しています。


3
このコードはどこで使用していますか?あなたは試してみましたtheme_get_setting('logo_path', 'THEME_NAME')あなたのテーマの名前でTHEME_NAMEを置き換え、?
marcvangend 2011年

回答:


7

logo_pathテーマの設定でテーマのデフォルトのロゴを上書きした場合にのみ設定されるようです。デフォルトのロゴを取得するには、を使用しますtheme_get_setting('logo')


しかし、結果theme_get_setting('logo')が空の文字列になるのはなぜですか?カスタムロゴを設定しました/admin/appearance/setting
Ek Kosmos

ロゴがテーマから非アクティブ化されTOGGLE DISPLAY - Enable or disable the display of certain page elements.theme_get_setting('logo')いる場合、結果が得られないのはなぜですか。どうして ?
Ek Kosmos

1
ありがとう、それがまさに私が探していたものです!<a href="<?php echo theme_get_setting('logo');?>">PHPコードブロックで使用して、独自のブロックにロゴを表示します。
Coomie

4
global $base_url;
drupal_theme_initialize();

if (!$logo = theme_get_setting('logo_path')) {
    $logo = theme_get_setting('logo');
}

if (!empty($logo)) {
  // [1]
  // Remove the base URL from the result returned by theme_get_setting('logo').
  // If you don't need the relative path, you can remove this code.
  if (strpos($logo, $base_url) === 0) {
    $logo = drupal_substr($logo, drupal_strlen($base_url));
  }
  // [1]
  // …
}

drupal_theme_initialize()の呼び出しは厳密には必要ありません$theme。グローバル変数がすでに初期化されている場合は何もしません。
から報告される値theme_get_setting('logo')は絶対パスであるため、コードはベースURLを削除しています。ファイルへのアクセスに相対パスが必要ない場合は、その間の部分を// [1]削除できます。

ロゴがテーマ設定で無効にされている場合、theme_get_setting('logo')何も返されません。


私は、内のコードを置き換える[1]$logo = file_create_url($logo);(:// httpで)ロゴの完全なURLパスを取得するために。
Matt Fletcher、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.