我已经为 Drupal 8 制作了一个自定义主题。现在我想为首页提供一个横幅图像。我不想创建自定义内容类型Banner
,然后创建一个横幅节点并将其提升到首页,因为提升的节点预告片排列在我主题的网格视图内(与其他节点预告片一起其他内容类型,例如Article
),当我这样做时,我没有得到我期望的结果。所以这完全不是我想做的。
所以首先我决定banner_image
在文件中提供一个自定义字段my_custom_theme.theme
(通过实现适当的钩子):
function my_custom_theme_preprocess_page(&$variables)
{
$variables['banner_image'] = theme_get_setting(‘banner_image’);
}
function my_custom_theme_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state)
{
$form['my_custom_theme_settings']['website'] = array(
'#type' => 'details',
'#title' => t('Website Settings'),
);
$form['my_custom_theme_settings']['website']['banner_image'] = array(
'#type' => 'managed_file',
'#upload_location' => 'public://media/branding/',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
),
'#default_value' => theme_get_setting('banner_image'),
);
}
我得到了以下结果(管理面板):
这意味着:上传横幅图片有效。但是,我认为我已经尽一切努力将图像放在首页上,但没有任何成功(横幅图像未显示)。
因此我覆盖了page--front.html.twig
文件:
<...>
{{ banner_image }}
<...>
没有图片,没有Url,什么都没有(图片已经正确上传到合适的位置,主题已卸载,缓存已清空,主题已重新安装)。
我究竟做错了什么?如果不可能这样做,有没有办法复制相同的功能logo_image
并将其用于我的banner_image
?
1)通过定义文件banner_image
中的设置install\my_theme_settings.yml
:
features:
logo: true
banner: true