J'ai besoin d'ajouter une icône de police dans le menu d'administration.
Comme tous les menus principaux de magento 2, par défaut, il affiche l'icône hexagonale du menu du module personnalisé, comment puis-je le changer?
J'ai besoin d'ajouter une icône de police dans le menu d'administration.
Comme tous les menus principaux de magento 2, par défaut, il affiche l'icône hexagonale du menu du module personnalisé, comment puis-je le changer?
Réponses:
1. Créer une icône
Par défaut, magento 2 ajoute une icône par défaut personnalisée pour votre module.
Mais vous pouvez ajouter votre icône personnalisée à votre menu de module d'administration personnalisé.
Créez une icône personnalisée .svg avec le logiciel inkscape (logiciel open source pour
création de vecteur essayer l'homme!).
Créez l'icône de police de cette icône .svg avec l'aide de IcoMoon.io
Aller à lib/web/fonts
créez votre dossier de module. exemple Package
et collez tous les fichiers obtenus / exportés depuis IcoMoon.io.
Package_Modulename
allez dans app / design / adminhtml / Magento / backend
créer un dossier avec le nom Package_Modulename / web / css / source /
Créer un _module.less
fichier sous le dossier source
Cela ressemblera à Package_Modulename/web/css/source/_module.less
Maintenant, dans votre fichier _module.less, ajoutez ces lignes:
@modulename-icons-admin__font-name-path: '@{baseDir}fonts/modulename/icomoon';
@modulename-icons-admin__font-name : 'modulename';
.font-face(
@family-name:@modulename-icons-admin__font-name,
@font-path: @modulename-icons-admin__font-name-path,
@font-weight: normal,
@font-style: normal
);
.admin__menu .item-modulename.parent.level-0 > a:before {
font-family: @modulename-icons-admin__font-name;
content: "\e800";
}
item-modulename: voici modulename
vient deetc/adminhtml/menu.xml
<menu>
<add id="Package_Modulename::modulename" title="Modulename" module="Package_Modulename" sortOrder="40" resource="Package_Modulename::modulename"/>
</menu>
voir l'id Magento prendre le dernier mot après '::' voici modulename
et ajouter le nom au li
parent html de la a
balise le résultat de la classe estclass='item-modulename parent level-0'
Pour une compréhension plus détaillée, vous pouvez consulter http://ibnab.com/en/blog/magento-2/magento-2-backend-how-to-create-custom-menu-in-admin-and-change-default -font-icon
J'ai essayé la solution ci-dessus mais cela n'a pas fonctionné pour moi. donc j'ai essayé de mettre le _module.less
fichier
vendor/magento/theme-adminhtml-backend/Your_Module/web/css/source
Direcrtory. Et ça fonctionne pour moi.
Ce n'est pas recommandé mais je n'ai trouvé aucune autre solution pour cela. donc j'essaie cette solution. et il fonctionne. vérifiez le fichier suivant pour vous assurer qu'il fonctionne:
pub/static/adminhtml/Magento/backend/en_US/css/styles.less
Où vous devriez trouver une ligne comme celle-ci:
@import '../Your_Module/css/source/_module.less';
Au- dessus de réponse mentionnés sont les différents dossiers travaillé comme lib
, design
.
Nous n'avons donc travaillé que les fichiers d'extension personnalisés. Les étapes sont les suivantes:
1) vous avez créé le menu.xml
fichier pour Package_Modulename/etc/adminhtml
. Le code est
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
<add id="Package_Modulename::package_menu" title="package name" module="Package_Modulename" sortOrder="70" resource="Package_Modulename::package_menu"/>
<add id="Package_Modulename::menu_config" title="Configuration" translate="title" module="Package_Modulename" sortOrder="1" parent="Package_Modulename::package_menu" resource="Package_Modulename::menu_config"/>
</menu>
</config>
2) Créez l'icône de police de cette icône .svg avec l'aide de IcoMoon.io . Plus de détails Documents
3) Créez le default.xml
fichier pour Package_Modulename/view/adminhtml/layout
. Le codage est:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<css src="Package_Modulename::css/icon.css"/>
</head>
</page>
4) Créez le fonts
dossier Package_Modulename/view/adminhtml/web
et collez les fichiers d'icônes. Les fichiers sont
icon.eot
icon.svg
icon.ttf
icon.woff
5) Créez le icon.css
fichier pour Package_Modulename/view/adminhtml/web/css
. Le code est
@font-face {
font-family:'Packagename';
src:url('../fonts/icon.eot');
src:url('../fonts/icon.eot?#iefix') format('embedded-opentype'),url('../fonts/icon.woff') format('woff'),url('../fonts/icon.ttf') format('truetype'),url('../fonts/icon.svg') format('svg');font-weight:normal;font-style:normal
}
.admin__menu .level-0.item-package_menu > a::before {
content: '\e900';
font-size: 3.0rem;
padding-top: 0.1rem;
font-family:'Packagename';
}
Remarque: au-dessus du codage,
content: '\e900';
vérifiez la valeur. Veuillez vérifier le fichier du package de polices (demo.html
). Reportez-vous à la capture d'écran:
Une autre façon "hackish" de le faire est d'ajouter une image png transparente dans le vendor/modulename/view/adminhtml/web/images/icon.png
et quelques lignes css dans le vendor/modulename/view/adminhtml/web/css/styles.css
:
/* you may have to adjust the selector a bit*/
.admin__menu .item-{modulename}-menu.last.level-0 > a:before {
background: url("../images/icon.png") center center no-repeat;
content: "";
background-size: auto 95%;
}
.admin__data-grid-wrap .data-grid .data-grid-draggable .data-row .data-grid-thumbnail-cell .admin__control-thumbnail > img:before {
border:none;
}
Personnellement, j'ai eu des difficultés à générer les polices Web et pour être honnête, je trouve cette approche un peu trop pour une icône d'administration (image de 1 Ko).
Vous pouvez également rechercher une icône d'administration qui existe déjà et correspond à vos besoins dans l' iconographie dans la bibliothèque de modèles d'administration Magento , puis rechercher la variable LESS correspondante dans le vendor/magento/theme-adminhtml-backend/web/css/source/variables/_icons.less
fichier.
Si vous trouvez quelque chose d'utile dans cette bibliothèque, créez votre fichier LESS directement dans votre module (pas besoin de thème adminhtml) sur Vendor/ModuleName/view/adminhtml/web/css/source/_module.less
et remplissez-le avec le contenu suivant:
.admin__menu .item-modulename.parent.level-0 > a:before {
content: @icon-tool__content; // Or whatever icon variable you want
}
Ensuite, vous devez supprimer le pub/static/adminhtml/Magento/backend/en_US/css/styles.css
fichier et recharger la page d'administration