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/wp-content/uploads/2018/12/tools-tipps_dummy.pnghttps://blog.silversolutions.de/wp-content/uploads/2018/12/tools-tipps_dummy-150x150.pngDavid HohlB2B.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...Die e-Commerce B2B Experten bloggen über Händler-Shops, ERP, PIM und das integrierte CMS eZ Publish