Artikel in Archiv verschieben

Autom. Verschieben von abgelaufenen Artikeln (End-Datum) in eine Archiv-Kategorie.

Ein Artikel wird nach Ablauf seines End-Datums autom. in eine vorher angelegte Archiv-Kategorie verschoben. Die Archiv-Kategorie sollte den Status [x] Archive haben, damit die verschobenen Artikel (mit dem Status [x] verfügbar nach Enddatum) hier angezeigt werden können, wenn gewünscht.
Die Quell-Kategorie (dort wo sich die Artikelliste befindet) kann den Status [x] Archive oder [ ] Archive annehmen, je nach Einstellung im Script (siehe unten).

Das Script arbeitet in dieser Form für eine Artikelliste in einer Kategorie und einer Archiv-Kategorie.


Die ID der Quell-Kategorie (dort wo sich die Artikelliste befindet) wird in $my_article_cat eingetragen. Die Ziel-oder Archiv-Kategorie (dort wo die Artikel nach Ablauf aufbewahrt werden) wird in $my_archive_cat eingetragen.

Ist in der Kategorie der Schalter [x] Archive gesetzt und ein Besucher steuert die Kategorie in der sich die Artikelliste befindet an, wird der gerade abgelaufene Artikel noch einmal angezeigt. Danach ist er verschoben. Das Script braucht das einmalige Ansteuern der Kategorie um aktiv zu werden.

Ist dieses Verhalten unerwünscht, muss in der Kategorie der Schalter [ ] Archive geöffnet werden. Dadurch erhöht sich die Scriptlaufzeit ein wenig, da die DB sofort angesprochen werden muss. Bei kleinen Seiten (Artikelanzahl < 300) ist das unkritisch.

Eine Navigation für abgelaufene Artikel im Archive ist hier verfügbar: Artikelmenü Archiv


Bedingung:

  • Quell-Kategorie muss im Artikel-Listenmodus arbeiten: Kategorie –> Anzahl an Top-Artikeln: > 1
  • Artikel in dieser Kategorie: Artikel Basisinformation bearbeiten –> [x](verfügbar nach Enddatum (archivieren))


Empfohlen:

  • Quellkategorie = Archiv [x] (Schnellere Abarbeitung)
  • Zielkategorie = Archiv [x]



rt_article_move_to_archive V1.0 26.07.09

Docu: –
Forum: –

Autor: K.Heermann (flip-flop) http://planmatrix.de
CMS Version: >= 1.3.x
Version: V1.0

Update

**27.12.09 KH**
$content['list_mode'] == true
changed to
$content['struct'][$content['cat_id']]['acat_topcount'] > 1

Tag: –

Dateiname: rt_article_move_to_archive.php

Verzeichnis: template/inc_script/frontend_render/

Bedingung:/config/phpwcms/conf.inc.php

  • $phpwcms['allow_ext_render'] = 1;



rt_article_move_to_archive

<?php
/* *****************************************************************************
 Autom. Verschieben von abgelaufenen Artikeln in eine Archivkategorie
 autom. move of expired article into a archive category
 
 26.07.09 V1.0 Knut Heermann (flip-flop) http://planmatrix.de
 
 27.12.09 Update KH:
 $content['listmode'] == true
 changed to
 $content['struct'][$content['cat_id']]['acat_topcount'] > 1
 
 Bedingung // Condition:
 - Quell-Kategorie muss im Artikel-Listenmodus arbeiten "Anzahl an Top-Artikeln > 1"
 - // Source category must be run in article list-mode "top article count > 1"
 - Artikel in dieser Kategorie "[x](verfuegbar nach Enddatum (archivieren))"
 - // Articles in this category "[x](available after end date (archive))"
 
 
 Empfohlen // Recommended:
 Quellkategorie // Source category = Archiv [x]  (Schnellere Abarbeitung // faster processing)
 Zielkategorie  // Target category = Archiv [x]
 
***************************************************************************** */
 
// -----------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); }
// -----------------------------------------------------------------------------
 
 
// USERINPUT ======================================================
 
