Si vous jetez un oeil à la source pour le contrôleur d'administration de ce module, vous pouvez voir le code qu'ils utilisent pour effectuer une masse supprimer
#File: app/code/local/Mage/Imaclean/controllers/Adminhtml/ImacleanController.php
public function massDeleteAction() {
$imacleanIds = $this->getRequest()->getParam('imaclean');
if(!is_array($imacleanIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
} else {
try {
$model = Mage::getModel('imaclean/imaclean');
foreach ($imacleanIds as $imacleanId) {
$model->load($imacleanId);
unlink('media/catalog/product'. $model->getFilename());
$model->setId($imacleanId)->delete();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were successfully deleted', count($imacleanIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
Ainsi, cette action du contrôleur accepte un certain nombre des ID de modèle "imaclean/imaclean", utilise ces identifiants pour effectuer une suppression. Ainsi, le code clé dans cette action est
$imacleanIds = $this->getRequest()->getParam('imaclean');
$model = Mage::getModel('imaclean/imaclean');
foreach ($imacleanIds as $imacleanId) {
$model->load($imacleanId);
unlink('media/catalog/product'. $model->getFilename());
$model->setId($imacleanId)->delete();
}
Ainsi, vous pouvez répliquer le code ci-dessus dans une version autonome avec quelque chose comme
//itterates through all 'imaclean/imaclean' models in the database
$models = Mage::getModel('imaclean/imaclean')->getCollection();
foreach ($models as $model) {
unlink('media/catalog/product'. $model->getFilename());
$model->setId($model->getId())->delete();
}
Enfin, il ressemble à un « imaclean/imaclean "Les modèles sont utilisés pour suivre quelles images ne sont plus nécessaires. Il semble que le module les crée (c'est-à-dire exécute une vérification des images inutilisées), dans la nouvelle action avec la méthode compareList
de l'assistant par défaut.
public function newAction(){
Mage::helper('imaclean')->compareList();
$this->_redirect('*/*/');
}
Ainsi, nous pouvons ajouter que le début de notre script, ainsi que l'initialisation de Magento de facto, ce qui devrait nous donner ce que nous avons besoin.
#File: cleanup.php
require_once "app/Mage.php";
$app = Mage::app("default");
Mage::helper('imaclean')->compareList();
$models = Mage::getModel('imaclean/imaclean')->getCollection();
foreach ($models as $model) {
unlink('media/catalog/product'. $model->getFilename());
$model->setId($model->getId())->delete();
}
Cela devrait au moins vous aider à démarrer. Bonne chance!
Je ne veux pas utiliser un module pour cela car trop de modules confondent l'admin. Je n'ai pas besoin d'une autre table db pour effacer les vieilles images. Je vais essayer de prendre seulement le code dont j'ai besoin du module et afficher le résultat. Merci – pablo
Avez-vous déjà trouvé une solution? – styks
@Alan Storm si nous utilisons ci-dessus cleanup.php. est-ce que cela affecte notre autre image? ou seulement supprimer ces images qui existent mais son produit supprimé? – MageDev