hallo,
ich habe da mal eine frage, das forum habe ich schon durchsucht, bin aber nicht wirklich weiter gekommen.
mein anliegen ist folgendes, ich habe ein "presse" bereich, in dem liegen artikel aus diesem jahr. nach aublauf der gültigkeit,z.b. der 31.12.2007, sollen diese artikel in eine bestimmte kategorie verschoben werden. also alle artikel aus dem jahr 2007 sollen nach ablauf der zeitscheibe, 31.12.2007, in die kategorie archiv->presse->2007 verschobenwerden. das ganze soll natürlich automatisch laufen.
ich habe im forum ein beitrag gefunden der eine methode vorstellt, movearticle() (oder so), weiss aber nicht wie und wo ich einbinden kann.
kann mir jemand mit diesem problem helfen?
grüße
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
-
- Beiträge: 3
- Registriert: 23. Nov 2007, 11:15
Was Du suchst ist die Funktion rex_moveArticle aus functions_rex_generate.inc.php
Allerdings ist damit alleine nur mit Vorarbeit (sprich Anlegen) aller möglichen Zielarchive was anzufangen, also nicht wirklich automatisch.
Eine theo. Funktion dazu könnte wie unten angegeben aussehen.
Theo. deswegen, weil diese Funktionen nicht vorhandene oder nicht implementierte Funktionen zur Verarbeitung verwendet. Diese müsstest Du daher selber implementieren.
Im einzelnen sind dies:
1. rex_CopyCategory (ist vorhanden aber lediglich ein Dummy, daher ohne Funktion)
2. rex_renameCategory (nicht vorhanden)
3. rex_deleteCategory (nicht vorhanden)
4. rex_setArticleTemplateId (nicht vorhanden, der entsprechene Part könnte auch entfallen wenn die Funktionalität nicht benötigt wird).
Eine mögliche Implementierung:
Verwendung in einem Template:
list($redirect, $errorCode) = archiveCheckIn($this, 100, 200, 10);
----FEHLERBEHANDLUNG---
if(!$redirect) {
----TEMPLATE--- wie gehabt
} else
----NICHTS WEITER ANZEIGEN, DA UMGELEITET
100 wäre bsp. die Id der Oberkategorie des Archiv (bei dir archiv->presse)
200 wäre bsp. die Id einer Vorlage für ein neues Jahresarchiv
10 wäre bsp. die TemplateId die der archivierte Artikel benutzen soll (optional). Mit negativer Angabe würde basierend auf der Sprachid ein entsprechendes (10...) für die jeweilige Sprache Template verwendet.
Daher TemplateId = 10 Vorlage Template für Sprache mit Id = 0,
11 Vorlage Template für Sprache mit Id = 1, etc..pp
Allerdings ist damit alleine nur mit Vorarbeit (sprich Anlegen) aller möglichen Zielarchive was anzufangen, also nicht wirklich automatisch.
Eine theo. Funktion dazu könnte wie unten angegeben aussehen.
Theo. deswegen, weil diese Funktionen nicht vorhandene oder nicht implementierte Funktionen zur Verarbeitung verwendet. Diese müsstest Du daher selber implementieren.
Im einzelnen sind dies:
1. rex_CopyCategory (ist vorhanden aber lediglich ein Dummy, daher ohne Funktion)
2. rex_renameCategory (nicht vorhanden)
3. rex_deleteCategory (nicht vorhanden)
4. rex_setArticleTemplateId (nicht vorhanden, der entsprechene Part könnte auch entfallen wenn die Funktionalität nicht benötigt wird).
Eine mögliche Implementierung:
Code: Alles auswählen
/**
* Artikel archivieren "on the fly"
*
* @param rex_article $article
* @param integer $arcCatId Id der Archiv-Kategorie
* @param integer $arcCatYearTplId Id der Vorlage für ein Jahresarchiv
* @param integer $arcArtTplId Id des Templates des archivierten Artikels
* @return array (boolean,integer) umleitung ins archiv,fehlercode
*/
function archiveCheckIn($article, $arcCatId, $arcCatYearTplId, $arcArtTplId=0)
{
global $REX;
// Datum des Artikels im aktuellen Jahr?
$today = getdate();
$artDate = getdate($article->getValue('createdate'));
if($today['year'] == $artDate['year'])
// Ja, keine weiteren Aktionen. Artikel anzeigen.
return array(FALSE, 0);
// Artikel bereits archiviert?
$artPath = explode('|', $article->getValue('path'));
if(in_array($arcCatId, $artPath))
// Ja, keine weiteren aktionen. Artikel anzeigen.
return array(FALSE, 0);
// Nein, Artikel verschieben
$arcYear = (string)$artDate['year'];
$clang = $REX['CUR_CLANG'];
$artId = $article->getValue('article_id');
$artCatId = $article->getValue('category_id');
$arcChilds = OOCategory::getChildrenById($arcCatId, FALSE, $clang);
$yearCatId = 0;
// Zum Jahr passende Archiv-Kategorie suchen
foreach($arcChilds as $arcCat)
if($arcCat->getName() == $arcYear) {
// Passende Kategorie gefunden
$yearCatId = $arcCat->getId();
break;
}
// Jahreskategorie vorhanden?
if($yearCatId == 0) {
// Nein, erstellen aus Vorlage!
// Archiv - arcCatId überhaupt gültig?
$result = OOCategory::getCategoryById($arcCatId, $clang);
if($result === NULL)
// Nein, abbrechen!
return array(FALSE, 1);
// Ja, Kategorienvorlage ins Archiv kopieren
$yearCatId = rex_copyCategory($arcCatYearTplId, $arcCatId);
if($yearCatId === FALSE)
// Kopieren hat nicht funktioniert, abbrechen!
return array(FALSE, 2);
// Kopierte Kategorie in Jahreszahl umbenennen (-1 = alle Sprachen)
$result = rex_renameCategory($yearCatId, $arcYear, -1);
if(!$result) {
// Umbenennen hat nicht funktioniert!
// Kategory wieder entfernen und abbrechen.
$result = rex_deleteCategory($yearCatId);
return array(FALSE, 3 + $result? 0 : 1);
}
}
// Artikel verschieben
$result = rex_moveArticle($artId, $artCatId, $yearCatId);
if($result === FALSE)
// Hat nicht funktioniert, abbrechen!
return array(FALSE, 5);
// Umleitung auf den Artikel im Archiv in den Header schreiben
rex_redirect($artId, $clang);
// Template des Artikels wenn archiviert ändern?
if($arcArtTplId) {
// Ja, neue TemplateId zuweisen
// ggf. sprachspez. Templates wenn negativ!?
list($arcArtTplId, $arcArtTplLng) = ($arcArtTplId < 0)
? array(abs($arcArtTplId) + $clang, $clang)
: array($arcArtTplId, -1);
$result = rex_setArticleTemplateId($artId, $arcArtTplId, $arcArtTplLng);
if(!$result)
// Hat nicht funktioniert, trotzdem umleitung signalisieren
// aber Fehlercode setzen.
return array(TRUE, 6);
}
// Alles Ok, umleitung signalisieren
return array(TRUE, 0);
}
list($redirect, $errorCode) = archiveCheckIn($this, 100, 200, 10);
----FEHLERBEHANDLUNG---
if(!$redirect) {
----TEMPLATE--- wie gehabt
} else
----NICHTS WEITER ANZEIGEN, DA UMGELEITET
100 wäre bsp. die Id der Oberkategorie des Archiv (bei dir archiv->presse)
200 wäre bsp. die Id einer Vorlage für ein neues Jahresarchiv
10 wäre bsp. die TemplateId die der archivierte Artikel benutzen soll (optional). Mit negativer Angabe würde basierend auf der Sprachid ein entsprechendes (10...) für die jeweilige Sprache Template verwendet.
Daher TemplateId = 10 Vorlage Template für Sprache mit Id = 0,
11 Vorlage Template für Sprache mit Id = 1, etc..pp
-
- Beiträge: 136
- Registriert: 6. Jul 2007, 12:14
- Wohnort: Friedrichsdorf
- Kontaktdaten: Website Facebook
Hat sich in dieser Hinsicht etwas getan? Hat das funktioniert?
Ich benötige ebenfalls eine Art Archivierungstool. Am besten so, dass immer nur die 10 aktuellsten Artikel in der Übersicht dargestellt werden, und alles, was nach dem 10. Artikel kommt wird archiviert.
Hat da jemand nen Tip?
Danke!
lg
aemilia
Ich benötige ebenfalls eine Art Archivierungstool. Am besten so, dass immer nur die 10 aktuellsten Artikel in der Übersicht dargestellt werden, und alles, was nach dem 10. Artikel kommt wird archiviert.
Hat da jemand nen Tip?
Danke!
lg
aemilia
-
- Beiträge: 136
- Registriert: 6. Jul 2007, 12:14
- Wohnort: Friedrichsdorf
- Kontaktdaten: Website Facebook
Hallo Niki,
ich habe es jetzt so gelöst:
Startartikel: Hier habe ich ein Teasermodul eingebaut, welches immer die letzten 10 Artikel der Kategorie anzeigt.
Archiv: Das Archiv ist ein offline-gestellter Unterartikel im gleichen Verzeichnis, in dem auch der Startartikel liegt. hier habe ich auch das Teasermodul eingebaut, welches aber alle Artikel aus der Kategorie anteasert.
So funktioniert es sehr gut. Das Archiv habe ich dann einfach über die ID des Archiv-Artikels im Startartikel verlinkt. fertig.
Beispiel: www.stefanwinter.com --> Arbeiten oder --> freie Arbeiten
einmal anlegen, aber aktualisiert sich selbst.
Hoffe, dies hilft dir auch weiter?
lg aemilia
ich habe es jetzt so gelöst:
Startartikel: Hier habe ich ein Teasermodul eingebaut, welches immer die letzten 10 Artikel der Kategorie anzeigt.
Archiv: Das Archiv ist ein offline-gestellter Unterartikel im gleichen Verzeichnis, in dem auch der Startartikel liegt. hier habe ich auch das Teasermodul eingebaut, welches aber alle Artikel aus der Kategorie anteasert.
So funktioniert es sehr gut. Das Archiv habe ich dann einfach über die ID des Archiv-Artikels im Startartikel verlinkt. fertig.
Beispiel: www.stefanwinter.com --> Arbeiten oder --> freie Arbeiten
einmal anlegen, aber aktualisiert sich selbst.
Hoffe, dies hilft dir auch weiter?
lg aemilia
Artikel archivieren "on the fly"
Artikel archivieren "on the fly" sieht schon mal ganz gut aus.
Hat das zufällig schon mal jemand für das Cronjob-Addon angepasst, so das die Archivierung nicht "on the fly" sondern nur einmal täglich durchgeführt wird?
Hat das zufällig schon mal jemand für das Cronjob-Addon angepasst, so das die Archivierung nicht "on the fly" sondern nur einmal täglich durchgeführt wird?
<?php print $Footer; ?>
Sven
Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!
REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung
Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)
Sven
Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!
REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung
Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)