英文:
Show TYPO3 content only during working hours by recurrently publish and unpublish content every working day
问题
我想要在每周一到周五的上午9点到下午5点之间显示一个TYPO3内容元素。使用默认选项,我只能添加一个发布日期和时间以及一个过期日期和时间。
在TYPO3 v10中,我应该如何管理这个(在服务器端,而不使用JavaScript)?
我找到了一个扩展(Content Scheduler),可以管理重复发布和取消发布日期,但无法定义类似于"每个工作日"的情况。
我考虑使用TYPO3调度程序(或本机cron作业)调用CLI命令,但TYPO3没有提供一个命令来发布和取消发布内容元素。
有什么想法吗?也许可以使用老式的TypoScript?
英文:
I want to display a TYPO3 content element every Monday till Friday between 9am and 5pm. With the default options I am only able to add a single publish and a single expire date and time.
How could I mange this in TYPO3 v10 (on the server side without using JavaScript)?
I found an extension (Content Scheduler), that can manage recurring publishing and unpublishing dates but it's not possible to define s.th. like 'every working day'.
I was thinking about using the TYPO3 scheduler (or native cron job) calling a CLI command but TYPO3 does not offer a command to publish and unpublish content elements.
Any ideas? Maybe using the good old TypoScript?
答案1
得分: 1
所有记录的可见性时间不是周期性的,而是在固定日期(和时间)上开始和/或结束可见性。
我知道的唯一选项,可以忽略完整时间戳的一部分是TypoScript中的条件。
TYPO3 10的条件在这个手册中有描述。
这将导致类似于以下的TypoScript:
[date("G") > 8 && date("G") < 17]
page.10.variables.content < styles.content.get
[else]
page.10.variables.content = TEXT
page.10.variables.content.value = 对不起,我们已经关闭。<br />请在早上9点回来。
[global]
当然,这不会考虑周末,您需要对其进行增强。
注意您不能将条件嵌套在彼此之中!
[date('N') > 5]
// 仅适用于星期六和星期日:
page.10.variables.content = TEXT
page.10.variables.content.value = 对不起,我们已经关闭。<br />请在星期一早上9点回来。
[date('N') == 5 && date('G') > 16]
// 星期五晚上
page.10.variables.content = TEXT
page.10.variables.content.value = 对不起,我们已经关闭。<br />请在星期一早上9点回来。
[date("G") > 8 && date("G") < 17]
page.10.variables.content < styles.content.get
[else]
page.10.variables.content = TEXT
page.10.variables.content.value = 对不起,我们已经关闭。<br />请在早上9点回来。
[global]
此外,您还可以在FLUID中计算这些条件。可以使用您提供的适当变量(用于星期几和小时),或者使用匹配的视图助手:
如果您想要使用PHP在一周的不同时间提供不同的内容,可以使用以下方式:
- 为自己的条件编写自定义userFunction
- 或者为自己的ViewHelper
- 或者使用内部处理的特殊内容的控制器
英文:
All visibility timings of records is not periodical but on fixed dates (and times) for starting and/or ending of visibility.
The only option I know where you can ignore parts of the full timestamp are conditions in TypoScript.
The condition for TYPO3 10 is described in this manual
this will result in a typoscript like this:
[date("G") > 8 && date("G") < 17]
page.10.variables.content < styles.content.get
[else]
page.10.variables.content = TEXT
page.10.variables.content.value = Sorry. we are closed.<br />Please come back at 9:00.
[global]
Of course this will not consider the weekend and you need to enhance it.
Note that you can't stack conditions into each other!
[date('N') > 5]
// just saturday and sunday:
page.10.variables.content = TEXT
page.10.variables.content.value = Sorry. we are closed.<br />Please come back on Monday at 9:00
[date('N') == 5 && date('G') > 16]
// friday in the evening
page.10.variables.content = TEXT
page.10.variables.content.value = Sorry. we are closed.<br />Please come back on Monday at 9:00
[date("G") > 8 && date("G") < 17]
page.10.variables.content < styles.content.get
[else]
page.10.variables.content = TEXT
page.10.variables.content.value = Sorry. we are closed.<br />Please come back at 9:00
[global]
You also can compute these conditions in FLUID. Either with apropiate variables you provide (for dayOfWeek and hour)
or with a matching viewhelper:
If you want to use PHP to provide different content at different times in the week you can do it with:
- your own userFunction for your own condition
- or your own ViewHelper
- or an controller for special content which handles it internally
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论