Drupal:本地化的calendar模块

来源:岁月联盟 编辑:zhuzhu 时间:2009-10-22

calendar模块: 本地化的日历

包括

1. 中文化

2. 用不同颜色显示不同种类的事件

3. 增加农历显示

中文化calendar

要想在calendar中显示出中文的日期如"星期一,星期二,或者一月 二月或者 一二...日"等中文的内容,就要对Date模块做中文化处理.

不是对calendar做中文化,而是Date模块

主要是针对Date模块的这几个字段进行中文化处理

!day-name Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday
!day-abbreviation Sun|Mon|Tue|Wed|Thu|Fri|Sat
!day-abbreviation S|M|T|W|T|F|S
!day-abbreviation SU|MO|TU|WE|TH|FR|SA
!ampm-abbreviation am|pm|AM|PM
!datetime Year|Month|Day|Week|Hour|Minute|Second|All Day|All day
!datetime_plural Years|Months|Days|Weeks|Hours|Minutes|Seconds
!date_nav Prev|Next|Today
!month-name |January|February|March|April|May|June|July|August|September|October|November|December
!month-abbreviation |Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec

你可以直接通过admin/build/translate/search,输入特定的字符串直接翻译,或者用PO文件进行翻译都行.

针对不同的事件用不同的颜色显示

在calendar模块中,默认的事件显示都是同一种颜色,如果想针对不同类的事件显示不同的颜色以示区别.

如我的事件有:培训,聚会,学习,开会这么几类,想在calendar中用不同的颜色标示出来.应该怎么做?

我的做法,启用drupal的核心模块Taxonomy来对事件进行分类.然后去修改event视图中的模板,在模板中利用不同的CSS类的设置来显示不同类别的事件.

1. 当然是启用Taxonomy,增加一个分类名称如:事件类型,加入术语如"培训,聚会等内容"

2. 修改event的视图,在显示字段中加入分类:Term这个字段

3. 然后去修改视图中的Theme: Information项,因为我不想在日历中显示分类,而仅仅想把term的值作为一个CSS的类别进行输出,所以在使用的模板目录下建立一个名为 views-view-field--event--name.tpl.php空文件,不对它做任何输出.

4. 复制calendar目录下theme目录下的文件calendar-day-node.tpl.php calendar-month-node.tpl.php calendar-week-node.tpl.php 到模板目录中去.

5. 修改这些文件的第42行左右,这是对于calendar-day-node.tpl.php其它文件也类似

<div class="calendar dayview" id="<?php print $node->date_id ?>">

给它们增加一个样式

<div class="calendar dayview style<?php print $node->term_data_tid?>" id="<?php print $node->date_id ?>">

6. 这里所指的$node->term_data_tid是一个数字,要自己先看一下

7. 在模板文件的CSS中增加特定的CSS如

  .calendar-calendar td .inner div.style4 div,
      .calendar-calendar td .inner div.style4  div a {
        border:none;
        background:#fcc;//这个就是用来修改不同背景颜色的
        padding:0 2px;
      }
      .calendar-calendar td .inner div.style2 div,
      .calendar-calendar td .inner div.style2  div a {
        border:none;
        background:#ccc;
        padding:0 2px;
      }

OK,在calendar中就能用不同颜色来显示不同类别事件

为calendar增加农历显示

作为一个本地化的日历显示,星期显示中文还是远远不够的,那么如何在calendar中增加农历显示呢?

这里的公历农历转换借用了老葛写CCK 阴历字段模块代码中的getLunarCalendar()函数源代码

1. 将calendar/theme目录下calendar-datebox.tpl.php文件复制到模板目录中去

2. 打开calendar/theme/theme.inc文件,找到 template_preprocess_calendar_datebox(&$vars)函数,复制到模板目录的template.php文件中,函数名改成phptemplate_preprocess_calendar_datebox(&$vars)或模板名 _preprocess_calendar_datebox(&$vars)

3. 在template.php增加getLunarCalendar函数;

4. 修改phptemplate_preprocess_calendar_datebox(&$vars)函数

5. 修改calendar-datebox.tpl.php文件

phptemplate_preprocess_calendar_datebox(&$vars)代码

function phptemplate_preprocess_calendar_datebox(&$vars) {
  $date = $vars['date'];
  $view = $vars['view'];
    $vars['day'] = intval(substr($date, 8, 2));
  $lunchday =getLunarCalendar($date); //取得农历日期,格式如 五月初五
  $vars['lunchday']= $lunchday;//传递农历日期变量给模板文件
  $force_view_url = !empty($view->date_info->block) ? TRUE : FALSE;
  $vars['url'] = date_real_url($view, NULL, $date, $force_view_url);
       $vars['link'] = l($vars['day'], $vars['url']);
    $vars['granularity'] = $view->date_info->granularity;
  $vars['mini'] = $view->date_info->mini;

  if ($view->date_info->mini) {
    if (!empty($vars['selected'])) {
      $vars['class'] = 'mini-day-on';
    }
    else {
      $vars['class'] = 'mini-day-off';
    }
  }
  else {
    $vars['class'] = 'day';
  }
}

