跳转到主要内容

向django CMS添加图标插件。

项目描述

pypi coverage python django djangocms djangocms4

django CMS Icon 是一个为 django CMS 设计的插件,允许您将图标(字体或svg)插入到项目中。

preview.gif

为这个项目贡献力量,赢取奖励

因为这个项目是开源的,我们欢迎每个人都参与项目并获得他们的贡献奖励。成为这个卓越社区的一员,帮助我们使 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",
        "..."
    ]
}

svgspritePath 是唯一需要添加的额外属性。你还需要向项目添加一个图标模板来正确渲染它,例如

<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

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面