Startartikel mit Zeitsteuerung [4.8.15]

Gesperrt
blackalpha
Beiträge: 11
Registriert: Do 26. Mai 2011, 09:57
Kontaktdaten:

Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von blackalpha »

Hallo liebe Forengemeinde,

ich hatte heute das Problem, das ich Zeitsteuerung und Startartikel kombinieren musste.
Dabei bin ich auf diesen älteren Workaround gestoßen und habe ihn für die Version 4.8.15 kompatibel gemacht.
Gast hat geschrieben:Hallo Leute,

hab da eine Lösung gefunden, die allerdings bedeutet, dass man in die Contenido Dateien "reingreifen" muss. Man erhält dabei ein neues Hakerl für "Zum Startartikel machen" in der Zeitsteuerung - alles andere wie gehabt. In der Datenbank wird in Tabelle con_art_lang das Feld free_use_01 verwendet - daher bitte Vorsicht falls das schon benutzt wird.

Das ganze geht so (bei 4.4.4 getestet und bei 4.4.5 ähnlich):

Code: Alles auswählen

Geänderte Dateien:
contenido/includes/functions.con.php
contenido/includes/include.con_edit_form.php
contenido/templates/standard/template.con_edit_form.php
Ich hoffe ich konnte damit ein wenig helfen.

Viele Grüße
Dateianhänge
c4815-Zeitsteuerung-Startartikel.zip
(23.92 KiB) 149-mal heruntergeladen
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von derSteffen »

Hallo,

dass klingt gut. Kurze Frage, die Änderungen in den Dateien, sind diese erkenntlich (durch Kommentare oder ähnlichem). Habe das jetzt nicht gefunden und bei einem Update ist es immer ganz gut, wenn man weiß was man ändern müßte.

Vielen Dank

MfG Steffen
blackalpha
Beiträge: 11
Registriert: Do 26. Mai 2011, 09:57
Kontaktdaten:

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von blackalpha »

Hi,

Kommentare habe ich leider keine mit reingemacht.
Falls du die Dateien nicht eins zu eins kopieren möchtest, empfehle ich dir das Tool DiffDaff.
Damit kannst du zwei Dateien vergleich und er zeigt dir die Änderungen an.

Gruß
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von derSteffen »

Oaky, Danke!

Hast Du die Original Datei aus der 4.8.15 genommen und geändert?

Vielen Dank
blackalpha
Beiträge: 11
Registriert: Do 26. Mai 2011, 09:57
Kontaktdaten:

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von blackalpha »

Hey,

Ja ich habe die original Datei aus 4.8.15 genommen und dort die Änderungen eingefügt.
Wenn man selbst also keine Änderungen an den drei Dateien vorgenommen hat, kann man diese gefahrlos überschreiben.

Gruß
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von derSteffen »

Die Änderungen:

In der \contenido\templates\standard\template.con_edit_form.html
Nach dieser Zeile

Code: Alles auswählen

<tr><td valign="top"><input type="checkbox" id="time_online_move" name="time_online_move" value="1" {ONLINEAFTERMOVECHECKED}></td>
 <td colspan="2" class="text_medium"><label for="time_online_move">i18n("Make online after move")</label></td></tr>
das einfügen:

Code: Alles auswählen

<tr><td valign="top"><input type="checkbox" id="time_start_move" name="time_start_move" value="1" {STARTAFTERMOVECHECKED}></td>
 <td colspan="2" class="text_medium"><label for="free_use_01">i18n("Zum Startartikel machen")</label></td></tr>
In der \contenido\includes\functions.con.php
Nach

Code: Alles auswählen

global $time_online_move; // Used to indicate if the moved article should be online
das einfügen

Code: Alles auswählen

global $time_start_move; // make start article
nach

Code: Alles auswählen

 $onlineaftermove = ($time_online_move == '1') ? '1' : '0';
das einfügen

Code: Alles auswählen

$startaftermove = ($time_start_move == '1')? '1': '0';
wenn nicht schon vorhanden!!!

Code: Alles auswählen

 time_target_cat,
 time_online_move
ändern in

Code: Alles auswählen

 time_target_cat,
                        time_online_move,
						free_use_01

Code: Alles auswählen

 '".Contenido_Security::escapeDB($onlineaftermove, $db)."')";
ändern in

Code: Alles auswählen

'".Contenido_Security::escapeDB($onlineaftermove, $db)."',
    '".Contenido_Security::escapeDB($startaftermove, $db)."')";
Nach

Code: Alles auswählen

 global $time_online_move; // Used to indicate if the moved article should be online
das einfügen

Code: Alles auswählen

global $time_start_move;
Nach

Code: Alles auswählen

$onlineaftermove = ($time_online_move == '1') ? '1' : '0';
das einfügen

Code: Alles auswählen

 $startaftermove = ($time_start_move == '1' )? '1': '0';

Code: Alles auswählen

 time_online_move = '".Contenido_Security::toInteger($onlineaftermove)."'";
ändern in

Code: Alles auswählen

 time_online_move = '".Contenido_Security::toInteger($onlineaftermove)."',
free_use_01 = '".Contenido_Security::toInteger($startaftermove)."'";
Das

