Question

Nous avons hérité d'un stade de développement le site Magento, où beaucoup des blocs sur le frontend sont horriblement mal orthographié. Nous passer par chaque bloc et les modifier. Une chose que nous avons remarqué que ces lignes générées par:

app/code/core/Mage/Adminhtml/Block/Cms/Block/Grid.php

ne sont pas cliquables par href, mais plutôt par js ajax. Est-il possible de créer un lien href afin qu'ils puissent être ouverts dans le navigateur dans des onglets? Comme l'édition de chacun d'entre eux un à la fois et ne pas avoir la possibilité d'avoir plus d'un éditeur de bloc à la fois n'est pas très efficace du temps. Comment pourrais-je aller sur la création d'une colonne dans cette grille programatically pour créer un lien « Modifier » qui utilise un href pour $baseUrl dans la méthode _prepareColumns()? Je peux simplement copier ce fichier dans le pool de code local, je ne veux pas modifier le code de base, toute aide est grandement appréciée. S'il existe une méthode d'usine, je suis pas au courant de, google recherche n'a pas été fructueuse à cet égard.

Était-ce utile?

La solution

Pour ajouter un lien « modifier » à la grille des blocs statiques CMS, tout ce que vous auriez à faire est de prolonger ce bloc avec votre propre module et _prepareColumns rewrite. Mais, je l'ai déjà fait tout cela pour vous lors du test :)

Voir le code ci-dessous:

app / code / local / VotreEntreprise / YourModule / Bloc / Cms / Bloc / Grid.php

<?php

class YourCompany_YourModule_Block_Cms_Block_Grid extends Mage_Adminhtml_Block_Cms_Block_Grid
{
    protected function _prepareColumns()
    {
        parent::_prepareColumns();
        $this->addColumn('action',
            array(
                'header'    => Mage::helper('cms')->__('Action'),
                'width'     => '50px',
                'type'      => 'action',
                'getter'     => 'getId',
                'actions'   => array(
                    array(
                        'caption' => Mage::helper('cms')->__('View'),
                        'url'     => array('base'=>'*/*/edit'),
                        'field'   => 'block_id'
                        )
                    ),
                'filter'    => false,
                'sortable'  => false
            )
        );

    }
}

app / code / local / VotreEntreprise / YourModule / etc / config.xml :

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <cms_block_grid>YourCompany_YourModule_Block_Cms_Block_Grid</cms_block_grid>
                </rewrite>
            </adminhtml>
        </blocks>           
    </global>
</config>

app / etc / modules / YourCompany_YourModule.xml

<?xml version="1.0"?>
<config>
    <modules>
        <YourCompany_YourModule>
            <active>true</active>
            <codePool>local</codePool>
        </YourCompany_YourModule>
    </modules>
</config>

Ajoute un lien 'View', comme annoncé:

entrer image description ici

Autres conseils

Vous avez besoin de mettre cette méthode dans votre fichier Grid.php

public function getRowUrl($row) {
    return $this->getUrl('*/*/edit', array('id' => $row->getId()));
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top