2013-02-16 63 views
2

随着我从最近的Magento升级和随后的修复中学到的知识,请帮助我处理我最大的用户界面之一:日期。这是愚蠢的:Magento日期文本:它来自哪里,我如何更改它?

enter image description here

我砍死的核心文件app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php和改变“100px的”到“165像素”,防止日从包装。我真的很想将日期从'M n,Y g:i:s A'更改为Gmail如果今天使用'g:i:s a'或如果不是今天'M n,ga'。如果显示日期的年份不是当年,我会在年份中添加。

我看到了Overriding Magento Admin Controller, for Beginners,这可能足以让我在核心文件中覆盖_prepareColumns(),但我真的很想知道如何改变这个日期!顺便说一句,我grepped整个安装和日期格式字符串显示没有任何部分。


更新:发现日期字符串格式在lib/Zend/Locale/Data/root.xml设置,如果你的语言环境是东西比英语(美国),其文件是空的可能会被改写。为了说明R.S的答案的第一部分,日期“格式”不是php date()样式,我尝试了并得到了相当奇怪的结果。仔细查看语言环境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 
    )); 

正在开发一个自定义模块来覆盖块渲染器。所示的R.S代码的第2部分不起作用,但他的链接给了我一个配方。将再次更新结果。


更新: 我试过(and failed)覆盖Adminhtml块销售订单电网(absog)。另一个模块EM_DeleteOrder已经覆盖absog。我搜索了一个没有重写absog的替换模块,并找到了一个关于销售网格的强大扩展:MageWorx Enhanced Orders。所以我安装了这个软件,并且正在窃取他们的源码以获得我想要的日期格式!我很高兴和完成,没有更多的这个问题的更新。

回答

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; 

    } 
} 

+0

你确切的代码崩溃的销售订单电网,但是,你让我正确的道路上,所以明显'accepted'。谢谢! – 2013-02-19 00:12:21

+0

我能够对核心文件进行更改(正如我上面更新的那样),但是我试图制作adminhtml模块。请查看http://stackoverflow.com/questions/14948525?谢谢! – 2013-02-19 01:52:30

相关问题