Code: Alles auswählen

 /* Set all articles which are in between of our start/endtime to online */

    $sql = "SELECT idartlang FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > datestart AND (NOW() < dateend OR dateend = '0000-00-00 00:00:00') AND " .

            "online = 0 AND timemgmt = 1"; 

    $db->query($sql);
 

    while ($db->next_record()) {

        // modified 2007-11-14: Set publish date if article goes online

        $sql = "UPDATE " . $cfg["tab"]["art_lang"] . " SET online = 1, published = datestart " .

                "WHERE idartlang = " . Contenido_Security::toInteger($db->f("idartlang"));

        $db2->query($sql);

    }
mit dem ersetzen

Code: Alles auswählen

/* Set all articles which are in between of our start/endtime to online */

    #$sql = "SELECT idartlang FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > datestart AND (NOW() < dateend OR dateend = '0000-00-00 00:00:00') AND " .

    # "online = 0 AND timemgmt = 1";

    $sql = "SELECT idartlang, idart, idlang, free_use_01 FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > datestart AND NOW() < dateend AND online = 0 AND timemgmt = 1";

    $db->query($sql);

 

 

 

    while ($db->next_record()) {

        // modified 2007-11-14: Set publish date if article goes online

        $sql = "UPDATE " . $cfg["tab"]["art_lang"] . " SET online = 1, published = datestart " .

                "WHERE idartlang = " . Contenido_Security::toInteger($db->f("idartlang"));

        $db2->query($sql);

 

 

    if ( $db->f('free_use_01')=='1' )

    {

        $sql = "SELECT DISTINCT idcat FROM {$cfg['tab']['cat_art']} WHERE idart=".$db->f('idart');

        $db2->query($sql);

        

        if ( $db2->next_record() )

        {

            $startidcat = $db2->f("idcat");

            $startidartlang = $db->f("idartlang");

            $lang = $db->f("idlang");

 

            if ($cfg["is_start_compatible"] == true)

            {

                $sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start ='0' WHERE idcat = $startidcat";

                $db2->query($sql);

 

                $sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start='1' WHERE idcat = $startidcat AND idart =".$db->f("idart")." LIMIT 1";

                $db2->query($sql);

            

            }

            else

            {

                $sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='$startidartlang' WHERE idcat='$startidcat' AND idlang='".$db->f("idlang")."'";

                $db2->query($sql);

            }

            

            // deactivate timemanagement if article is a start-article

            $sql = "UPDATE ".$cfg["tab"]["art_lang"]." SET timemgmt='0' WHERE idart='".$db->f("idart")."' AND idlang='".$db->f("idlang")."'";

            $db2->query($sql);

 

        } // $db2->next_record()

    }

    }
Das

Code: Alles auswählen

 /* Perform after-end updates */

    $sql = "SELECT idartlang, idart, time_move_cat, time_target_cat, time_online_move FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > dateend AND dateend != '0000-00-00 00:00:00' AND timemgmt = 1";
 
mit dem ersetzen

Code: Alles auswählen

/* Perform after-end updates */

    #$sql = "SELECT idartlang, idart, time_move_cat, time_target_cat, time_online_move FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > dateend AND dateend != '0000-00-00 00:00:00' AND timemgmt = 1";

    $sql = "SELECT idartlang, idart, time_move_cat, time_target_cat, time_online_move, free_use_01 FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > dateend AND dateend != '0000-00-00 00:00:00' AND timemgmt = 1";
 
In der \contenido\includes\include.con_edit_form.php

Code: Alles auswählen

$tmp_movetocat = $db->f("time_move_cat");
ändern in

Code: Alles auswählen

$tmp_movetocat = $db->f("time_move_cat");
            $tmp_startaftermove = $db->f("free_use_01");

Code: Alles auswählen

/* Summary */
ergänzen mit

Code: Alles auswählen

if ($tmp_startaftermove == "1")
	        {
        		$tpl->set('s', 'STARTAFTERMOVECHECKED', 'checked'.$allow_usetimemgmt);
        	} else {
        		$tpl->set('s', 'STARTAFTERMOVECHECKED', ''.$allow_usetimemgmt);
        	}
			
		/* Summary */
OHNE GEWÄHR! Da ich mitbekommen habe, dass das Programm DiffDaff auch Fehler macht!

MfG Steffen
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von Spider IT »

WinMerge ist vielleicht eine Alternative :)

Gruß
René
nurich
Beiträge: 29
Registriert: Di 1. Mär 2011, 14:56
Kontaktdaten:

Re: Startartikel mit Zeitsteuerung [4.8.15]

Beitrag von nurich »

Gast hat geschrieben:Geänderte Dateien:

Code: Alles auswählen

contenido/includes/functions.con.php
contenido/includes/include.con_edit_form.php
contenido/templates/standard/template.con_edit_form.php
Hallo, hat super funktioniert - vielen Dank!

Aber folgendes Beispiel mit einem Problemchen:
Es existieren 2 Artikel und unterscheiden sich nur mit einem Urlaubs-Hinweis.
Der Artikel ohne Urlaubs-Hinweis ist als Startartikel definiert.
Wenn aber in dem Zeitraum X der Artikel mit dem Urlaubs-Hinweis erscheinen soll, wird nach dem Endzeitpunkt der Artikel ohne Urlaubs-Hinweis nicht mehr als Startartikel gesetzt.
Wie könnte man das lösen?

VG
NurIch
Gesperrt