ログイン

ログイン

イベントカレンダ

サイトカレンダをスキップ

«
2010年 08月
»
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

-

テーマテスター

イベント

-


 掲示板目次 > サポート > 設定に関する情報 新規投稿 返信投稿
 投稿日時の年度の指定について
 
ひろろん
 2008年12月14日 04:55 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2007年3月22日
投稿数: 104
こんばんは。ひろろんです。

Quote by: kata


記事投稿時に「投稿日時と公開モード」の設定で投稿日時をセットできますが、年度指定のドロップダウンが私のところでは「2007~2013」に現在なっています。2007年以前の年度の指定または設定は可能でしょうか?



augeさんが答えておられますが、公開領域にある lib-common.php を直接編集してやることで可能です。
lib-common.phpの4904行目あたりにあるCOM_getYearFormOptions関数の宣言部分を修正することで指定可能です。

たとえば、2000年~2010年にしたい場合は次のようになります。
PHP Formatted Code

function COM_getYearFormOptions( $selected = '', $startoffset=-7, $endoffset=2 )
 

※startoffset の値からさらに -1 されますので、その点もご注意下さい。
(+/-での指定ですので今年を基準に計算される点にも、ご注意下さい。)


その他、見られた方がこんがらがらないように補足させていただきます。

Quote by: katoq


function COM_getYearFormOptions にある
for 構文を書き換えるのが適切かもしれません
(なんで 現在年−1 なのか? は ここにヒントがあります)

何年さかのぼるべしか、は ここを変更するのが よりベターかと

元の制作者は 「昨年の記事も書きたいかなぁ?、、、」で このfunctionを作成していますが、
可読性と汎用性を上げるなら、引数部分に -1 を入れるようにして、for区には $start_year を設定しておく方が素直にも思います(だって、何年さかのぼりたいか? は、サイト運用者の希望に依りますからねぇ。



Geeklog1.4.1系なら、augeさんがおっしゃるwikiにあるようにfor構文をいじりますが、Geeklog1.5系からはfor構文をいじらないで出来るようになっていますので、(よしあしは別として)いじるべきではないと思います。


for 構文の-1についてはおっしゃるとおり、startoffsetが指定されず関数が呼ばれた場合にデフォルトで -1 になるように startoffset のデフォルトを 0 から -1 に変えるように本家に提案しておきます。
本家採用前に使いたい方は以下のコードにて該当の関数部分を書き換えてください。
(本家の方がGeeklog1.4.1のコードをあまりいじらずにstartとendのoffsetを追加した感じがあります)

提案内容
PHP Formatted Code

function COM_getYearFormOptions( $selected = '', $startoffset=-1, $endoffset=5 )
{
    $year_options = '';
    $start_year = date ( 'Y' ) + $startoffset;
    $cur_year = date( 'Y' );
    $finish_year = $cur_year + $endoffset;

    if( !empty( $selected ))
    {
        if( $selected < $cur_year )
        {
            $start_year = $selected;
        }
    }

    for( $i = $start_year; $i <= $finish_year; $i++ )
    {
        $year_options .= '<option value="' . $i . '"';

        if( $i == $selected )
        {
            $year_options .= ' selected="selected"';
        }

        $year_options .= '>' . $i . '</option>';
    }

    return $year_options;
}
 


こうすればstartoffsetの指定がそのまま利用され年度指定の範囲の開始年に反映されます。

こちらを使って2000年~2010年にしたい場合は次のような指定になります。

PHP Formatted Code

function COM_getYearFormOptions( $selected = '', $startoffset=-8, $endoffset=2 )
 

※startoffsetが、今年-(マイナス)何年か。の値をそのまま指定できるようにいなってます。

wkyInstaller - 各種オープンソースの自動インストーラー Windows専用(.NET2.0以上)/フリーソフト(カンパウェア) http://hiroron.com/ ひろろん [PR]汎用CMS Geeklog でサイト構築/プラグイン制作 いたします
 
プロフィール メール ホームページ
引用して書き込む
ひろろん
 2008年12月14日 05:31 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2007年3月22日
投稿数: 104
Quote by: ひろろん


for 構文の-1についてはおっしゃるとおり、startoffsetが指定されず関数が呼ばれた場合にデフォルトで -1 になるように startoffset のデフォルトを 0 から -1 に変えるように本家に提案しておきます。
が、今年-(マイナス)何年か。の値をそのまま指定できるようにいなってます。



本家への提案を登録してきました。
http://project.geeklog.net/tracking/view.php?id=783

wkyInstaller - 各種オープンソースの自動インストーラー Windows専用(.NET2.0以上)/フリーソフト(カンパウェア) http://hiroron.com/ ひろろん [PR]汎用CMS Geeklog でサイト構築/プラグイン制作 いたします
 
プロフィール メール ホームページ
引用して書き込む
katoq
 2008年12月15日 00:24 JST  
掲示板 Full Member
Full Member

状態: オフライン


登録日: 2006年8月 3日
投稿数: 129
ひろろんさん ありがとうございました。

 元プログラマの端くれとして、気になったものの、なかなか積極的な関わりが持てなくて、申し訳ありません。
 startoffsetがfunction内部で-1されていて、endoffsetはそのまま というのは、いずれのときにか、誤りが入り込みやすいという点で、気になったので、追記しました。
 他意はありませんので augeさん googlecode の件ご指摘いただき 申し訳ありませんでした。

ネット素浪人
 
プロフィール メール ホームページ
引用して書き込む
augebang
 2008年12月15日 02:11 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2006年8月22日
投稿数: 123
ネット素浪人さん
畑違いのことに答えてるので「なぜなぜ君」になってしまってて
申し訳ないです。
今後同様に「なぜなぜ君」になることが多いと思いますが
よろしくお願いします。

スレ主さんにはわかってもらえたでしょうか・・・

たかが0.1%されど0.1% あきらめないで!
 
プロフィール メール ホームページ
引用して書き込む
Ivy
 2008年12月15日 02:15 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2004年1月 1日
投稿数: 4415
http://project.geeklog.net/tracking/changelog_page.php
ひろろんさんの提案がさっそく本体に取り込まれましたね。

 
プロフィール メール
引用して書き込む
内容生成: 0.41 秒
新規投稿 返信投稿


通常 通常
注目トピック 注目トピック
ロック済 ロック済
新着 新着
注目トピック 新着 注目トピック 新着
ロック済トピック 新着 ロック済トピック 新着
ゲストユーザの投稿を見る 
投稿可能 
すべてのHTMLを許可 
バッドワードをチェック