Drupal 8의 사용자 정의 테마에서 로고를 설정하려면 어떻게해야합니까?
Drupal이 logo.svg 파일을 찾는 것을 볼 수 있습니다. Drupal 7에서 사용한 PNG logo.png 파일이 있는데 다시 사용하고 싶습니다. Drupal 7에서와 같이 로고를 테마 설정으로 설정할 수 없습니다.
테마에서 UI 또는 사용자 정의 코드를 통해 로고를 설정하는 방법이 있습니까?
Drupal 8의 사용자 정의 테마에서 로고를 설정하려면 어떻게해야합니까?
Drupal이 logo.svg 파일을 찾는 것을 볼 수 있습니다. Drupal 7에서 사용한 PNG logo.png 파일이 있는데 다시 사용하고 싶습니다. Drupal 7에서와 같이 로고를 테마 설정으로 설정할 수 없습니다.
테마에서 UI 또는 사용자 정의 코드를 통해 로고를 설정하는 방법이 있습니까?
답변:
에 THEME.info.yml
같은 줄을 추가 하십시오 logo: logo.png
. Drupal이이 변경을 감지하려면 캐시를 지워야합니다.
기본 로고 파일은 이제 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
매개 변수에 의해 사용되지 않습니다 .
drush cim -y --partial --source=path/to/theme/config/install
. 나는 이것을 여러 번 사용했으며 작동합니다.
\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
일반 테마의 경우 모양 페이지로 이동하여 설정 탭으로 이동하여 선택을 취소하면 Use the logo supplied by the theme
됩니다. 표시되는 업로드 양식을 사용하면 다른 이미지를 대신 업로드 할 수 있습니다.
실제로 테마를 작성하고 기본 이미지를 제공하려는 경우 다른 답변 중 하나를 참조하십시오.
테마의 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 디렉토리에 넣으십시오. MYTHEME을 테마의 기계 이름으로 바꾸십시오.
Drupal 8.6부터 contrib 또는 사용자 정의 테마 (예 : 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
설정을 사용하려면 true로 설정해야합니다.
Drupal 8에서 기본 로고는 SVG 파일이어야합니다. 사용자 정의 로고가있는 PNG 파일을 사용하거나 테마 에 SVG가 아닌 기본 로고를 지원하기위한 추가 사용자 정의 설정 이있는 경우에도 사용할 수 있습니다 .
이것은 무엇을보고있다 SVG입니다 주제를 기본 로고 타입 , 드루팔 8.0.0-beta5에 대한 변경 기록.
주석에보고 된대로 테마 설정 파일에서 다음을 사용할 수도 있습니다.
logo:
path: 'themes/THEME_NAME/logo.png'
use_default: false
UI에서 설정하지 않고 사용자 정의 로고를 자동으로 사용합니다.
에서 /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']);
}