トップ «前の日記(2010年10月31日(Sun)) 最新 次の日記(2010年11月11日(Thu))» 編集 RSS feed

shinoのときどき日記


2010年11月02日(Tue)

drupal、Archiveモジュール(pixture版)のパッチ

ブロックカレンダーの日付の不具合修正

Archiveモジュールを改造する | PIXTURE STUDIOを入れてみたところ、Drupal 6.19、mysql 5.1.51、PHP 5.2.14の環境で次のような不具合があっため、パッチを書いた。

  • ブロックにカレンダーが表示されるページが年月日の属性を持たない(nodeではない。パネルやビューページ)の場合、当月が1970/01になる不具合
  • next-monthまたはprev-monthが存在しない場合、リンク先が1970/01になる不具合
--- /home/socodanet/local/downloads/archive/archive.module	2010-09-26 13:33:31.000000000 +0900
+++ /home/socodanet/www/socodanet/arg/modules/archive/archive.module	2010-11-02 21:47:53.000000000 +0900
@@ -107,8 +107,9 @@
  */
 function theme_archive_block_calendar($timestamp) {
 
-  if (!$timestamp) {
-    $timestamp = mktime();
+  $defaulttime = mktime(0,0,0,1,1,1970);
+  if ($timestamp==$defaulttime) {
+    $timestamp = _archive_get_current_post_date('all');
   }
   $the_date = explode(' ', format_date($timestamp, 'custom', 'F Y n t'));
   $title = $the_date[0] .' '. $the_date[1];
@@ -143,8 +144,8 @@
   $month_title = '';
 
   // add a link to the previous month
-  if (($oldest_year < $prev_year) || 
-        ($oldest_year == $prev_year && $oldest_month <= $prev_month)) {
+  if (($prev_year!='1970') || ($oldest_year < $prev_year) || 
+       ($oldest_year == $prev_year && $oldest_month <= $prev_month)) {
     $month_title .= '<span class="prev-month">';
     $month_title .= l('<', _archive_url('all', $prev_year, $prev_month), array('attributes' => array('title' => format_plural($num_prev_month, '1 post', '@count posts'))));
     $month_title .= '</span>';
@@ -166,8 +167,8 @@
   $month_title .= '</span>';
 
   // add a link to the next month
-  if (($next_year < $current_year) ||
-          ($next_year == $current_year && $next_month <= $current_month)) {
+  if (($next_year!='1970') || ($current_year <= $next_year ) ||
+          ($next_year == $current_year && $current_month < $next_month )) {
     $month_title .= " ";
     $month_title .= '<span class="next-month">';
     $month_title .= l('>', _archive_url('all', $next_year, $next_month), array('attributes' => array('title' => format_plural($num_next_month, '1 post', '@count posts'))));
@@ -582,6 +583,13 @@
   return $result;
 }
 
+function _archive_get_current_post_date($type) {
+  $final_types = _archive_types_sql_string($type);
+  $result = db_result(db_query(db_rewrite_sql('SELECT MAX(n.created) FROM {node} n WHERE n.status = 1 '. $final_types)));
+  return $result;
+}
+
+
 /**
  * Get the date of the closesr next post that is not in the specified month
  */

アーカイブページの日付表記の修正

コードに日本語を直接書き込むのはあまりお行儀がよくないです…。

--- /home/socodanet/local/downloads/archive/archive.pages.inc	2010-09-25 04:00:33.000000000 +0900
+++ ./archive.pages.inc	2010-11-02 23:09:55.000000000 +0900
@@ -229,13 +229,13 @@
   $title = t('Archive');
   $month_names = array('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
   if ($day) {
-    $title .= ' - '. t($month_names[$month]) .' '. $day .', '. $year;
+    $title .= ' - '. $year .'年 '. t($month_names[$month]) .' '. $day.'日';
   }
   else if ($month) {
-    $title .= ' - '. t($month_names[$month]) .' '. $year;
+    $title .= ' - '. $year .'年 '.t($month_names[$month]) ;
   }
   else if ($year) {
-    $title .= ' - '. $year;
+    $title .= ' - '. $year .'年';
   }
 
   if ($type != 'all') {
@@ -414,13 +414,13 @@
 function theme_archive_separator($date_created, $separators) {
   $date_sep = '';
   if ($separators['year'] && $separators['month'] && $separators['day']) {
-    $date_sep = format_date($date_created, 'custom', 'F jS, Y');
+    $date_sep = format_date($date_created, 'custom', 'Y年 n月 d日');
   }
   else if ($separators['month'] && $separators['day']) {
-    $date_sep = format_date($date_created, 'custom', 'F jS');
+    $date_sep = format_date($date_created, 'custom', 'n月 d日');
   }
   else if ($separators['day']) {
-    $date_sep = format_date($date_created, 'custom', 'F jS');
+    $date_sep = format_date($date_created, 'custom', 'n月 d日');
   }
 
   return '<h3>'. $date_sep .'</h3>';
Tags: drupal

トップ «前の日記(2010年10月31日(Sun)) 最新 次の日記(2010年11月11日(Thu))» 編集 RSS feed
2000|03|
2007|01|03|04|05|06|10|12|
2008|01|02|03|04|05|06|07|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|11|12|
2015|01|02|04|05|09|10|12|
2016|01|03|04|05|08|
2017|01|02|04|05|06|07|08|09|10|
2018|05|06|
2019|08|12|
2020|01|03|04|
2021|01|12|
2022|01|09|