Bagaimana cara mengatur logo tema?

16

Bagaimana saya bisa mengatur logo di tema khusus saya di Drupal 8?

Saya dapat melihat bahwa Drupal mencari file logo.svg. Saya memiliki file logo.png PNG yang saya gunakan di Drupal 7 dan saya ingin menggunakannya kembali. Saya tidak dapat mengatur logo sebagai pengaturan tema seperti pada Drupal 7.

Apakah ada cara melalui UI atau kode khusus dalam tema untuk mengatur logo?

batigolix
sumber
Melihat kode Drupal 8, saya bisa melihatnya masih memiliki pengaturan untuk logo kustom, jika yang standar belum diaktifkan.
kiamlaluno
Ya, memang jika Anda menonaktifkan "Gunakan logo default yang disediakan oleh tema" maka Anda dapat memilih logo. Saya berpikir untuk membiarkan Drupal memilih logo.png saya sebagai logo default
batigolix

Jawaban:

15

Setelah Drupal 8.6.x

Di THEME.info.ymltambahkan baris seperti Anda logo: logo.png. Anda perlu menghapus cache untuk Drupal untuk mendeteksi perubahan ini.

Sebelum Drupal 8.6.x

File logo default sekarang telah menjadi logo.svgdalam Drupal 8. Namun, untuk menggunakan logo.pngatau sesuatu yang lain, Anda perlu menambahkan definisi pengaturan khusus dalam tema Anda. Untuk melakukan ini, tambahkan baris berikut ke config/install/THEME.settings.ymlfile di folder tema Anda (ganti THEMEdengan nama mesin tema Anda).

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

Setelah melakukan ini, Anda harus menginstal ulang tema Anda jika sudah diinstal. File meminta Drupal untuk menginstal pengaturan yang diberikan ketika tema diinstal. Oleh karena itu, ketika Anda menginstal tema, pathparameter logo akan disimpan ke database dan logo default dinonaktifkan oleh use_defaultparameter.

Jigarius
sumber
1
Semoga Anda menjalankan instruksi seperti yang disebutkan. Juga, jangan lupa untuk menginstal ulang tema atau mengimpor konfigurasi seperti drush cim -y --partial --source=path/to/theme/config/install. Saya telah menggunakan ini beberapa kali dan berhasil.
Jigarius
Anda juga dapat mengimpor kembali konfigurasi menggunakan kode berikut (mis. Dari kait pembaruan). CATATAN ini akan menghapus konfigurasi yang ditambahkan sejak tema diinstal:\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
leon.nk
Saya sudah mencoba mengatur tema ke Bartik dan kemudian kembali ke tema saya dan pengaturan belum diperbarui. Saya tidak punya akses ke command line untuk drush. Bagaimana cara saya menginstal ulang tema?
Jeff
6

Untuk tema reguler, Anda bisa pergi ke halaman tampilan, pergi ke tab pengaturan dan hapus pilihan Use the logo supplied by the theme. Formulir unggahan yang muncul memungkinkan untuk mengunggah gambar lain.

Langkah

Jika Anda benar-benar membangun tema dan ingin memberikan gambar default, silakan merujuk ke salah satu jawaban lain.

Neograph734
sumber
5

Dalam file MYTHEME.theme tema Anda, tambahkan kode berikut.

/**
 * 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;

  }
}

Letakkan file logo di direktori MYTHEME. Ganti MYTHEME dengan nama mesin tema Anda.

Wasim Khan
sumber
4

Di Drupal 8, logo default harus berupa file SVG. Anda masih dapat menggunakan file PNG dengan logo khusus, atau jika tema memiliki pengaturan khusus tambahan untuk memberikan dukungan pada logo default non-SVG.

Inilah yang dilaporkan dalam Jenis logo default untuk tema adalah SVG , catatan perubahan untuk Drupal 8.0.0-beta5.

Seperti yang dilaporkan dalam komentar, Anda juga dapat menggunakan yang berikut ini di file pengaturan tema.

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

Ini akan secara otomatis menggunakan logo khusus tanpa mengaturnya dari UI.

kiamlaluno
sumber
3

Dalam /your-drupal-folder/themes/THEME.theme file tambahkan ini:

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
sumber
1

Di Drupal 8.6 ini dapat diatur dalam file .info.yml Anda sebagai berikut:

logo: 'images/MY_THEME_LOGO.png'

jalur tema ditambahkan secara otomatis ke jalur src

Judder
sumber
0

Saya tidak berpikir Anda perlu mengubah kode. Dalam beberapa kasus, Global settingsmungkin menghentikan Anda untuk mengambil logo tema masing-masing. Oleh karena itu, pastikan LOGO IMAGEdari Pengaturan global dan logo tema Anda harus sama di Drupal 8 (Beberapa kasus).

TS Guhan
sumber
0

Pilihan sederhana adalah menempatkan logo di blok khusus.

/ admin / struktur / blok / blok-konten

ini fleksibel dan sangat berguna jika Anda ingin logo itu muncul berbeda di bagian lain situs

Matoeil
sumber