Как установить логотип темы?

16

Как я могу установить логотип в моей пользовательской теме в Drupal 8?

Я вижу, что Drupal ищет файл logo.svg. У меня есть файл PNG logo.png, который я использовал в Drupal 7, и я хотел бы использовать его повторно. Я не могу установить логотип в качестве настройки темы, как в Drupal 7.

Есть ли способ через UI или пользовательский код в теме установить логотип?

batigolix
источник
Глядя на код Drupal 8, я вижу, что он по-прежнему имеет настройку для пользовательского логотипа, если по умолчанию не был включен.
kiamlaluno
Да, действительно, если вы отключите «Использовать логотип по умолчанию, предоставленный темой», то вы можете выбрать логотип. Я думал о том, чтобы позволить Drupal выбрать свой logo.png в качестве логотипа по умолчанию
batigolix

Ответы:

15

После Drupal 8.6.x

В вашем THEME.info.ymlдобавить строку, как logo: logo.png. Вам нужно очистить кеш для Drupal, чтобы обнаружить это изменение.

До Drupal 8.6.x

Файл логотипа по умолчанию теперь стал logo.svgв Drupal 8. Однако, чтобы использовать его logo.pngили что-то еще, вам нужно добавить определение пользовательских настроек в вашу тему. Для этого добавьте следующие строки в config/install/THEME.settings.ymlфайл в папке вашей темы (замените THEMEна имя машины вашей темы).

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

После этого вы должны переустановить тему, если она уже установлена. Файл просит Drupal установить указанные параметры при установке темы. Следовательно, при установке темы pathпараметр логотипа сохраняется в базе данных, а параметр по умолчанию отключается use_defaultпараметром.

Jigarius
источник
1
Надеюсь, вы выполнили инструкции, как указано. Также не забудьте переустановить тему или импортировать настройки вроде drush cim -y --partial --source=path/to/theme/config/install. Я использовал это несколько раз, и это работает.
Джигариус
Вы также можете повторно импортировать конфигурацию, используя следующий код (например, из ловушки обновления). ВНИМАНИЕ, это уничтожит все настройки, добавленные с момента установки темы:\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
leon.nk
Я попытался установить тему на Bartik, а затем вернуться к своей теме, и настройки не обновились. У меня нет доступа к командной строке для drush. Как мне переустановить тему?
Джефф
6

Для обычных тем вы можете просто перейти на страницу внешнего вида, перейти на вкладку настроек и отменить выбор Use the logo supplied by the theme. Появившаяся форма загрузки позволяет загружать другое изображение.

меры

Если вы на самом деле создаете тему и хотите предоставить изображение по умолчанию, обратитесь к одному из других ответов.

Neograph734
источник
5

В файле MYTHEME.theme вашей темы добавьте следующий код.

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

  }
}

Поместите файл логотипа в каталог MYTHEME. Замените МИФЕМ на имя машины вашей темы.

Васим Хан
источник
5

Начиная с Drupal 8.6 ваш вклад или пользовательская тема (скажем, она называется mythemename) может легко определять логотип по умолчанию в своем mythemename.info.ymlфайле:

logo: images/acme-logo-stacked.png

См. Https://www.drupal.org/docs/8/theming-drupal-8/defining-a-theme-with-an-infoyml-file#logo.

Обратите внимание, что для использования use_defaultнастройки логотипа должно быть верно.

mlncn
источник
Это сейчас, смотрите ThemeInitialization
berliner
4

В Drupal 8 логотипом по умолчанию должен быть файл SVG. Вы по-прежнему можете использовать файл PNG с пользовательским логотипом или если тема имеет дополнительные пользовательские настройки для поддержки логотипов, отличных от SVG.

Это то, что сообщается в Типе логотипа по умолчанию для тем - SVG , запись изменений для Drupal 8.0.0-beta5.

Как отмечается в комментарии, вы также можете использовать следующее в файле настроек темы.

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

Это будет автоматически использовать пользовательский логотип без настройки его из пользовательского интерфейса.

киамлалуно
источник
3

В файле /your-drupal-folder/themes/THEME.theme добавьте это:

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
источник
1

В Drupal 8.6 это может быть установлено в вашем файле .info.yml следующим образом:

logo: 'images/MY_THEME_LOGO.png'

путь к теме автоматически добавляется в путь src

вибрировать
источник
0

Я не думаю, что вам нужно менять код. В некоторых случаях Global settingsможет быть остановлено использование логотипа соответствующей темы. Поэтому убедитесь, что в Drupal 8 логотипLOGO IMAGE « Глобальные настройки» и логотип вашей темы должны быть одинаковыми (в некоторых случаях).

Т.С. Гухан
источник
0

Простой вариант - разместить логотип в пользовательском блоке.

/ Администратор / структура / блок / блок-контент

это гибко и особенно полезно, если вы хотите, чтобы этот логотип отображался по-другому в других разделах сайта.

Matoeil
источник