¿Cómo obtener la ruta del logotipo en Drupal 7?

7

Tengo un logotipo personalizado y he tratado de obtener su camino de esta manera theme_get_setting('logo_path'), pero no hay resultados esperados.

Estoy usando el código en un bloque personalizado, en la entrada PHP.

Ek Kosmos
fuente
3
¿Dónde usas este código? ¿Has intentado theme_get_setting('logo_path', 'THEME_NAME')reemplazar THEME_NAME con el nombre de tu tema?
marcvangend

Respuestas:

7

logo_pathparece que solo se establece si anula el logotipo predeterminado del tema a través de la configuración del tema. Para obtener el logotipo predeterminado, use theme_get_setting('logo').


fuente
Pero, ¿por qué el resultado de theme_get_setting('logo')es una cadena vacía? He puesto mi logotipo personalizado en/admin/appearance/setting
Ek Kosmos
¿Por qué cuando Logo es el tema de desactivación de TOGGLE DISPLAY - Enable or disable the display of certain page elements.la theme_get_setting('logo')no tiene resultados. Por qué ?
Ek Kosmos
1
¡Gracias, eso es exactamente lo que estaba buscando! Use <a href="<?php echo theme_get_setting('logo');?>">en un bloque de código PHP para mostrar el logotipo en su propio bloque.
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]
  // …
}

La llamada a drupal_theme_initialize () no es estrictamente necesaria, y no hace nada si la variable global $themeya está inicializada.
El código está eliminando la URL base porque el valor informado theme_get_setting('logo')es una ruta absoluta; Si no necesita una ruta relativa para acceder al archivo, // [1]se puede eliminar la parte intermedia .

Cuando el logotipo se ha deshabilitado en la configuración del tema, theme_get_setting('logo')no devuelve nada.

kiamlaluno
fuente
He sustituido el código [1]con $logo = file_create_url($logo);el fin de obtener la ruta URL completa del logotipo (con el http: //).
Matt Fletcher