web-dev-qa-db-ja.com

ビューで使用する単純な日付フォーマッターを作成する

Views Data Exportを使用して、My Title 2012-05-12 22:33:00のようなカスタムRSSフィードを作成しています。

開始日は、日付モジュールによって提供される日付フィールドです。

2番目のフィールドで日付のフォーマットを実現するには、タグのテーマ設定を回避するために、Dateモジュールのプレーンフォーマッターを使用する必要があります。残念ながらプレーンなフォーマットでは、タイムゾーンの設定を無視して、DBに保存されている生の日付を提供します。

これに取り組むために、カスタムフィールドフォーマッタモジュールを作成しました。

/**
* Implements hook_field_formatter_info().
*/
function rss_date_formatter_field_formatter_info() {
    return array(
        'rss' => array(
          'label' => t('RSS'),
          'description' => t('Displays a date as rss.'),
          'field types' => array('date', 'datestamp', 'datetime'),
    ),  );
}


/**
 * Implements hook_field_formatter_view().
 */
function rss_date_formatter_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
    $element = array();
    $settings = $display['settings'];
    $formatter = $display['type'];
    foreach ($items as $delta => $item) {
        $element[$delta] = array('#markup' => $item['value']);
    }
    return $element;
}

問題は、ローカル要素を返すように$ elementを設定できない場合でもです。 $ item ['value']は、DBに格納されている(したがってUTC)日付の文字列を含みます。それを日付に変換してから戻すと、何も出力されないようです。また、そこに文字列をハードコーディングすると、文字列が変更されたように見えますが、これが発生する関数を見つけることができません(たとえば、#markupに「test」と入力すると、最初の文字を有効な月(1 -12)。

これに関する手がかりはありますか?テーマなしで現地時間で日付を出力するのがそれほど難しいとは思いもしませんでした。

4
masimplo

あなたがすべき:

  1. 新しい日付形式を作成します:/ admin/config/regional/date-time/formats
  2. 作成したばかりの形式を使用する新しい日付タイプを作成します:admin/config/regional/date-time
  3. ビューでその日付タイプを使用します。
1
ipwa