mediadreams / md_unreadnews
这个TYPO3扩展为前端用户向ext:news的记录添加未读信息。
Requires
- georgringer/news: >=9.0,<12.0
- georgringer/numbered-pagination: >=1.0.1,<3.0.0
- typo3/cms-core: ^11.5 || ^12.4
README
此扩展为前端用户向ext:news
的记录添加未读信息。在新闻记录列表中,前端用户可以查看自己是否已阅读过文章。此外,还可以显示类别中的未读文章数量。
扩展附带typoscript库,可以包含在任何需要的地方。
要求
- TYPO3 >= 11.5
- ext:news >= 9.0
屏幕截图
安装
- 通过扩展管理器安装扩展或使用composer
- 包含扩展的静态TypoScript
- 通过设置自己的常量来配置扩展
可用的常量
storagePid
:这是您想要存储未读记录的页面uid。categories
:用逗号分隔的类别uid字符串。所有与配置的类别相关联的新闻记录将被标记为未读。如果不提供类别,则所有新闻记录都将被考虑。feGroup
:feUserGroup的uid。如果提供,则仅为此组中的用户设置未读信息。如果不设置,则考虑所有用户。
使用方法
一旦您安装并激活了扩展,它就会在保存新新闻记录的过程中挂钩。每次后端用户添加新记录时,都会为此记录和配置的feUsers添加未读信息。
列表插件
此扩展附带一个插件,该插件显示用户的全部未读新闻列表。在插件选项
中,您可以设置到详细页面的链接。如果您不提供详细页面,则新闻记录将链接到第一个附加类别的页面。
显示通用未读计数器
此计数器将显示用户的未读项数量。要显示此信息,请在您的fluid模板中使用以下代码
<f:cObject typoscriptObjectPath="lib.mdAllUnreadCount" />
在列表视图中显示未读信息
在新闻扩展的fluid模板中使用以下代码来显示当前登录的feUser是否已阅读新闻。
<f:cObject typoscriptObjectPath="lib.mdIsUnread" data="{newsUid:'{newsItem.uid}'}" />
示例:将ext:news/Ressources/Private/Partials/List/Item.html
复制到您的扩展中,并修改以下内容
<!-- header -->
<div class="header">
<h3>
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
<span itemprop="headline">{newsItem.title}</span>
<f:cObject typoscriptObjectPath="lib.mdIsUnread" data="{newsUid:'{newsItem.uid}'}" />
</n:link>
</h3>
</div>
显示类别未读信息
使用以下代码片段可以显示按类别划分的未读新闻数量
<f:cObject typoscriptObjectPath="lib.mdCategoryCount" data="{categoryUid:'{category.item.uid}'}" />
示例:将ext:news/Ressources/Private/Templates/Category/List.html
复制到您的扩展中,并修改以下内容
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}" additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">
{category.item.title}
<f:cObject typoscriptObjectPath="lib.mdCategoryCount" data="{categoryUid:'{category.item.uid}'}" />
</f:link.page>
删除未读信息
用户阅读新闻文章后,立即删除未读信息。因此,在新闻详细页面上添加以下代码
<f:cObject typoscriptObjectPath="lib.mdRemoveUnread" data="{newsUid:'{newsItem.uid}'}" />
示例:将ext:news/Ressources/Private/Templates/News/Detail.html
复制到您的扩展中,并在模板末尾添加以下代码
<f:if condition="{newsItem}">
<f:then>
<f:cObject typoscriptObjectPath="lib.mdRemoveUnread" data="{newsUid:'{newsItem.uid}'}" />
</f:then>
</f:if>
清理任务
此扩展附带一个调度任务,允许您删除超过一定天数的未读信息。通过以下步骤激活此任务
- 切换到模块
调度
- 添加新任务并在选择字段中选择
类
的选项执行控制台命令
- 填写所有字段,如需要,并在字段
Schedulable Command.
中使用mdUnreadnews:cleanup: Remove old unread information
- 保存任务后,您将能够填写字段
参数:天数。从那时起至删除所有未读信息的过去天数。(整数)
。输入您希望保留未读信息的天数。默认为30天。
错误和已知问题
如果您发现错误,请在Github上添加一个问题。
谢谢
非常感谢所有让这个杰出的TYPO3项目成为可能的人们!
致谢
扩展图标是从ext:news复制的,然后进行了修改。