[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Modul Last Pageupdate - REDAXO Forum
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/
Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

Modul Last Pageupdate

13. Aug 2008, 17:47

Ich verwende eine erweiterte Version vom Modul http://www.redaxo.de/165-Moduldetails.html?module_id=82.

Dies zeigt an, wann zum letzten Mal ein Artikel der gesamten Homepage geändert wurde.
Ich benötige für meine HP eine Funktion, die wahlweise die letzte Änderung der gesamten HP, die im aktuellen Ast (Tree) der Homepage und die lettzte Änderung der Seite anzeigt z.B. Letzte Änderung im Kundenbereich am xx.xx.xxxx

Ich scheitere mit meinen Kenntnissen

1. an der Selektion der einzelnen Fälle
2. an der Bestimmung der letzten Änderung im Ast

Ich würde dies gern als komplettes Modul erstellen und dann im Downloadbereich ablegen. Ich denke das kann man immer mal brauchen.

Moduleingabe (ist so fertig / funktioniert - Verbesserungen gerne!):

Code: Alles auswählen

<p>Anzeige wann ein Artikel zuletzt geändert wurde</p>
<p>&Uuml;berschrift:</p>
<input type="text" size="100" name="VALUE[1]" value="REX_VALUE[1]" /><br />
<p>Formatierung &Uuml;berschrift:</p>
<select name="VALUE[2]">

<?php
foreach (array("h1","h2","h3","h4","h5","h6","p") as $value) {
	echo '<option value="'.$value.'" ';
	
	if ( "REX_VALUE[2]"=="$value" ) {
		echo 'selected="selected" ';
	}
	echo '>'.$value.'</option>';
}
?>

</select>
<p>Datumsformatierung:</p>
<select name="VALUE[3]" >

<?php
foreach (array("h1","h2","h3","h4","h5","h6","p") as $value) {
	echo '<option value="'.$value.'" ';
	
	if ( "REX_VALUE[3]"=="$value" ) {
		echo 'selected="selected" ';
	}
	echo '>'.$value.'</option>';

}

?>

</select>
<p>Welches Datum soll angezeigt werden?</p>
<select name="VALUE[4]">

<?php
foreach (array("HP","Tree","Page") as $value) {
	echo '<option value="'.$value.'" ';
	
	if ( "REX_VALUE[4]"=="$value" ) {
		echo 'selected="selected" ';
	}
	echo '>'.$value.'</option>';
}
?>

</select>
Modulausgabe (funktioiert nur als Berechnung für die gesamte HP)

Code: Alles auswählen

<?php

$query =  'SELECT updatedate FROM rex_article_slice WHERE updatedate <> 0 ORDER BY updatedate DESC LIMIT 1';

$sql = new sql();
$result = $sql->get_array($query);

if( is_array ($result) and count($result) > 0 ) { 
	foreach ( $result as $row ) {
		$date= $row['updatedate'];
		$date = date('d.m.Y',$date);
                print '<REX_VALUE[2]>REX_VALUE[1]</REX_VALUE[2]>';
                print '<REX_VALUE[3]>'.$date.'</REX_VALUE[3]>';
	}
	
}

?>
Der Code zum Bestimmen einer Seitenaktualisierung ist:

Code: Alles auswählen

<?php print date('d.m.Y', $this->getValue('updatedate')); ?>
Vielen Dank für Hilfe

Gruß Kalle

Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

15. Aug 2008, 17:07

Ich habe mein erstes Posting nochmal erweitert, um es zu konkretisieren.


Gruß Kalle

Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

18. Aug 2008, 13:19

Eigentlich läuft es jetzt auf Hilfestellung in PHP hinaus...

ich habe versucht die Selektion welches Datum angezeigt werden soll, über eine if / else Schleife zu regeln und habe folgende Zeilen in den Beginn der Modulausgabe eingefügt:

Code: Alles auswählen

$ArtDate = "REX_VALUE[4]";

if ($ArtDate=="HP" ) 
Nach meinem Verständnis müsste jetzt die Anzeige des Datums unterbleiben, wenn ich in REX_VALUE[4] etwas anderes als "HP" eingebe.
Leider funktioniert das so nicht.

Was mache ich falsch?

Danke Kalle

therancher
Beiträge: 488
Registriert: 29. Jan 2007, 18:32
Wohnort: Sachsen

18. Aug 2008, 20:14

Hi, diese bedingung sollte funktionieren, wie sieht denn der rest des codes aus? (bzw. wo steht das in deinem code?)
spontanität will wohl überlegt sein!

Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

18. Aug 2008, 23:01

Ich habe den Code für das Ausgabemodul jetzt auf folgendem Stand:

IF Bedingung eingebaut - funktioniert aber nicht die auf IF folgende Sequenz wird immer durchlaufen egal was ich als Value[4] übergebe

ELSE Bedingung eingebaut für den Rest (Funktion aber noch nicht getestet), hier will ich dann, wenn ich weiß wie ich das Datum für den Ast bekomme, noch einmal mit IF verschachteln.

Code: Alles auswählen

<?php

$ArtDate = "REX_VALUE[4]";

if ($ArtDate=="HP" ) 
   {
   $query =  'SELECT updatedate FROM rex_article_slice WHERE updatedate <> 0 ORDER BY updatedate DESC LIMIT 1';

   $sql = new sql();
   $result = $sql->get_array($query);

   if( is_array ($result) and count($result) > 0 ) 
      { 
      foreach ( $result as $row ) 
         {
	      $date = $row['updatedate'];
         }
      } 
   }   
else
   {
   $date->getValue('updatedate');
   }
   
$date = date('d.m.Y',$date);
print '<REX_VALUE[2]>REX_VALUE[1]</REX_VALUE[2]>';
print '<REX_VALUE[3]>'.$date.'</REX_VALUE[3]>';

?>
Danke Kalle
Zuletzt geändert von Kalle01 am 19. Aug 2008, 13:02, insgesamt 1-mal geändert.

therancher
Beiträge: 488
Registriert: 29. Jan 2007, 18:32
Wohnort: Sachsen

19. Aug 2008, 09:11

hi, habe gerade mal deine eingabe oben angeschaut, ich denke, du solltest bei der datumsformatierung und beim datum selber nicht $value als Variable nehmen sondern jeweils einen anderen namen.
denn in deinem REX_VALUE[4] steht sicher nicht "HP" drin. Kannst du leicht nachprüfen, indem du eindach ein

Code: Alles auswählen

echo $ArtDate;
nach der Zuweisung machst...

gruss HarryT
spontanität will wohl überlegt sein!

Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

19. Aug 2008, 12:47

Danke für das "echo$ArtDate"

Das Value[4] wird korrekt angesprochen

Die IF Schleife funktioniert auch - ich hatte übersehen, das dort jetzt ein anderes Datum auftaucht - hatte erwartet das bei leerer ELSE Bedingung nichts dort steht.

Wenn jetzt (Coding siehe oben) die ELSE Bedingung angesprochen wird. bekomme ich allerdings eine Fehlermeldung. Das

Code: Alles auswählen

$date->getValue('updatedate'); 
ist falsch. Alle Versuche von mir, daran so zu drehen, dass es läuft scheitern bisher. Das eingangs erwähnte

Code: Alles auswählen

<?php print date('d.m.Y', $this->getValue('updatedate')); ?>
funktioniert aber

therancher
Beiträge: 488
Registriert: 29. Jan 2007, 18:32
Wohnort: Sachsen

19. Aug 2008, 17:03

sorry, habe ich übersehen:
Code:

$date->getValue('updatedate');
kann nicht funktionieren:

Code: Alles auswählen

$date = $this->getValue('updatedate');
sollte funktionieren...
getValue ist eine Objektmethode, du brauchst also ein object um darauf zuzugreifen...
spontanität will wohl überlegt sein!

Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

20. Aug 2008, 16:50

Super, Danke!

Das mit dem Änderungsdatum der aktuellen Page läuft jetzt. Jetzt fehlt noch der schwierigste Teil - das Änderungsdatum im aktuellen Ast ermitteln. Hier nochmal zusammengefasst, die aktuellen Überlegungen zur Codeentwicklung für die Ausgabe (Eingabe siehe oben):

Code: Alles auswählen

<?php

$ArtDate = "REX_VALUE[4]";

// mit $ArtDate steht eine weitere Variable zur Verfügung die in den Text eingebaut werden kann 
// echo $ArtDate;

if ($ArtDate=="HP" )
// Ermittlung Änderungsdatum gesamte HP 
   {
   $query =  'SELECT updatedate FROM rex_article_slice WHERE updatedate <> 0 ORDER BY updatedate DESC LIMIT 1';

   $sql = new sql();
   $result = $sql->get_array($query);

   if( is_array ($result) and count($result) > 0 ) 
      { 
      foreach ( $result as $row ) 
         {
	      $date = $row['updatedate'];
         }
      } 
   }   
else 
   {
    if ($ArtDate=="Tree" )
// Ermittlung Änderungsdatum aktueller Ast
      { 
      // Hier brauche ich Hilfe
      }
    else
// Ermittlung Änderungsdatum aktuelle Seite
      {
      $date = $this->getValue('updatedate');
      }
   }
$date = date('d.m.Y',$date);
print '<REX_VALUE[2]>REX_VALUE[1]</REX_VALUE[2]>';
print '<REX_VALUE[3]>'.$date.'</REX_VALUE[3]>';

?>
Die Schleifen funktionieren prima - ich verwende das Modul bereits! Bei der Selektion "Tree" kommt natürlich noch ein Mülldatum raus.

Gruß Kalle

therancher
Beiträge: 488
Registriert: 29. Jan 2007, 18:32
Wohnort: Sachsen

20. Aug 2008, 18:13

hi, mir stellt sich gerade die frage in den weg, warum man das braucht? (tree)

by the way: mit ast meinst du unterkategorein?
du musstest ja entweder erst die einzelnen ids des "astes" sammeln und dann irgendwie aus der datenbank lesen oder nimmst die ganze seite und sortierst dann aus. ist beides wenig performant...
da fehlt mir aber auch gerade der anstoss und der wille :D
spontanität will wohl überlegt sein!

Kalle01
Beiträge: 310
Registriert: 10. Jan 2007, 21:27
Wohnort: Mettmann, NRW
Kontaktdaten: Website

20. Aug 2008, 18:34

Hallo Harry,

ich habe auf meiner ziemlich großen Webseite mehrere ganz unterschiedliche Bereiche in der ersten Ebene der HP z.B. einen Kundenbereich
Um jetzt einem Kunden zu signalisieren, es gibt etwas Neues wurde ich gerne auf die Eingangsseite des Kundenbereichs ein Datum setzen, das sagt wann in den Unterkategorien (Ast) die letzte Änderung passiert ist.

"du musstest ja entweder erst die einzelnen ids des "astes" sammeln und dann irgendwie aus der datenbank lesen"
So würde ich das aufbauen, aber dazu fehlt mir noch das knowhow. Ich bin ja schon stolz wie Oskar, dass ich mit Deiner Hilfe so weit gekommen bin! Ich denke, bei den Sitemaps könnte es ein entsprechendes Coding geben das werde ich jetzt als nächstes untersuchen.

"da fehlt mir aber auch gerade der anstoss und der wille"
Du hast schon mehr für mich getan als ich gehofft habe!!

Gruß kalle

Zurück zu „Allgemeines [R3]“