如何在Drupal 7中获得徽标路径?


7

我有一个自定义徽标,并且我尝试过这种方式theme_get_setting('logo_path'),但没有得到预期的结果。

我在输入PHP的自定义块中使用代码。


3
您在哪里使用此代码?您是否尝试过theme_get_setting('logo_path', 'THEME_NAME')用主题名称替换THEME_NAME?
marcvangend 2011年

Answers:


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 2014年

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已初始化全局变量,则不会执行任何操作。
该代码正在删除基本URL,因为从中报告的值theme_get_setting('logo')是绝对路径。如果您不需要相对路径来访问文件,则// [1]可以删除之间的部分。

在主题设置中禁用徽标后,theme_get_setting('logo')不返回任何内容。


我取代了代码,[1]$logo = file_create_url($logo);以获得标志的完整URL路径(://使用HTTP)。
马特·弗莱彻
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.