coffeincode/countdowncalendar 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

coffeincode/countdowncalendar

Composer 安装命令:

composer require coffeincode/countdowncalendar

包简介

Bundle for a countdown-calendar or adventcalendar

README 文档

README

Eine Advents- oder auch allgemeiner Countdown-Kalender-Erweiterung - das ist meine kleine Übung, um tiefer in die Strukturen und Vorgehensweisen der Contao-Bundles einzutauchen. Das Bundle darf gerne verwendet werden und ich freue mich über Tipps und Anregungen, aber erwartet keinen fehlerlosen Proficode. Ich übernehme keine Garantie und rate davon ab, dieses Bundle in Produktivumgebungen zu nutzen.

Was ist der CountdownCalendar?

Diese Erweiterung ist eigentlich ein Adventskalender, aber um die Erweiterung ohne die Schlagworte "Advent" und "Weihnachten" auch im weiteren Jahreslauf nutzen zu können, wurde sie allgemeiner einfach CountdownCalendar genannt.

Konzept

Der CountdownCalendar wird im Frontend als Bild angezeigt, das mit "Türen" überlagert ist in Anlehnung an den klassischen Adventskalender. Die Tür des aktuellen Tages und alle davor öffnen sich, wenn der Mauszeiger darüber hovert. Es erscheint eine Schaltfläche, die ein Modal öffnet. Im Modal steht die Beschreibung des jeweiligen Türchens und ein Button zum Aufrufen des eigentlichen Türchen-Inhaltes.

Im Backend sind die Kalender so organisiert: Jeder Kalendertag hat ein Startdatum, dies ist aber nicht gleichzusetzen mit dem "published"-Häkchen, das den Kalendereintrag veröffentlicht. Um mehrere Kalendertage für ein und dasselbe Datum zu erlauben wurde das Published-Feld verwendet um anzuzeigen, ob diese Tür grundsätzlich im Frontend ausgegeben werden darf. Einen verfolgbaren Link und damit Zugriff auf die Inhalte des Türchens gibt es nur dann, wenn das Datum des Kalendertages erreicht oder überschritten wurde. Die Frontendvorschau funktioniert aus diesem Grund nur begrenzt, siehe Abschnitt "Testen und Debuggen"

Innenleben

Der Kalender ist ähnlich wie ein Nachrichtenkanal inkl. Listing und Leser angelegt. Ein Kalender benötigt die Angaben, wann er startet und endet sowie das Bild, das im Hintergrund angezeigt werden soll. Zudem muss angegeben werden, welche Bildgröße verwendet werden soll und welche Breakpoints angewendet werden. Mit der Angabe, wie viele Türen pro Reihe angezeigt werden sollen (LG vs. MD vs. XS), werden die Türbreiten dann entsprechend der Containergröße adaptiert. Die Farb-Attribute sind noch nicht funktional, derzeit muss entweder per zusätzlichem css-style im Backend oder per Anpassung der SCSS-Variablen im Modulcode die jeweilige Farbgebung angepasst werden.

Hintergrundbild

Der Kalender wurde so angelegt, dass ein Bild im Hintergrund das responsive Verhalten des Containers regelt. Es ist empfehlenswert, eine gesonderte Bildgröße anzulegen, mit der dieses Verhalten gesteuert wird. So kann sichergestellt werden, dass der Kalendercontainer auch auf kleinen Displays genug Höhe zur Verfügung stellt, um die Türen ohne Überlagerungen neben- und untereinander darzustellen. Die Bildgröße sollte mit exakten Maßen arbeiten und mindestens 2 Breakpoints verarbeiten. Bei xs-Displays ist es empfehlenswert, das Kalenderbild ggf. vom Querformat auf Hochformat wechseln zu lassen, das ist mit responsive images in Contao ja kein Problem.

Anlegen neuer Kalender-Einträge

Die Kalender-Tage werden ähnlich wie Nachrichten eines Nachrichtenkanals angelegt, jeder Kalendertag hat ein Teaserfeld. Die Detail-Infos für die Leserseite sind als herkömmliche Content-Elements aus Contao auswählbar. Es empfiehlt sich, erst alle Tage des Kalenderzeitraums anzulegen, damit keiner vergessen wird. Danach kann die Ausgabereihenfolge für das Frontend durch Umsortieren der Liste durchgeführt werden.

Testen und Debuggen

Der Kalender bringt einen Debug-Modus mit sich, um das Verhalten des Kalenders durchzutesten bevor die Kalenderdaten erreicht werden. Sobald der Kalender auf debug gesetzt wird, muss ein Datum angegeben werden, das ab sofort für alle Kalender-Anfragen im Frontend verwendet werden soll. So kann Anfang November getestet werden, ob die Türen am 22.12. alle korrekt öffnen und die letzten beiden wie erwartet verschlossen bleiben.

Dies kann gemeinsam mit der Frontend-Vorschau in der Einstellung "uveröffentlichte Elemente anzeigen" verwendet werden. Da der Debug-Modus die Frontend-Ausgabe für alle Aufrufe verändert, nicht nur für die Frontend-Vorschau, sollte er nachdem alles eingestellt wurde auch unbedingt wieder ausgeschaltet werden.

coffeincode/countdowncalendar 适用场景与选型建议

coffeincode/countdowncalendar 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 11 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「contao」 「countdown」 「Adventskalender」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 coffeincode/countdowncalendar 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 coffeincode/countdowncalendar 我们能提供哪些服务?
定制开发 / 二次开发

基于 coffeincode/countdowncalendar 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 22
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0-or-later
  • 更新时间: 2018-11-25