凭借我从最近的Magento升级和随后的修复中学到的知识,请帮助我解决我最大的UI抱怨之一:日期。这是愚蠢的:
我攻击核心文件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()
,但我真的想知道如何更改该日期!顺便说一句,我对整个安装进行了深思熟虑,并没有显示该日期格式字符串的任何部分。
更新:发现日期字符串格式在lib/Zend/Locale/Data/root.xml
中设置,如果您的语言环境不是en_us,其文件为空,则可能会被覆盖。为了阐述R.S答案的第一部分,日期“格式”不是php date()
样式,我试过并得到了相当奇怪的结果。仔细阅读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
));
制作自定义模块以覆盖块渲染器。如图所示,R.S代码的第2部分不起作用,但是他的链接给了我一个配方。将再次更新结果。
更新
我尝试(and failed)覆盖Adminhtml块销售订单网格(absog
)。另一个模块EM_DeleteOrder已经覆盖了absog
。我搜索了一个未覆盖absog
的替换模块,并找到了一个与销售网格相关的强大扩展程序:MageWorx Enhanced Orders。所以我安装了它,并且正在攻击我想要的日期格式的源代码!我很开心,也没有更新这个问题。
答案 0 :(得分: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;
}
}
见