向django CMS添加图标插件。
项目描述
django CMS Icon 是一个为 django CMS 设计的插件,允许您将图标(字体或svg)插入到项目中。
为这个项目贡献力量,赢取奖励
因为这个项目是开源的,我们欢迎每个人都参与项目并获得他们的贡献奖励。成为这个卓越社区的一员,帮助我们使 django CMS 成为世界上最好的 CMS。
我们很高兴收到您以问题和拉取请求形式的反馈。在提交您的拉取请求之前,请查看我们的贡献指南。
我们感谢所有帮助创建和维护此包的贡献者。贡献者名单在贡献者部分。
安装
手动安装
运行 pip install djangocms-icon
将 djangocms_icon 添加到您的 INSTALLED_APPS
运行 python manage.py migrate djangocms_icon
关于 django CMS Text CKEditor 的注意事项
为了使图标插件在 CKEditor 中正确显示,需要额外的步骤。
1. 您需要确保您的图标 CSS 通过 CKEditor 的 contentsCss 参数传递。在 Divio Cloud 上,这可以通过插件配置来完成。
2. CKEditor 会自动删除空标签,您可以通过添加一个 javascript 配置文件 到 style_set 来防止这种情况。
django CMS Icon 不会将样式或javascript文件添加到您的前端,这些需要您自行添加。
配置
此插件为所有实例提供了一个 默认 模板。您可以通过添加 DJANGOCMS_ICON_TEMPLATES 设置来提供额外的模板选项。
DJANGOCMS_ICON_TEMPLATES = [ ('svg', 'SVG template'), ]
Web 字体图标
django CMS Icon 插件默认使用 Font Awesome 5。可以通过覆盖以下设置来更改:
DJANGOCMS_ICON_SETS = [ ('fontawesome5regular', 'far', 'Font Awesome 5 Regular', 'lastest'), ('fontawesome5solid', 'fas', 'Font Awesome 5 Solid', 'lastest'), ('fontawesome5brands', 'fab', 'Font Awesome 5 Brands', 'lastest'), ]
此外,您还需要在 /admin/djangocms_icon/includes/assets.html 中加载您字体资源的 资源。将此文件添加到您的项目中,以便图标选择器可以在管理界面中识别您的自定义图标。
图标选择器默认支持多个字体库。您也可以添加多个字体集,如下所示:
DJANGOCMS_ICON_SETS = [ ('elusiveicon', 'el', 'Elusive Icons'), ('flagicon', 'flag-icon', 'Flag Icons'), ('fontawesome5regular', 'far', 'Font Awesome 5 Regular'), ('fontawesome5solid', 'fas', 'Font Awesome 5 Solid'), ('fontawesome5brands', 'fab', 'Font Awesome 5 Brands'), ('fontawesome5light', 'fal', 'Font Awesome 5 Light', '5.3.1_pro'), ('glyphicon', 'glyphicon', 'Glyphicons'), ('ionicon', 'ion', 'Ionicons Icons'), ('mapicon', 'map-icon', 'Map Icons'), ('materialdesign', 'zmdi', 'Material Design'), ('octicon', 'octicon', 'Octicons'), ('typicon', 'typcn', 'Typicons'), ('weathericon', 'wi', 'Weather Icons'), ]
您还可以将版本号作为第四个参数。如果没有提供参数,则使用 bootstrap-iconpicker 图标集的最新版本。
DJANGOCMS_ICON_SETS = [ ('fontawesome4', 'fa', 'Font Awesome 4', '4.0.0'), ('fontawesome5light', 'fal', 'Font Awesome 5 Light', '5.3.1_pro'), ]
只是别忘了在 assets.html 文件中包含这两个库。这只是为了在插件选择图标时进行渲染。您仍然需要将字体库实现到您的前端堆栈中。
自定义 Web 字体图标
您还可以添加自己的自定义 Web 字体,为此您需要告诉图标选择器必要的文件所在位置。
DJANGOCMS_ICON_SETS = [ (ICONSET, 'icon', 'Custom web font'), ]
在此示例中,我们在其之上添加了我们的自定义字体图标集。请注意,第二个参数必须是图标前缀。 ICONSET 是一个指向您项目根目录下设置自定义字体图标的 JSON 文件的外部引用,添加此文件之前:
with open('iconset.json') as fh: ICONSET = fh.read()
以下是其内容的一个示例
{ "iconClass": "icon", "icons": [ "icon-icon1", "icon-icon2", "..." ] }
iconClass 指的是设置文件中图标前缀的第二个参数。确保它们是相同的。除了使用外部文件外,您还可以直接将设置写入到 DJANGOCMS_ICON_SETS 设置中。
djangocms-boilerplate-webpack 可以通过 gulp icons 自动为您生成 iconset.json。
请确保图标名称包含图标集前缀,如示例所示,小部件将根据此确定图标集。如果只使用一个图标集,则可以省略。
别忘了也将你的自定义字体添加到项目的/admin/djangocms_icon/includes/assets.html中。
SVG 图标
django CMS Icon 也支持 SVG 图标。遵循自定义 Web 字体图标的说明,然后稍微调整 JSON 文件。
{ "svg": true, "spritePath": "sprites/icons.svg", "iconClass": "icon", "icons": [ "icon-icon1", "icon-icon2", "..." ] }
svg 和 spritePath 是唯一需要添加的额外属性。你还需要向项目添加一个图标模板来正确渲染它,例如
<span class="{{ instance.icon }} {{ instance.attributes.class }}"> <svg role="presentation"> <use xlink:href="{% static 'sprites/icons.svg' %}#{{ instance.icon }}"></use> </svg> </span>
运行测试
你可以通过执行以下命令来运行测试:
virtualenv env source env/bin/activate pip install -r tests/requirements.txt python setup.py test