2

最近の Magento のアップグレードとその後の修正からここで学んだ知識を使用して、私の最大の UI の不満の 1 つである date を助けてください。それは愚かです:

ここに画像の説明を入力

コア ファイルをハッキングして、app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php「100px」を「165px」に変更しました。これにより、日付が折り返されなくなります。日付を「M n, Y g:i:s A」から、Gmail が今日の場合は「g:i:s a」を使用し、今日でない場合は「M n, ga」を使用するような日付に変更したいと思っています。表示される日付の年が現在の年でない場合は、年を追加します。

Overriding Magento Admin Controller, for Beginnersを見ましたが、コア ファイルで上書きするのに十分かもしれませんが_prepareColumns()、その日付を変更する方法を知りたいです! ところで、インストール全体を grep しましたが、その日付形式文字列の一部が表示されません。


更新:日付文字列形式が設定されてlib/Zend/Locale/Data/root.xmlおり、ファイルが空の en_us 以外のロケールの場合は上書きされる可能性があることがわかりました。RSの回答の最初の部分を詳しく説明すると、日付の「形式」はphpdate()スタイルではありません。これを試してみたところ、非常に奇妙な結果が得られました。Locale XML ファイルを熟読して、いくつかの実験を行いました。

    $this->addColumn('created_at', array(
        'header' => Mage::helper('sales')->__('Purchased On'),
        'index' => 'created_at',
        'type' => 'datetime',
        'format' => 'MMM d, h:mm a',  // Feb 18, 1:57 PM
        //'format' => Mage::app()->getLocale()->getDateTimeFormat(Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM), 
        //'format' => 'MMM d, y G',
        'width' => '165px', // CKCK: edited to fix date field width was 100px
    ));

ブロック レンダラーをオーバーライドするカスタム モジュールの作成に取り組んでいます。示されている RS のコードのパート 2 は機能していませんが、彼のリンクからレシピが得られます。結果はまた更新します。


更新: Adminhtml ブロッ​​クの販売注文グリッド ( ) を上書き しようとしました (そして失敗しabsogました)。別のモジュール EM_DeleteOrder が既にオーバーライドしていabsogました。オーバーライドしない代替モジュールを検索したabsogところ、セールス グリッドに関して大きな力を持つ拡張機能が見つかりました: MageWorx Enhanced Orders。だから私はそれをインストールし、私が望む日付形式のソースをハッキングしています! 私は満足して完了しました。この質問に対する更新はもうありません。

4

1 に答える 1

2

試す

$this->addColumn('created_at', array(
     'header' => Mage::helper('sales')->__('Purchased On'),
     'index' => 'created_at',
     'type' => 'datetime', 
     'format'    => 'MMM d, h:mm a',
     'width' => '165px',
));

使用することもできますrenderer

$this->addColumn('created_at', array(
     'header' => Mage::helper('sales')->__('Purchased On'),
     'index' => 'created_at',
      //'type' => 'datetime', //remove
      'renderer' = new MageIgniter_FormatDate_Block_Adminhtml_Renderer_Data()
      'width' => '165px',
));

次に、作成します

class MageIgniter_FormatDate_Block_Adminhtml_Renderer_Data extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Action
{
  public function render(Varien_Object $row)
   {
     return $this->_getValue($row);
   }

   public function _getValue(Varien_Object $row)
   {
     $val = $row->getData($this->getColumn()->getIndex());  // row value
     // need to format $val

     return $val;

   } 
}

見る

于 2013-02-16T17:19:31.250 に答える