Pregunta

Esta no es la pregunta más constructiva para el desarrollo de Magento. Pero este es ciertamente uno que me mantiene aturdido ...

En la cuadrícula de pedidos de Magento en el respaldo vemos que un pedido ocupa múltiples líneas de espacio. 3 en lugar de 1 [en la columna comprada de (tienda)]. Esto se debe a que tenemos una múltiplo. El Resukt es que vemos 1/3 del número normal de pedidos en la pantalla 1. No hay Biggie, pero algo que quiero cambiar.

Mi pregunta: ¿Cómo puedo cambiar el texto en la columna comprado en (tienda)? Me gustaría que fuera Nombre de la vista de la tienda o dominio de la tienda. Y tal vez en Mouseover se muestra un título que muestra toda la secuencia. Ejemplo a continuación.

Estoy mirando /app/code/core/mage/adminhtml/block/sales/order/grid.php pero no sé cómo ir desde allí y realmente cambiar esto.

@Mage/eBay: también creo que esto debería ser algo para configurar/desactivar en configuración para futuras versiones.

enter image description here

¿Fue útil?

Solución 2

Establezco store_view en falso en archivo /app/code/core/mage/adminhtml/block/sales/order/grid.php

Sería genial si uno pudiera configurar esto a través de la configuración en backend

    if (!Mage::app()->isSingleStoreMode()) {
        $this->addColumn('store_id', array(
            'header'    => Mage::helper('sales')->__('Purchased From (Store)'),
            'index'     => 'store_id',
            'type'      => 'store',
            'store_view'=> false,
            'display_deleted' => true,
        ));
    }

y editar /app/code/core/mage/adminhtml/block/widget/grid/column/renderer/store.php

función de la función

/**        foreach ($data as $website) {
            $out .= $website['label'] . '<br/>';
            foreach ($website['children'] as $group) {
                $out .= str_repeat('&nbsp;', 3) . $group['label'] . '<br/>';
                foreach ($group['children'] as $store) {
                    $out .= str_repeat('&nbsp;', 6) . $store['label'] . '<br/>';
                }
            }
        }
**/

NUEVA LÍNEA:

foreach ($data as $website) { $out .= $website['label'];}

Y mientras cambió el ancho de la columna de fecha $ this-> addColumn ('creating_at'

  • Nuestro dateFormat no es AM/PM y establecido en 24hr en config-> catálogo
  • ¿Y por qué esta cadena de fecha sería más larga que el ancho de la columna?

Otros consejos

Estás en el lugar correcto para comienzo Su investigación en app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php. Un vistazo a _prepareColumns() Indica el renderizador para esa columna:

protected function _prepareColumns()
{
    //snip...

    if (!Mage::app()->isSingleStoreMode()) {
        $this->addColumn('store_id', array(
            'header'    => Mage::helper('sales')->__('Purchased From (Store)'),
            'index'     => 'store_id',
            'type'      => 'store',
            'store_view'=> true,
            'display_deleted' => true,
        ));
    }

    //snip...
}

los type resultará en que esta columna sea prestada por el Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Store::render() método:

public function render(Varien_Object $row)
{
    $out = '';
    $skipAllStoresLabel = $this->_getShowAllStoresLabelFlag();
    $skipEmptyStoresLabel = $this->_getShowEmptyStoresLabelFlag();
    $origStores = $row->getData($this->getColumn()->getIndex());

    if (is_null($origStores) && $row->getStoreName()) {
        $scopes = array();
        foreach (explode("\n", $row->getStoreName()) as $k => $label) {
            $scopes[] = str_repeat('&nbsp;', $k * 3) . $label;
        }
        $out .= implode('<br/>', $scopes) . $this->__(' [deleted]');
        return $out;
    }

    if (empty($origStores) && !$skipEmptyStoresLabel) {
        return '';
    }
    if (!is_array($origStores)) {
        $origStores = array($origStores);
    }

    if (empty($origStores)) {
        return '';
    }
    elseif (in_array(0, $origStores) && count($origStores) == 1 && !$skipAllStoresLabel) {
        return Mage::helper('adminhtml')->__('All Store Views');
    }

    $data = $this->_getStoreModel()->getStoresStructure(false, $origStores);

    foreach ($data as $website) {
        $out .= $website['label'] . '<br/>';
        foreach ($website['children'] as $group) {
            $out .= str_repeat('&nbsp;', 3) . $group['label'] . '<br/>';
            foreach ($group['children'] as $store) {
                $out .= str_repeat('&nbsp;', 6) . $store['label'] . '<br/>';
            }
        }
    }

    return $out;
}

¡Qué método tan terrible! A lo sumo, las clases de bloque deben manejar la lógica de la vista y preparar los datos para la representación en un contexto de plantilla. Aquí vemos una mezcla inflexible de lógica y marcado. Por lo tanto, tiene dos opciones para personalizar esto:

  1. Reescribe este método con la salida marcada como quieras, o
  2. Reescribe la clase de cuadrícula para cambiar el tipo de renderizador que se usa.

Cualquiera de los casos podría estar justificado. La opción #1 es la más directa, pero Es probable que afecte otras vistas que usan este mismo renderizado. Si eso es lo que quieres universalmente, hazlo. Para este último declararía un grupo de clase de bloque de módulos personalizado, reescribiría la clase de red de pedidos de ventas y señalaría su renderizador personalizado en el type parámetro.

No estás solo al pedir que eBay/Magento haga esto más flexible. Hay un proyecto de hackathon que hizo que las cuadrículas sean configurables en XML, y Magento 2 tiene esto como una característica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top