it-swarm.com.de

So aktualisieren Sie Massenartikel mit PHP-Skript ohne Änderung des Inhalts

Ich möchte einen Joomla-Artikel mit einem externen Skript bearbeiten/aktualisieren. Die Assets-Tabelle ist defekt und dafür habe ich den ACL-Manager verwendet, um sie zu beheben. Aber es gibt einige fehlende Assets, für die ich öffnen muss und re-save the articles ohne etwas zu verändern. No content modification Ich kann dies manuell tun, aber wenn die Daten sehr umfangreich sind, wäre es hektisch, jeden Artikel zu öffnen und erneut zu speichern.

Daher möchte ich ein PHP-Skript erstellen, mit dem ich die Artikel aktualisieren oder sie einfach so speichern kann, wie sie sind.

Jede Hilfe wäre dankbar.

1
Liz.

Ich habe das Problem der manuellen Aktualisierung mit dem folgenden Skript gelöst. In diesem Fall wollte ich nur die im ACL-Manager erwähnten Artikel zu fehlenden Assets aktualisieren. Es gab ungefähr 1000 solcher Artikel.

if (!defined('_JEXEC')) {
    define( '_JEXEC', 1 );
    define('JPATH_BASE', realpath(dirname(__FILE__)));
    require_once ( JPATH_BASE .'/includes/defines.php' );
    require_once ( JPATH_BASE .'/includes/framework.php' );
    defined('DS') or define('DS', DIRECTORY_SEPARATOR);
}

$app = JFactory::getApplication('site');
$db = JFactory::getDbo();


$basePath = JPATH_ADMINISTRATOR.'/components/com_content';
require_once $basePath.'/models/article.php';
$article_model =  JModelLegacy::getInstance('Article','ContentModel');

require_once JPATH_ADMINISTRATOR.'/components/com_aclmanager/models/diagnostic.php';
$acl_model =  JModelLegacy::getInstance('Diagnostic','AclmanagerModel');
$missingAssets = $acl_model->getMissingAssets();

/*
 * @missingAssets : returns array of issues present in asset table
 *
*/
foreach ($missingAssets as $key => $value) {
    //to check and update only articles. The array might contain type of category and module as well
    if($value->type == 'article'){
        $query = $db->getQuery(true);
        $query->select('*')->from('#__content')->where('id='.$value->id.'');
        $update_data = $db->setQuery($query)->loadAssoc();
        $article_model->save($update_data);
        echo '<p>article updated - '.$value->id.'</p>';
    }
}

Ich habe weitere Beschreibung in Github hinzugefügt. Man kann also auch darauf verweisen, wenn mehr Anleitung benötigt wird.

2
Liz.