【问题标题】:Joomla: add calendar view to the filterJoomla:将日历视图添加到过滤器
【发布时间】:2022-12-28 19:34:41
【问题描述】:

我在 Joomla 4 上制作了一个带有自定义字段的事件列表,并为它们安装了一个过滤器。过滤器运行良好,但按日期过滤现在基于日期列表。例子:

01 - December - 2022
02 - December - 2022
28 - November - 2022
29 - November - 2022
30 - November - 2022
...

添加日历而不是此列表并执行以下操作有多困难:

  1. 这样,日历中的日期仅在有活动时才处于活动状态。
  2. 以便日历中的这些日期以颜色突出显示

    它应该如何工作?我正确理解这仅在前端完成?我需要的日期列表已经在过滤器中作为列表提供。请告诉我我需要工作的方向。

【问题讨论】:

  • 通过在 Joomla Stack Exchange 上询问 Joomla 问题,您可以敞开心扉,了解具有 Joomla 专业知识的人可能会为您提供一种全新的、更好的方法,从而最好地利用 CMS 的“魔力”。当在 Stack Overflow 上询问 Joomla 问题时,您不太可能得到 Joomla 主题专家的答复。
  • 谢谢你。不知道这件事。

标签: filter joomla calendar


【解决方案1】:

答案将会被发现。您可以使用任何现成的 Javascript 日历。我用这个:https://www.cssscript.com/create-simple-event-calendar-javascript-caleandar-js/

根据说明进行设置,在日历代码中插入日期的地方,插入我的数据数组,其中包含过滤器中的日期。一切都很简单。

一个对我有用的例子。你可以使用这个原则,适应你的条件:

<script type="text/javascript">
jQuery(document).ready(function($){

var events = [

<?php foreach($options as $option) : 

$date = date_format(date_create($option->getValue()),'d/m/Y');
$explodeDate = explode('/', $date);  
$explodedDay = $explodeDate[0];
$explodedMonth = $explodeDate[1];
$explodedYear = $explodeDate[2];
$explodedMonth = $explodedMonth - 1;
if ($explodedDay >= 1 && $explodedDay <=9) {
    $EventDate = str_replace("0", "", $explodedDay);    
} else {
    $EventDate = $explodedDay;  
};
?>

{'Date': new Date(<?php echo $explodedYear; ?>, <?php echo $explodedMonth; ?>, <?php echo $explodedDay; ?>), 'Title': '<?php echo $EventDate; ?>', 'Link': '<?php echo Route::_($option->getLink()) ?>'},
<?php endforeach; ?>

    ];
var settings = {};
var element = document.getElementById('caleandar');
caleandar(element, events, settings);
    });

日期来自数据库的方式不符合日历格式,因此在 PHP 的帮助下我不得不转换日期并将日、月和年分开。同样在日历中,第一个月是 0,所以我不得不从月份中减去一位数字。

【讨论】:

  • JSON 有效载荷绝对不应该在循环中手动制作和打印。应填充整个 PHP 负载,然后应调用 json_encode() 以生成整个 javascript 对象/数组。在 PHP 中有比使用 explode() 更优雅的方法来解析和格式化日期。
  • 也许你说的对。我不是 PHP 专家。我是根据我所知道的做的。你有什么想法如何做得更好更正确吗?
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2012-02-22
  • 2015-03-24
  • 1970-01-01
  • 2020-07-10
相关资源
最近更新 更多