2013-02-16 3 views
2

Знание, которое я узнал здесь, из моего недавнего обновления Magento и последующей фиксации, , пожалуйста, помогите мне с одним из моих самых больших UI-захватов: дата. Это глупо:Magento date text: откуда он исходит и как его изменить?

enter image description here

Я взломал файл ядра 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() в основном файле, но я бы очень хотел узнать, как изменить эту дату! BTW, я grepped всю установку, и никакая часть этой строки формата даты не появляется.


Update: обнаружил, что формат строки даты устанавливается в lib/Zend/Locale/Data/root.xml и может быть отменено, если локаль нечто иное, чем en_US, чей файл пуст. Чтобы изложить первую часть ответа Р.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 
    )); 

Работа над созданием пользовательского модуля, чтобы переопределить блок визуализации. Часть 2 кода R.S, как показано, не работает, но его ссылки дают мне рецепт. Обновится снова с результатами.


Update: Я пытался (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'. Благодаря! –

+0

Мне удалось внести изменения в основной файл (как я обновил выше), но я застрял, пытаясь создать модуль adminhtml. Проверьте http://stackoverflow.com/questions/14948525? Благодаря! –

Смежные вопросы