Jak ustawić logo motywu?

16

Jak ustawić logo w niestandardowym motywie w Drupal 8?

Widzę, że Drupal szuka pliku logo.svg. Mam plik PNG logo.png, którego użyłem w Drupal 7 i chciałbym go ponownie użyć. Nie mogę ustawić logo jako ustawienia motywu, tak jak w Drupal 7.

Czy istnieje sposób w interfejsie użytkownika lub niestandardowym kodzie w motywie, aby ustawić logo?

batigolix
źródło
Patrząc na kod Drupala 8, widzę, że nadal ma ustawienie niestandardowego logo, jeśli domyślne nie zostało włączone.
kiamlaluno
Tak, jeśli wyłączysz opcję „Użyj domyślnego logo dostarczonego przez motyw”, możesz wybrać logo. Zastanawiałem się, czy pozwolić Drupalowi wybrać moje logo.png jako domyślne logo
batigolix,

Odpowiedzi:

15

Po Drupal 8.6.x

W swoim THEME.info.ymldodaj linię jak logo: logo.png. Musisz wyczyścić pamięć podręczną, aby Drupal mógł wykryć tę zmianę.

Przed Drupalem 8.6.x

Domyślny plik logo stał się teraz logo.svgw Drupal 8. Aby jednak użyć logo.pnglub czegoś innego, musisz dodać niestandardową definicję ustawień w swoim motywie. Aby to zrobić, dodaj następujące wiersze do config/install/THEME.settings.ymlpliku w folderze motywu (zamień THEMEna nazwę komputera motywu).

logo:
  path: 'themes/THEME/logo.png'
  use_default: false

Po wykonaniu tej czynności musisz ponownie zainstalować motyw, jeśli jest już zainstalowany. Plik prosi Drupala o zainstalowanie podanych ustawień po zainstalowaniu motywu. Dlatego podczas instalowania motywu pathparametr logo jest zapisywany w bazie danych, a domyślne logo jest wyłączane przez use_defaultparametr.

Jigarius
źródło
1
Mam nadzieję, że wykonałeś instrukcje, jak wspomniano. Nie zapomnij również ponownie zainstalować motywu lub zaimportować konfiguracji drush cim -y --partial --source=path/to/theme/config/install. Użyłem tego kilka razy i działa.
Jigarius
Możesz także ponownie zaimportować konfigurację, używając następującego kodu (np. Z haka aktualizacji). UWAGA spowoduje to wyczyszczenie każdej konfiguracji dodanej od czasu zainstalowania motywu:\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
leon.nk
Próbowałem ustawić motyw na Bartik, a następnie z powrotem na mój motyw i ustawienia nie zostały zaktualizowane. Nie mam dostępu do wiersza poleceń dla drush. Jak ponownie zainstalować motyw?
Jeff
6

W przypadku zwykłych motywów możesz po prostu przejść do strony wyglądu, przejść do karty ustawień i odznaczyć Use the logo supplied by the theme. Wyświetlony formularz przesyłania pozwala zamiast tego przesłać inny obraz.

kroki

Jeśli faktycznie tworzysz motyw i chcesz podać domyślny obraz, zapoznaj się z jedną z pozostałych odpowiedzi.

Neograph734
źródło
5

W pliku MYTHEME.theme motywu dodaj następujący kod.

/**
 * Implements hook_preprocess_HOOK() for block templates.
 */

function MYTHEME_preprocess_block(&$variables) {
  switch ($variables['base_plugin_id']) {
    case 'system_branding_block':
      $variables['site_logo'] = '';
      if ($variables['content']['site_logo']['#access'] && $variables['content']['site_logo']['#uri']) {
        $variables['site_logo'] = str_replace('.svg', '.png', $variables['content']['site_logo']['#uri']);
      }
      break;

  }
}

Umieść plik logo w katalogu MYTHEME. Zamień MYTHEME na nazwę komputera swojego motywu.

Wasim Khan
źródło
5

Począwszy od Drupal 8.6, Twój motyw contrib lub niestandardowy (powiedzmy, że nazywa się mythemename) może łatwo zdefiniować domyślne logo w mythemename.info.ymlpliku:

logo: images/acme-logo-stacked.png

Zobacz https://www.drupal.org/docs/8/theming-drupal-8/defining-a-theme-with-an-infoyml-file#logo

Pamiętaj, że aby można było użyć use_defaultustawienia logo , musi być prawdziwe.

mlncn
źródło
To jest teraz, zobacz ThemeInitialization
berliner
4

W Drupal 8 domyślnym logo musi być plik SVG. Nadal możesz używać pliku PNG z niestandardowym logo lub jeśli motyw ma dodatkowe ustawienia niestandardowe, aby zapewnić obsługę domyślnych logo innych niż SVG.

Zgłoszono to w Domyślnym typem logo dla motywów jest SVG , rekord zmian dla Drupal 8.0.0-beta5.

Jak podano w komentarzu, możesz również użyć następujących elementów w pliku ustawień motywu.

logo:
  path: 'themes/THEME_NAME/logo.png'
  use_default: false

To automatycznie użyłoby niestandardowego logo bez ustawiania go z interfejsu użytkownika.

kiamlaluno
źródło
3

W pliku /your-drupal-folder/themes/THEME.theme dodaj:

function THEME_preprocess_page(&$variables) {
  global $base_url, $base_path;
  $variables['logo'] = $base_url . $base_path . drupal_get_path('theme','THEME') . '/logo.svg';

  ##Uncomment this if you want to use png instead of svg image
  #$variables['logo'] = str_replace('.svg', '.png', $variables['logo']);
}
Chetabahana
źródło
1

W Drupal 8.6 można to ustawić w pliku .info.yml w następujący sposób:

logo: 'images/MY_THEME_LOGO.png'

ścieżka motywu jest automatycznie dodawana do ścieżki src

Warkotać
źródło
0

Nie sądzę, że musisz zmienić kod. W niektórych przypadkach Global settingsmoże powstrzymywać Cię przed zabraniem odpowiedniego logo motywu. Dlatego upewnij się, że LOGO IMAGEwśród Ustawienia globalne i Twój motyw logo powinien być taki sam w Drupal 8 (niektórych przypadkach).

TS Guhan
źródło
0

Prostą opcją jest umieszczenie logo w niestandardowym bloku.

/ admin / structure / block / block-content

jest to elastyczne i szczególnie przydatne, jeśli chcesz, aby logo wyświetlało się inaczej w innych sekcjach witryny

Matoeil
źródło