oveleon / contao-glossary-bundle
Contao开源CMS的词汇表扩展。词汇表按照新闻和事件类似的方式组织在档案中,可以通过列表和阅读模块显示。
Requires
- php: ^8.1
- ext-json: *
- contao/core-bundle: ^4.13 || ^5.1
- doctrine/dbal: ^3.3
- knplabs/knp-menu: ^3.1
- symfony/config: ^5.4 || ^6.4 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.4 || ^7.0
- symfony/framework-bundle: ^5.4 || ^6.4 || ^7.0
- symfony/http-foundation: ^5.4 || ^6.4 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.4 || ^7.0
- symfony/routing: ^5.4 || ^6.4 || ^7.0
- symfony/security-core: ^5.4 || ^6.4 || ^7.0
- symfony/string: ^5.4 || ^6.4 || ^7.0
- symfony/translation-contracts: ^2.3 || ^3.0
Requires (Dev)
- contao/contao-rector: @dev
- contao/easy-coding-standard: ^6.12
- contao/manager-plugin: ^2.3.1
- phpstan/phpstan: ^1.0
- phpstan/phpstan-doctrine: ^1.3
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-symfony: ^1.0
- shipmonk/composer-dependency-analyser: ^1.5
- shipmonk/dead-code-detector: ^0.2.1
- slam/phpstan-extensions: ^6.0
- thecodingmachine/phpstan-strict-rules: ^1.0
Conflicts
- contao/core: *
- contao/manager-plugin: <2.0 || >=3.0
README

