Как получить путь к логотипу в Drupal 7?


7

У меня есть собственный логотип, и я пытался понять его путь таким образом theme_get_setting('logo_path'), но ожидаемого результата не было.

Я использую код в пользовательском блоке, на входе PHP.


3
Где вы используете этот код? Вы пытались theme_get_setting('logo_path', 'THEME_NAME')заменить THEME_NAME названием вашей темы?
marcvangend

Ответы:


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')
Эк Космос

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уже инициализирована.
Код удаляет базовый URL, потому что сообщаемое значение theme_get_setting('logo')является абсолютным путем; если вам не нужен относительный путь для доступа к файлу, то часть между ними // [1]может быть удалена.

Когда логотип отключен в настройках темы, theme_get_setting('logo')ничего не возвращает.


Я заменил код [1]с $logo = file_create_url($logo);, чтобы получить полный URL - путь логотипа (с HTTP: //).
Мэтт Флетчер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.