Alle Artikel einer Klasse löschen
Jetzt habe ich eben ein nettes Script gebaut, mit dem man schnell alle Artikel einer Klasse löschen kann.
eZ Publish bietet da leider von Haus aus keine Funktion an. Naja, man könnte es umgehen, indem man die Klasse selbst ohne Artikel exportiert, dann die Klasse löscht und wieder importiert. Das ist natürlich extrem umständlich.
Abhilfe schafft dies kleine Script:
require 'autoload.php'; $cli = eZCLI::instance(); $script = eZScript::instance( array( 'description' => ( "\n" . "This script will make a remove of a content object subtrees.\n" ), 'use-session' => false, 'use-modules' => true, 'use-extensions' => true ) ); $script->startup(); $scriptOptions = $script->getOptions( "[class-id:]", "", array( 'class-id' => "Class-Id", ), false ); $script->initialize(); $classID = $scriptOptions[ 'class-id' ]; $ini = eZINI::instance(); // Get user's ID who can remove subtrees. (Admin by default with userID = 14) $userCreatorID = $ini->variable( "UserSettings", "UserCreatorID" ); $user = eZUser::fetch( $userCreatorID ); if ( !$user ) { $cli->error( "Subtree remove Error!\nCannot get user object by userID = '$userCreatorID'.\n (See site.ini[UserSettings].UserCreatorID)" ); $script->shutdown( 1 ); } if ( !$classID ) { $cli->error( "No ClassId selected" ); $script->shutdown( 1 ); } eZUser::setCurrentlyLoggedInUser( $user, $userCreatorID ); // Remove all objects $contentObjects = eZContentObject::fetchSameClassList( $classID ); foreach ( $contentObjects as $contentObject ) { eZContentObjectOperations::remove( $contentObject->attribute( 'id' ) ); } $cli->output( "Done." ); $script->shutdown();
Die Datei ruft man dann über die Shell auf:
cd deinprojekt; php bin/php/ezremovenodes.php -s ger --class-id=2222
Aber bitte vorher immer schön ein Datenbank-Backup durchführen 🙂
https://blog.silversolutions.de/2011/07/b2b-technologie/alle-artikel-einer-klasse-loschen/https://blog.silversolutions.de/wp-content/uploads/2018/12/tools-tipps_dummy.pnghttps://blog.silversolutions.de/wp-content/uploads/2018/12/tools-tipps_dummy-150x150.pngB2B.technologiePHP,ToolsJetzt habe ich eben ein nettes Script gebaut, mit dem man schnell alle Artikel einer Klasse löschen kann. eZ Publish bietet da leider von Haus aus keine Funktion an. Naja, man könnte es umgehen, indem man die Klasse selbst ohne Artikel exportiert, dann die Klasse löscht und wieder importiert. Das ist...David HohlDavid Hohldho@silversolutions.deEditorDavid Hohl ist seit 1995 Entwickler und Projektleiter und bringt langjährige Erfahrung mit eZ Publish mit. Bei silver.solutions war David 2012 bis 2014 als Entwickler, Konzeptionen und Projektleiter für eZ Publish Projekte verantwortlich. Er hat das eZ-Publish-Blog ins Leben gerufen.silver.solutions