Contao开源CMS的词汇表扩展。词汇表按照新闻和事件类似的方式组织在档案中,可以通过列表和阅读模块显示。
支持
如果您喜欢这个扩展,我们希望您能支持我们,保持开源精神的活力。
如果您认为这个插件很有用,请考虑赞助我们,以帮助我们贡献时间和进一步开发本项目及其他开源项目。
您的贡献,无论是通过编码
、测试
、提供反馈
,甚至捐赠,都有助于确保我们能够继续提供免费开源软件。加入我们,共同做出改变,感谢您的支持! - Oveleon。
支持与Contao 4.13和Contao ^5.1(PHP ^8.1)一起使用
描述
使用Contao词汇表包,您可以在后端管理词汇表条目,并使用前端模块显示它们。每个词汇表条目都可以单独修改和结构化内容元素。您网站上出现的术语可以自动替换为链接(或另一种标记)和悬停卡片预览。
特性
- 与Contao 4.9及更高版本兼容(支持PHP 8)
- 可以创建多个词汇表
- 词汇表和术语的前端和后端权限
- 模块访问保护
- 分页词汇表列表
- 快速链接
- 导航/分页分组用于元音(UTF8到ASCII转换)
- 自动转换词汇表术语的关键字(标记或链接)
- 关键字转换的敏感性
- 词汇表术语的悬停卡片预览
- 悬停卡片加载动画
- 插入标签
- 链接选择器
- 详情页面的元标题和描述
- 网站地图集成
- 缓存失效
- 悬停卡片内容的缓存(会话存储)
- abbr描述的缓存(会话存储)
- 可以使用'abbr'标记功能启用
安装
升级到版本2
从版本1升级到版本2后,请确保编辑您的模块(词汇表和词汇表阅读器)并设置新的模板。
通过composer
composer require oveleon/contao-glossary-bundle
通过contao-manager
Search for contao glossary bundle and add it to your extensions.
安装contao-glossary-bundle后,您需要运行一个contao install。
设置
创建词汇表和术语
Contao词汇表包使用与Contao-News-Bundle类似的档案(词汇表)和词汇表条目(术语)。
-
为词汇表条目设置重定向页面
-
在词汇表中创建一个新的词汇表档案
-
编辑 ✎ 新的词汇表以添加新的词汇表条目(术语)
-
创建一个新的词汇表条目
- 标题 = 词汇表术语
- (搜索术语 = 自动转换的关键字)
- 术语条目预告 = 术语概述等预告文本。
- 发布条目
-
(此外,您还可以为详情页面创建内容元素 - 类似于contao新闻)
将术语表发布到您的网站
要显示您的术语表和术语,您必须创建两个前端模块
词汇表概述
词汇表阅读器
自动关键词转换和悬停卡片
只有术语项内的 搜索词 被考虑。不是关键词本身
您可以为术语添加多个关键词。术语JavaScript执行精确搜索;因此,允许使用空格。
提示
您可以在常规页面上的“专家设置”中禁用自动关键词转换和悬停卡片。此选项建议用于术语页面。
前端模块
词汇表
术语显示所选术语表中的已发布术语项。
设置
术语阅读器
术语显示所选术语表中的已发布术语项。
设置
页面和词汇表设置
根页面设置
contao术语包扩展了
根页面
并添加了额外的 术语设置。
这些设置将适用于此根页面的所有子页面。
术语项内的所有关键词默认转换为链接(您可以在术语配置模板中更改标记,请参阅 JavaScript设置)
悬停卡片显示术语项的预览
常规页面设置
常规页面的 专家设置 扩展了以下选项
术语存档设置
在 术语 下的术语包含悬停卡片额外的选项
术语项内的预告图显示在悬停卡片中
术语项设置
术语项是您术语表中的术语。
在Contao中创建链接
自动转换在通过JavaScript进入页面时创建链接(或另一种标记)。出于SEO目的,您可以使用以下选项在Contao中创建真实链接
使用插入标签
有关 插入标签 的更多信息,请访问
Contao文档。
插入标签
您可以使用包含术语ID或其别名(别名是生成且唯一的)的插入标签。
示例
{{glossaryitem::430}}
{{glossaryitem::website}}
TinyMCE / 链接选择器
在Contao CMS后端创建TinyMCE链接时,您可以在链接选择器中选择新的来源“术语”。
已知限制
由于安全原因,目前 无法 向通过TinyMCE链接选择器创建的 链接 添加 悬停卡片事件。
要将悬停卡片事件应用于链接,请编辑您的tinymce中的HTML,并添加
data-glossary-id: "your glossary item id"
到您的链接。
示例
<a href="{{glossaryitem_url::430}}" target="_blank" rel="noopener" data-glossary-id="430">域名</a>
词汇表JavaScript
通过将解析选项输入到术语初始化中,可以更改术语关键词的标记和悬停卡片的行为。术语对象可以在config_glossary_default模板中找到。开发者可以创建一个以以下前缀开头的新模板:‘config_glossary_’,并在根页面设置中选择它。
设置
启用‘showLoadingAnimation’在内容加载前显示空悬停卡片
浏览器支持
自动关键词转换的术语-JavaScript已在以下浏览器中进行了测试
https://caniuse.cn/?search=String.matchAll
Mac(Big Sur,Catalina)
- Safari(14.1,13.1)
- Google Chrome(94)
- Mozilla Firefox(93)
- Opera(80)
- Microsoft Edge(94)
iPhone 和 iPad
- 移动 Safari (iOS 14 和 iOS 14)
- Chrome 移动 (iOS 14 和 iOS 14)
Microsoft Windows
- Google Chrome(94)
- Mozilla Firefox(93)
- Opera(80)
- Microsoft Edge(94)
它将与支持 String.matchAll 的所有浏览器兼容
常见问题
术语表标记在我的网站上不起作用
- 请确保检查根页面的设置是否已启用术语表
- 请确保此子页面没有禁用术语表
- 在打开开发者工具时,检查是否有来自其他源的 JavaScript 错误
- 请确保检查您的
<body>
内部是否存在现有的<div id="wrapper">
容器如果您使用的是自定义主题,您必须在模板
config_glossary_default.html
中调整术语表的 JavaScript。在这里,您可以为主页面的主要内容添加一个条目选择器,如下所示(见 JavaScript 选项)const GN = new Glossary({ 'entrySelector': "#YOUR-CONTENT-SELECTOR",
我页面上的并非所有链接都被转换
- 这仅在 Safari 16.3 及以下版本中发生,且无法解决这个问题,简单的解决方案是购买新设备
- 由于 MacOS 和 Safari 不允许 js-regex-lookbehind,标记的 JavaScript 包含了一个后备方案。
- 包含空格的关键词(例如 "Foo Bar")无法找到,完整的关键词("Foobar")仍将被考虑。
我想对术语表标记进行样式设置
- 如果您需要类,您必须调整
config_glossary_default.html
中的 JavaScript 配置 - 请检查 JavaScript 设置 以获取更多选项。
const GN = new Glossary({ 'markupAttr': { 'class': 'yourclass1 yourclass2' },
支持
重要
请随时报告错误和功能请求,不要觉得有权利快速修复错误或免费实现您的功能请求。没有免费的午餐 TANSTAAFL。
如果您希望尽快实现功能或修复错误,您可以通过通过 网站 联系我们来进行委托。
许可
此项目根据 AGPL-3.0 许可证授权——有关详细信息,请参阅 LICENSE。