修改后的getLunarCalendar函数,修改了传入变量及返回形式

function getLunarCalendar($date) {
// 农历每月的天数
$everymonth = array(
  0 => array(8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 7, 1),
  1 => array(0, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 8, 2),
  2 => array(0, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 9, 3),
  3 => array(5, 29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 10, 4),
  4 => array(0, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 1, 5),
  5 => array(0, 30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 0, 2, 6),
  6 => array(4, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 3, 7),
  7 => array(0, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 4, 8),
  8 => array(0, 30, 29, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 0, 5, 9),
  9 => array(2, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 6, 10),
  10 => array(0, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 7, 11),
  11 => array(6, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 8, 12),
  12 => array(0, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 9, 1),
  13 => array(0, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 10, 2),
  14 => array(5, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 1, 3),
  15 => array(0, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 2, 4),
  16 => array(0, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 3, 5),
  17 => array(2, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 4, 6),
  18 => array(0, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 0, 5, 7),
  19 => array(7, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 6, 8),
  20 => array(0, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 0, 7, 9),
  21 => array(0, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 8, 10),
  22 => array(5, 30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 9, 11),
  23 => array(0, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 10, 12),
  24 => array(0, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 0, 1, 1),
  25 => array(4, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 2, 2),
  26 => array(0, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 3, 3),
  27 => array(0, 30, 29, 29, 30, 29, 30, 29, 30, 29, 30, 30, 30, 0, 4, 4),
  28 => array(2, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 5, 5),
  29 => array(0, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 6, 6),
  30 => array(6, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 7, 7),
  31 => array(0, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 8, 8),
  32 => array(0, 30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 9, 9),
  33 => array(5, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 10, 10),
  34 => array(0, 29, 30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 0, 1, 11),
  35 => array(0, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 2, 12),
  36 => array(3, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 29, 3, 1),
  37 => array(0, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 4, 2),
  38 => array(7, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 5, 3),
  39 => array(0, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 6, 4),
  40 => array(0, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 7, 5),
  41 => array(6, 30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 8, 6),
  42 => array(0, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 9, 7),
  43 => array(0, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 10, 8),
  44 => array(4, 30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 1, 9),
  45 => array(0, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 0, 2, 10),
  46 => array(0, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 3, 11),
  47 => array(2, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 4, 12),
  48 => array(0, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 5, 1),
  49 => array(7, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 6, 2),
  50 => array(0, 29, 30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 0, 7, 3),
  51 => array(0, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 8, 4),
  52 => array(5, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 9, 5),
  53 => array(0, 29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 29, 0, 10, 6),
  54 => array(0, 30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 1, 7),
  55 => array(3, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 2, 8),
  56 => array(0, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 3, 9),
  57 => array(8, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 29, 4, 10),
  58 => array(0, 30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 5, 11),
  59 => array(0, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 6, 12),
  60 => array(6, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 7, 1),
  61 => array(0, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 0, 8, 2),
  62 => array(0, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 9, 3),
  63 => array(4, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 10, 4),
  64 => array(0, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 1, 5),
  65 => array(0, 29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 2, 6),
  66 => array(3, 30, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 3, 7),
  67 => array(0, 30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 0, 4, 8),
  68 => array(7, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 5, 9),
  69 => array(0, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 6, 10),
  70 => array(0, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 0, 7, 11),
  71 => array(5, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 8, 12),
  72 => array(0, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 0, 9, 1),
  73 => array(0, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 10, 2),
  74 => array(4, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 1, 3),
  75 => array(0, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 2, 4),
  76 => array(8, 30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 3, 5),
  77 => array(0, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 0, 4, 6),
  78 => array(0, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 5, 7),
  79 => array(6, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 6, 8),
  80 => array(0, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 0, 7, 9),
  81 => array(0, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 0, 8, 10),
  82 => array(4, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 9, 11),
  83 => array(0, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 10, 12),
  84 => array(10, 30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 1, 1),
  85 => array(0, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 2, 2),
  86 => array(0, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 0, 3, 3),
  87 => array(6, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 29, 4, 4),
  88 => array(0, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 5, 5),
  89 => array(0, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 0, 6, 6),
  90 => array(5, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 7, 7),
  91 => array(0, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 8, 8),
  92 => array(0, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 9, 9),
  93 => array(3, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 10, 10),
  94 => array(0, 30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 1, 11),
  95 => array(8, 29, 30, 30, 29, 30, 29, 30, 30, 29, 29, 30, 29, 30, 2, 12),
  96 => array(0, 29, 30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 29, 0, 3, 1),
  97 => array(0, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 4, 2),
  98 => array(5, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 5, 3),
  99 => array(0, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 6, 4),
  100 => array(0, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 0, 7, 5),
  101 => array(4, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 8, 6),
  102 => array(0, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 9, 7),
  103 => array(0, 30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 0, 10, 8),
  104 => array(2, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 1, 9),
  105 => array(0, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 2, 10),
  106 => array(7, 30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 3, 11),
  107 => array(0, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 0, 4, 12),
  108 => array(0, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 5, 1),
  109 => array(5, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 6, 2),
  110 => array(0, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 7, 3),
  111 => array(0, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 8, 4),
  112 => array(4, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 9, 5),
  113 => array(0, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 10, 6),
  114 => array(9, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 1, 7),
  115 => array(0, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 29, 0, 2, 8),
  116 => array(0, 30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 3, 9),
  117 => array(6, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 4, 10),
  118 => array(0, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 5, 11),
  119 => array(0, 30, 29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 0, 6, 12),
  120 => array(4, 29, 30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 7, 1)
);
// 农历天干
$mten = array("null", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸");
// 农历地支
$mtwelve = array("null", "子(鼠)", "丑(牛)", "寅(虎)", "卯(兔)", "辰(龙)",
"巳(蛇)", "午(马)", "未(羊)", "申(猴)", "酉(鸡)", "戌(狗)", "亥(猪)");
// 农历月份
$mmonth = array("闰", "正", "二", "三", "四", "五", "六",
"七", "八", "九", "十", "十一", "十二", "月");
// 农历日
$mday = array("null", "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十",
"十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十",
"廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十");

// 星期
$weekday = array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
// 阳历总天数 至1900年12月21日
$total = 11;
// 阴历总天数
$mtotal = 0;
$year = substr($date, 0, 4);//直接传入整个日期,在这里进行拆分
$month = substr($date, 5, 2);
$day = substr($date, 8, 2);
if ($year < 1901 || $year > 2020 || $month < 1 || $month > 12 || $day < 1 || $day > 31) {
  exit('年份或者格式出错,年份只支持1901到2020!');
}
// 获得日期时间戳
$postDate = mktime(0, 0, 0, $month, $day, $year);
$thisDay = getdate($postDate);
//print_R($thisDay);exit;
$cur_wday = $thisDay["wday"];
for($y = 1901; $y < $thisDay["year"]; $y++) {
  // 计算到所求日期阳历的总天数-自1900年12月21日始,先算年的和
  $total += 365;
  if ($y % 4 == 0){
   $total++;
  }
}
switch ($thisDay["mon"]) { // 再加当年的几个月
  case 12:
   $total += 30;
  case 11:
   $total += 31;
  case 10:
   $total += 30;
  case 9:
   $total += 31;
  case 8:
   $total += 31;
  case 7:
   $total += 30;
  case 6:
   $total += 31;
  case 5:
   $total += 30;
  case 4:
   $total += 31;
  case 3:
   $total += 28;
  case 2:
   $total += 31;
}
if ($thisDay["year"] % 4 == 0 && $thisDay["mon"] > 2) {
  $total++; //如果当年是闰年还要加一天
}
$total = $total + $thisDay["mday"]-1; //加当月的天数
$flag = 0; //判断跳出循环的条件
$j = 0;
while ($j <= 120) { // 用农历的天数累加来判断是否超过阳历的天数
  $i = 1;
  while ($i <= 13) {
   $mtotal += $everymonth[$j][$i];
   if ($mtotal >= $total) {
    $flag = 1;
    break;
   }
   $i++;
  }
  if ($flag == 1) break;
   $j++;
  }
  if ($everymonth[$j][0] <> 0 && $everymonth[$j][0] < $i) {
   //对闰月修补
   $mm = $i-1;
  } else {
   $mm = $i;
  }
  if ($i == $everymonth[$j][0] + 1 && $everymonth[$j][0] <> 0) {
   $nlmon = $mmonth[0] . $mmonth[$mm]; #闰月
   $numMonth = $mm;//输出农历数字格式月份
  } else {
   $nlmon = $mmonth[$mm] . $mmonth[13];
   $numMonth = $mm;
  }
// 计算所求月份1号的农历日期
$md = $everymonth[$j][$i] - ($mtotal - $total);
if ($md > $everymonth[$j][$i]) {
  $md -= $everymonth[$j][$i];
}
$nlday = $mday[$md];
$numDay = $md;//输出农历数字格式日期
$nowday = date("Y年n月j日 ", $postDate) . $weekday[$cur_wday]."
  ".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年".$nlmon.$nlday;
$lunarCalendar = array('year'=>$year,
  'yearname'=>$mten[$everymonth[$j][14]] . $mtwelve[$everymonth[$j][15]] . "年",
  'displaymonth'=>$nlmon,
  'displayday'=>$nlday,
  'displayweek'=>$weekday[$cur_wday],
  'month'=>$numMonth,
  'day'=>$numDay);
//return $lunarCalendar;
  return $lunarCalendar['displaymonth'].$lunarCalendar['displayday'];//直接返回如五月初五这种格式的字符串
}

修改后的calendar-datebox.tpl.php文件,最后一行为加入农历日期

<div class="<?php print $granularity ?> <?php print $class; ?>"> <?php print $link; ?> </div>
<div><?php print $lunchday; ?> </div>