// Kategorie-ID in der das Artikel-Listing laeuft   (Quelle)
// Category-ID where the article listing is running (source)
$my_article_cat = 4;
 
// ID der Archiv-Kategorie in die verschoben werden soll (Ziel)
// ID of the archive category (target)
$my_archive_cat = 70;
 
// USERINPUT END ==================================================
 
 
 
// Nur ausfuehren wenn der Listenmodus in der Kategorie eingeschaltet und die angegebene Kategorie aktiv ist
// Only run if list mode in category is true and the specified category is active
// if( $content['list_mode'] == true && $content['cat_id'] == $my_article_cat) {
 
// Update 27.12.09 KH:
// Nur ausfuehren wenn in der Kategorie "Anzahl an Top-Artikeln:" > 1  und die angegebene Kategorie aktiv ist
// Only run if in category "top article count:" > 1  and the specified category is active
if( ($content['struct'][$content['cat_id']]['acat_topcount'] > 1) && ($content['cat_id'] == $my_article_cat) ) {
 
 
    $article = array();
 
    // Kategorie-Schalter [x] Archive gesetzt? (fuer schnellere Abarbeitung)
    // Category switch [x] archive set?        (for faster prcessing)
 
    if ( $content['struct'][$content['cat_id']]['acat_archive'] == 1 ) {
 
       $my_time = time(); // for faster processing
 
 
    // Gibt es einen Artikel bei dem das Datum abgelaufen ist?
    // Is there an article with expired date?
 
       foreach($content['articles'] as $key => $value) {
 
         if ($content['articles'][$key]['article_killdate'] < $my_time ) {
            $article[] = $value['article_id'];
         }
       }
 
      // Kategorie-Schalter [ ] Archive offen ? - etwas langsamere Verarbeitung
      // Category switch [x] archive unset?  - slow down prcessing a little bit
    } else
      {
        $article[0] = 0;  // Fuer Aktivierung sql-Update // for activating sql-update
      }
 
 
   // Wenn mindestens ein Artikel vorhanden ist
   // If minimum one article exists
   if(count($article)) {
 
    $sql  = 'UPDATE '.DB_PREPEND.'phpwcms_article SET ';
    $sql .= "article_cid= ".$my_archive_cat." ";
    $sql .= "WHERE article_cid= ".$my_article_cat." AND article_archive_status=1 AND article_deleted=0 ";
    $sql .= " AND article_public=1 AND article_aktiv=1 AND article_end < NOW() ";
 
    $queryResult = _dbQuery($sql, 'UPDATE');
 
   }
}
 
?>


<note> Eine Version die mehrere Artikellisten-Kategorien und Archive abarbeitet, ist gegen eine Spenden oder das Verfassen oder Übersetzen von Artikel im wiki verfügbar.

….. Die IDs der Quell-Kategorien (dort wo sich die jeweilige Artikelliste befindet) werden in das Array $my_article_cat_id['source'] eingetragen. Die Ziel-oder Archiv-Kategorien (dort wo die Artikel nach Ablauf aufbewahrt werden) werden in $my_article_cat_id['archive'] eingetragen.

Die Eintragungen werden immer paarweise vorgenommen, zu jeder Quell-Kategorie ID gehört eine Ziel-Kategorie ID.

 $my_article_cat_id['source']  = array( 4, 71, 90, 230)  Artikel-Listing Kategorien
                                        |   |   |   |
 $my_article_cat_id['archive'] = array(70, 72, 95, 150)  Artikel-Archiv Kategorien 

….. Es kann eine bestimmbare Anzahl Jahre zum End-Datum hinzugerechnet und gespeichert werden, um im Archiv mit der Standardfunktion Artikelmenue navigieren zu können. Die aufzuaddierende Anzahl Jahre wird in die Variable $boost_year eingetragen.
Z.B. $boost_year = '10'; (für +10 Jahre: 2009-05-07 20:34:00 –> 2019-05-07 20:34:00) ….

</note>

deutsch/ersetzer_rts/frontend_render/artikel-verschieben-in-archiv.txt · Last modified: 2018/06/03 18:09 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0