Comment obtenir le chemin du logo dans Drupal 7?

7

J'ai un logo personnalisé et j'ai essayé de suivre son chemin de cette façon theme_get_setting('logo_path'), mais aucun résultat attendu.

J'utilise le code dans un bloc personnalisé, en entrée PHP.

Ek Kosmos
la source
3
Où utilisez-vous ce code? Avez-vous essayé de theme_get_setting('logo_path', 'THEME_NAME')remplacer THEME_NAME par le nom de votre thème?
marcvangend

Réponses:

7

logo_pathsemble être défini uniquement si vous remplacez le logo par défaut du thème via ses paramètres de thème. Pour obtenir le logo par défaut, utilisez theme_get_setting('logo').


la source
Mais pourquoi le résultat de theme_get_setting('logo')est une chaîne vide? J'ai mis mon logo personnalisé dans/admin/appearance/setting
Ek Kosmos
Pourquoi lorsque le logo est le thème de désactiver TOGGLE DISPLAY - Enable or disable the display of certain page elements.l' theme_get_setting('logo')a aucun résultat. Pourquoi ?
Ek Kosmos
1
Merci, c'est exactement ce que je cherchais! Utilisez <a href="<?php echo theme_get_setting('logo');?>">dans un bloc de code PHP pour afficher le logo dans votre propre bloc.
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]
  // …
}

L'appel à drupal_theme_initialize () n'est pas strictement nécessaire, et il ne fait rien si la variable globale $themeest déjà initialisée.
Le code supprime l'URL de base car la valeur signalée à partir de theme_get_setting('logo')est un chemin absolu; si vous n'avez pas besoin d'un chemin relatif pour accéder au fichier, la partie entre // [1]peut être supprimée.

Lorsque le logo a été désactivé dans les paramètres du thème, theme_get_setting('logo')ne renvoie rien.

kiamlaluno
la source
J'ai remplacé le code [1]avec $logo = file_create_url($logo);afin d'obtenir le chemin URL complet du logo (avec http: //).
Matt Fletcher