Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

php Script und Drupal Cache

Eingetragen von fpr (11)
am 07.06.2009 - 00:10 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo, nachdem ich schon Stunden erfolglos rumgesucht habe, muss ich doch mal eine Frage zur Version 6.xx stellen:
Wie kann ich ein eigenes php-Script, welches jeweils die aktuelle Seite abfragt, in Drupal integrieren, ohne dass es vom Cache "geschluckt" wird?

Einfach in die theme.php packen, fuunktioniert natürlich nicht.

Auch wenn ich dafür einen extra Block erstelle und Block Cache deaktiviere, habe ich keinen Erfolg.

Es scheint, dass man mit http://api.drupal.org/api/constant/BLOCK_NO_CACHE etwas erreichen kann, ich weiss aber nicht wie.

Hat jemand vielleicht eine Idee oder einen passenden Link zur Hand?

‹ Zeilenumbrüche werden nicht automatisch erzeugt Sporadische Fehlermeldung 'failed to open stream' bei XAMPP ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

wo willst du denn das Skript

Eingetragen von dawehner (2639)
am 07.06.2009 - 00:53 Uhr

wo willst du denn das Skript einbinden? Muss das in einem Block sein, oder muss es allgemein auf jeder Seite einmal ausgeführt werden, oder willst wirklich einen Block haben, falls ja musst(solltest) du ein Modul schreiben und hook_block implementieren

in $op = 'list' kannste 'cache' => BLOCK_NO_CACHE setzen
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

oder so etwas ...

Eingetragen von tumblingmug (872)
am 07.06.2009 - 01:10 Uhr

http://drupal.org/project/blockcache_alter

  • Anmelden oder Registrieren um Kommentare zu schreiben

dereine schrieb wo willst

Eingetragen von fpr (11)
am 07.06.2009 - 04:18 Uhr
dereine schrieb

wo willst du denn das Skript einbinden? ...

Hallo,
es muss nicht zwingend in einen Block - Hauptsache ist, dass es auf jeder Seite neu ausgeführt wird - da es ein kleiner Bot-Logger ist. Ich hatte den Php-Code ja schon einfach in die bootstrap.inc gepackt, das hat aber leider immer die Aufrufe vom Ad-Modul mitgeloggt, was ja die Last unnötigt erhöht.
Wo könnte ich denn den Php-Code sonst noch unterbringen, um zu einem Ergebnis zu kommen?

Bezgüglich der Lösung im Block, womit ich mich die letzten Stunden beschäftigt habe:
Ein wenig seltsam ist, dass scheinbar nicht der Block-Cache sondern der normale Cache für das Problem verantwortlich ist.
Wenn ich nur den Cache ausschalte und den Block-Cache eingeschaltet lasse, funktioniert es; in der Block-Tabelle habe ich für den betreffenden Block bei "Cache" auch schon kommischerweise den benötigten Wert "-1".

(@ tumblingmug, Danke, aber das bringts leider auch nicht, s.o.)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit hook_boot kannste Dinge

Eingetragen von Tobias Bähr (4019)
am 07.06.2009 - 08:33 Uhr

Mit hook_boot kannste Dinge durchführen bevor die ganzen Dinge durchgeführt werden.

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, ich blicke nicht mehr

Eingetragen von fpr (11)
am 07.06.2009 - 16:38 Uhr

Hallo, ich blicke nicht mehr durch; hook_boot scheint sich ja nur auf Module zu beziehen.

Muss ich denn wirklich für drei Zeilen Php-Code, die sich nicht auf den Drupal-Code beziehen, ein eigenes Modul schreiben?

<?php
$timestamp
= time();
$uhrzeit = date("H:m:s",$timestamp);
echo
$uhrzeit;
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kommt drauf an was man

Eingetragen von Tobias Bähr (4019)
am 07.06.2009 - 16:48 Uhr

Kommt drauf an was man machen will. Aber jetzt im Ernst du willst doch nicht die Uhrzeit anzeigen?

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja aber nicht viel mehr; das

Eingetragen von fpr (11)
am 07.06.2009 - 17:12 Uhr

Ja aber nicht viel mehr; das war nur zur Untermauerung, dass mein Script nicht mit Drupal interagieren muss, sondern nur bei jedem Seitenaufruf neu ausgeführt werden soll.

Ich blicke einfach nicht, an welcher Stelle ich solche kleinen Spielereien reinhacken kann.

Wo würdest Du denn mein Beispiel unterbringen, ohne dafür extra ein Modul zu schreiben?

Das scheint so trivial zu sein, dass darüber nichts im Netz zu finden ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sowas garnicht. Wer die

Eingetragen von Tobias Bähr (4019)
am 07.06.2009 - 17:46 Uhr

Sowas garnicht. Wer die Uhrzeit wissen will, schaut in die Taskleiste :D. In die tpl meines Themes direkt jenachdem wo es erscheinen soll. zb ganz unten im footer -> page.tpl.

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zumal ich es als Besucher

Eingetragen von Alexander Langer (3416)
am 07.06.2009 - 17:53 Uhr

Zumal ich es als Besucher ziemlich unspannend finde welche Zeit der Server gerade hat... ;)

--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!

webseiter.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Spartacus schrieb In die

Eingetragen von fpr (11)
am 07.06.2009 - 18:04 Uhr
Spartacus schrieb

In die tpl meines Themes direkt jenachdem wo es erscheinen soll. zb ganz unten im footer -> page.tpl.

Nur wird das Script auch an dieser Stelle gecached und wir fangen wieder von vorne an ;-).

Ich sehe schon, ich muss mir wohl doch ein Modul schreiben und das für so ein kleines Piss-Script ...

Trotzdem, erstmal Danke.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modülchen

Eingetragen von tumblingmug (872)
am 07.06.2009 - 18:07 Uhr

Also bevor ich das jetzt lange erkläre, kriegst Du hier ein Modülchen von mir angehängt.

Kurz erklärt aber doch:

da Du ja im Grunde keinen Block vom Caching ausschließen willst, sind die Block-Varianten irreführend; und da Du zusätzliche Funktionalität willst, musst Du wohl ein Modul verwenden, um 1.) nicht im Core herumzutun und um 2.) auch bei Theme-Wechsel die Funktionalität zu behalten. (Darum wäre die "template.php" selbst dann der falsche Ort, wenn es ginge, denn die ist theme-gebunden.)

Wie trivial das Ganze aber dennoch ist, siehst Du, wenn Du in den Code schaust. hook_exit() ist hier das Zauberwort. Probiere es aus.

Link zum Modul

Nachtrag:
Jeder, der mir hier die Upload-Rechte nachhaltig vorenthält, kriegt von mir künftig Embed-Verbot für meine Screencasts :( (Ist ja wirklich lächerlich, ich hatte hier schon mal Upload-Rechte ...)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke, Du hast mein Keyboard

Eingetragen von fpr (11)
am 07.06.2009 - 19:12 Uhr

Danke, Du hast mein Keyboard gerettet ;-).

Mit Deinem Beispiel funktioniert es wunderbar.

Jetzt verstehe ich auch allmählich, wie der Hase bei Drupal zu laufen hat.

Ein kleines Script sagt halt manchmal mehr als tausend Worte.

Hast ja auch Recht, ein Modul macht sich immer besser als in der Core rumzupfuschen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

gleiches Problem

Eingetragen von green_eye55 (85)
am 02.07.2009 - 10:49 Uhr

Hi,

bin gerade über diesen Thread gestolpert, da ich das selbe Problem habe. Nun habe ich das "Mini-Modul" getestet mit folgendem Problem: wenn ich es aktiviere und die Konfiguration speichere, erschein eine weiße Seite mit der Ausgabe der Zeit. Auch beim ausführen der Prüfung auf Aktualisierungen, bleibt es bei einer weißen Seite stehen, die die Uhrzeit zeigt. Woran kann das liegen? Es scheint als würde das Script nicht korrekt beendet oder so...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das liegt daran das die Zeit

Eingetragen von Tobias Bähr (4019)
am 02.07.2009 - 11:08 Uhr

Das liegt daran das die Zeit direkt geprinted wird.

ändere so die Dateien:

mymod.module

<?php
/**
* Implementation of hook_exit().
*
* Code execution on page accesses.
*/
function mymod_exit() {
  include_once drupal_get_path('module', 'mymod') .'/myscript.php';
  return format_date(zeit());
}
function mymod_footer($main = 0) {
  return '<div style="clear:both;">'. mymod_exit() .'</div>';
}

myscript.php

<?php
function zeit() {
  return
time();
}
?>

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

myscript.php

Eingetragen von tumblingmug (872)
am 02.07.2009 - 14:05 Uhr

myscript.php ist ja nur ein Beispielskript, das anhand der Zeit zeigt, dass das funktioniert. Du musst myscript.php jetzt mit Deinem PHP-Skript ersetzen, das bei jedem Seitenaufruf ausgeführt werden soll. Und natürlich darf da direkt nichts ausgegeben werden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

hat funktioniert

Eingetragen von green_eye55 (85)
am 03.07.2009 - 13:02 Uhr

Die Korrektur von mymod.modul hat funnktioniert:

function mymod_footer($main = 0) {
  return '<div style="clear:both;">'. mymod_exit() .'</div>';
}

Seitdem kann ich das Modul normal aktivieren und auch wieder die Prüfung auf Aktualisierungen ohne Fehler durchführen. Allerdings ist mir die Funktion mymod_footer nicht ganz klar. Diese schreibt jetzt ein Datum (von 1970) in den Footer!?

Die Ausgabe meiner eigentlichen Datumsanzeige klappt sehr gut und wird auch nicht mehr gecacht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eigentlich müsste dort das

Eingetragen von Tobias Bähr (4019)
am 03.07.2009 - 13:34 Uhr

Eigentlich müsste dort das Datum , welches du unter admin/settings/date-time bei Mittleres Datumsformat: ausgewählt/eingestellt hast, ausgegeben werden. Also zb 3 Juli, 2009 - 14:33.

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

nein das macht er nicht

Eingetragen von green_eye55 (85)
am 03.07.2009 - 14:03 Uhr

Nein das macht er nicht. Es wird folgendes Datum ausgegeben: 1. Januar 1970 - 2:00

myscript.php habe ich aber auch leicht verändert:

<?php
function zeit() {
  return
date("d M Y H:i");
}
?>

Im Template rufe ich dann die Funktion auf und erhalte das gewünschte Datum mit Uhrzeit
<div id="date_time"><?php print zeit($date) ?> Uhr</div>

Ohne die Funktion mymod_footer in der mymod.module gab es ja den oben genanntenn Fehler, sonst hätte ich diese Funktion gleich raus gelassen. Ich habe da bestimmt noch einen Dreher drin.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn dann so: function

Eingetragen von Tobias Bähr (4019)
am 03.07.2009 - 14:37 Uhr

Wenn dann so:

function mymod_exit() {
  include_once drupal_get_path('module', 'mymod') .'/myscript.php';
  return format_date(zeit(), 'custom', 'd M Y H:i');
}
function mymod_footer($main = 0) {
  return '<div style="clear:both;">'. mymod_exit() .'</div>';
}

Und wenn in der myscript.php nur die zeit zurückgeben wird, dann so.

function mymod_exit() {
  return format_date(time(), 'custom', 'd M Y H:i');
}
function mymod_footer($main = 0) {
  return '<div style="clear:both;">'. mymod_exit() .'</div>';
}

Und du unter admin/settings/date-time "Benutzerdefiniertes Format" auswählst bei Mittel und dort d M Y H:i einträgst, dann so:

function mymod_exit() {
  return format_date(time());
}
function mymod_footer($main = 0) {
  return '<div style="clear:both;">'. mymod_exit() .'</div>';
}

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Positionierung

Eingetragen von green_eye55 (85)
am 05.07.2009 - 16:49 Uhr

Ok, vielen Dank für die Aufklärung. Ich habe jetzt Variante 1 genommen und bekomme im Footer das korrekte Datum und die entsprechende Uhrzeit ausgegeben.

Wie kann ich diese Zeile in einen anderen Bereich der der Page setzen? Brauche diese Angabe an einer individuellen Stelle im Header (Kopfbereich) der Seite. Verstehe hier irgendwie das Prinzip der Ansteuerung nicht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich zitiere mal Alexander

Eingetragen von Tobias Bähr (4019)
am 05.07.2009 - 17:17 Uhr

Ich zitiere mal

Alexander Langer schrieb

Zumal ich es als Besucher ziemlich unspannend finde welche Zeit der Server gerade hat... ;)

Modul deaktivieren und in der page.tpl direkt format_date() benutzen.

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Alexander Langer

Eingetragen von green_eye55 (85)
am 05.07.2009 - 18:09 Uhr
Zitat:

Alexander Langer schrieb
Zumal ich es als Besucher ziemlich unspannend finde welche Zeit der Server gerade hat... ;)

Jeder hat so seine Bedürfnisse ;-).

Zitat:

Modul deaktivieren und in der page.tpl direkt format_date() benutzen.

So habe ich es vorher auch gemacht und diese Ausgabe wurde gecacht! Dadurch gab es regelmäßig eine Uhrzeit, die der tatsächlichen weit "hinterher hing". So bin ich auf diesen Thread gestoßen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genau

Eingetragen von tumblingmug (872)
am 05.07.2009 - 19:06 Uhr

Womit wir wieder beim Thema wären. Denn mymod hatte mit dem Eingangsthema gar nicht so viel zu tun. hook_exit würde für den nicht zu cachenden Teil einer Page nicht in Frage kommen, sondern hier nun tatsächlich hook_boot. Wirkt wie gewünscht bei gecachten Pages sowie bei aktiviertem "Normal Caching Mode" auch für nichtangemeldete Besucher.

Ich würde also via hook_boot eine globale Variable mit der aktuellen Zeit füttern und diese dann in einem Block (der Einfachheit halber) per PHP ausgeben lassen.

EDIT: Ne, daneben geschossen - geht auch nicht. Geht nämlich sowieso, wenn der Block-Cache abgeschaltet ist, aber weiterhin nicht, wenn er eingeschaltet ist. Damit stellt sich also die immer noch nicht gelöste Frage, wie man das Caching für einen spezifischen Bereich einer Page abschaltet – oder auch so: wie kann ich Pagecontent cachen, aber eben einen speziellen Teil davon nicht? Wer's verrät, sollte ein Bier ausgegeben bekommen :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

tja und da kommt der Heilige

Eingetragen von dawehner (2639)
am 05.07.2009 - 19:15 Uhr

tja und da kommt der Heilige Gral :) Wenn du das lösen kannst biste gut :)

Die einfachste Lösung / auch für gäste mit Cache aktiviert, ist einfach JS :) Notfalls per json Request von Drupal geholt.
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ne

Eingetragen von tumblingmug (872)
am 05.07.2009 - 19:24 Uhr

JS ist keine Lösung und nicht the Drupal way. Die Sachen müssen immer auch ohne JS funktionieren, sonst wär's zu einfach! Ne, im User-Modul ist das z.B. in user_block(...) so gelöst:

<?php
    
   
// Too dynamic to cache.
   
$blocks[3]['info'] = t('Who\'s online');
   
$blocks[3]['cache'] = BLOCK_NO_CACHE;
    return
$blocks;
?>

Klar oder? "Who's online" darf ja nicht gecached werden, sonst wär's blöd :)

Also denke ich, hook_block in einem eigenen Modülchen verwenden und es so machen, wie's die Core-Jungs hier zeigen ...

Aber wie ginge so etwas außerhalb eines Blocks?????

  • Anmelden oder Registrieren um Kommentare zu schreiben

Naja klar ist ohne JS besser

Eingetragen von dawehner (2639)
am 05.07.2009 - 19:47 Uhr

Naja klar ist ohne JS besser aber:

1. Page Cache steht überhalb von BlockCache, d.h. wenn Page Cache Aktiv ist wird für Gäste die Zeit nie stimmen. Page Cache speichert den HTML String, gegzipt. Der BlockCache funktioniert halt auch für angemeldete Benutzer.

Außerhalb vom Block gehts überall anders :) z.B. in hook_preprocess_page
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

dereine schrieb Außerhalb

Eingetragen von tumblingmug (872)
am 05.07.2009 - 20:01 Uhr
dereine schrieb

Außerhalb vom Block gehts überall anders :) z.B. in hook_preprocess_page

Na hoppla. Was hat denn dieser Hook damit zu tun? Dessen weitergereichte (modifizierte) Variablen werden genauso gecached wie der übrige Page-Content. Das wäre die Antwort auf meine Frage nicht: wie kann ich Teile einer gecachten Page dynamisch aktualisieren?

Und der "Who's online"-Block funktioniert auch, obwohl die Pages, auf denen er erscheint, gecached sind, wenn ich recht sehe ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

mh das war eigentlich auf

Eingetragen von dawehner (2639)
am 05.07.2009 - 20:49 Uhr

mh das war eigentlich auf die hook_block alternative bezogen ....

Sicher dass das geht? Ich würde sagen nein, sonst könnte ja man das gleich lassen :)

Aktuell geht das AFAIK nur wirklich gut mit JS
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

JS oder Block

Eingetragen von green_eye55 (85)
am 06.07.2009 - 15:23 Uhr

Was würdet ihr machen, wenn es notwendig ist: Eher JS dafür integrieren oder einen extra Block bauen? Ganz schön umständlich das Ganze...

  • Anmelden oder Registrieren um Kommentare zu schreiben

green_eye55 schrieb Ganz

Eingetragen von tumblingmug (872)
am 06.07.2009 - 22:23 Uhr
green_eye55 schrieb

Ganz schön umständlich das Ganze...

Ja und Nein. Es ist eine Frage des Konzepts. Aktiviertes Drupal-Caching für Pages meint: nicht angemeldete Benutzer sehen nicht in jedem Moment den aktuellsten Content. Punkt. Wenn Du zeitbezogene Daten auf der Page für "Anonymous" in jedem Moment aktuell angezeigt haben willst, hast Du die Wahl zwischen zwei Möglichkeiten:

  1. Deaktivieren des Caching unter admin -> settings -> performance oder
  2. Verwendung von JS, wie von dereine vorgeschlagen.

Ersteres kostet Performance, funktioniert aber auch für Benutzer ohne JS. Die zweite Variante ist durch Caching performanter, kostet aber Accessibiltity, sprich: Benutzer ohne JS sehen nichts bzw. nur das, was Du an nicht-aktuellen Daten für sie vorsiehst.

Ich habe bislang keine Möglichkeit gefunden, nur Teile bereits gecachter Pages zu verändern bzw. zu aktualisieren. Wer nicht angemeldet ist in Drupal, ist bei aktiviertem Caching schlichtweg nicht auf dem allerletzten Stand.

  • Anmelden oder Registrieren um Kommentare zu schreiben

JS Versuch

Eingetragen von green_eye55 (85)
am 07.07.2009 - 16:51 Uhr

Lösung Nr. 1 (Deaktivieren des Caching) ist keine wirkliche Lösung, denke ich. Der Performance-Verlust dürfte gerade bei größeren Seite (Portalen etc.) doch erheblich sein. Nur um ein paar wenige "Live-Infos" zur Verfügung zu stellen, ist das doch ein sehr hoher Preis. Also habe ich mich entschieden Variante Nr. 2 zu testen.

Vielleicht gehört es nicht direkt hierher, aber es schließt das Thema vielleicht mit einem Lösungsansatz ab. Dazu habe ich eine script.js in mein Theme-Verzeichnis gelegt, welche in Drupal 6 automatisch erkannt und eingebunden wird. Dieses schreibt das aktuelle Datum mit Uhrzeit bei Seitenaufruf in den Container #date_time:

if(Drupal.jsEnabled){
$(document).ready(function(){
$.get('meinTplPath/date_time.php', function(msg) {
$('#date_time').empty();
   $('#date_time').append(msg);
   })

});

}

Im selben Verzeichnis liegt date_time.php und holt die aktuelle Serverzeit:
<?php print date("d M Y H:i") ?> Uhr

Dazu muss ich sagen, dass ich kein Programmierer bin. Ich habe die paar Zeilen zusammengebastelt und gehofft, dass es funktioniert ;-). Das tat es auf den ersten Blick gut. Nach einer Weile viel auf, dass auf bestimmten Unterseiten ein Fehler passiert. Die Seite zerreißt und wird ineinander doppelt dargestellt. Firebug gibt folgene Fehlermeldung zurück:

Zitat:

uncaught exception: [Exception... "Unexpected error" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: http://www.domain.de/misc/jquery.js?r :: anonymous :: line 13" data: no]

An irgendeiner Stelle, wo beide Scripte gleichzeitig ausgeführt werden oder eine ungünstige Konstellation auftritt, hakt es komplett. Kann das jemand deuten oder vielleicht auch einen Fehler in meinem Script erkennen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

JS hat auch eine Date

Eingetragen von Tobias Bähr (4019)
am 07.07.2009 - 19:11 Uhr

JS hat auch eine Date Funktion http://de.selfhtml.org/javascript/objekte/date.htm, also brauchst keine Datei einbinden

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

aber dann ist doch das ganze

Eingetragen von dawehner (2639)
am 07.07.2009 - 19:50 Uhr

aber dann ist doch das ganze nicht Serverseitige Zeit oder :p

das genau wollte er ja anzeigen
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Keine Ahnung, welche

Eingetragen von Tobias Bähr (4019)
am 07.07.2009 - 19:54 Uhr

Keine Ahnung, welche Zeit[Client oder Server] dort genommen wird. Aber wegen sone Zeitangabe muss ja nicht den ganzen Workflow kaputt machen :D.

----------------------------------------

http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hoffe ihr seid von

Eingetragen von green_eye55 (85)
am 13.07.2009 - 17:25 Uhr

Ich hoffe ihr seid von diesem Thema noch nicht so genervt wie ich. Alle Versuche diese Zeitangabe per Javascript anzeigen zu lassen, schlugen fehl. Das heißt, die reine Umsetzung hat schon funktioniert, jedoch gibt es auf bestimmten Unterseiten meiner Webseite ständig eine Fehlermeldung und schreckliche Layoutfehler, verursacht durch das Script. Da ich nach ewigem Suchen den Fehler nicht finden konnte und diese Uhrzeit dringend ausgeben muss, habe ich mich zu einem Versuch das Ganze per Block zu lösen entschlossen.

Aber auch hier macht das Caching Kopfschmerzen. Ich habe einen Block angelegt und in den Kopfbereich meiner Seite gepackt, nun mit Hilfe des Moduls blockcache_alter verucht für diesen speziellen Block das Caching zu verhindern, aber ohne Erfolg. Dann habe ich einfach versucht, das Caching in der Datenbank für diesen Block zu deaktivieren (cache = -1), aber auch das Hilft nicht.

Meine letzte Idee war es das Ganze über Views zu versuchen. Dabei bin ich mir nicht mal sicher, ob das einen Unterschied macht. Habe also eine View erstellt, das Caching auch hier NICHT aktiviert und als Block im Kopfbereich platziert. Wieder ohne Erfolg.

Das komische ist: Auf meiner Testseite funktioniert es - auf der Produktivseite nicht im geringsten. Es scheint, als würden alle Blocks generell gecacht, wenn das seitenweite Block-Caching aktiviert ist. Gibt es noch eine andere Möglichkeit einen einzelnen Block vom Caching auszuschließen.

Hat dazu eventuell nochmal jemand einen Tipp?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Soweit ich sehe, hilft Dir

Eingetragen von tumblingmug (872)
am 14.07.2009 - 22:01 Uhr

Soweit ich sehe, hilft Dir das Block-Caching bei der beschleunigten Seitenanzeige für angemeldete Benutzer, nicht aber für anonyme Besucher. Aber damit würde die Zeitanzeige ja dann nicht einmal mehr funktionieren, wenn Du angemeldet bist ...

Bist Du lokal vielleicht immer angelmeldet und testest remote als Anonymous?

Ich denke - bitte, man berichtige mich! -, dass eine Page entweder komplett gecached ausgeliefert wird oder komplett nicht gecached (wobei Blöcke und gefilterter Content davon ausgenommen sind/ sein können). M. E. musst Du Caching für die Site überhaupt abschalten, wenn eine serverseitige Zeitanzeige auf allen Pages für Anonymous funktionieren soll.

  • Anmelden oder Registrieren um Kommentare zu schreiben

zitat: sowas gar nicht ...

Eingetragen von draeck (93)
am 08.08.2009 - 10:14 Uhr

Hallo Thomas,

also "sowas garnicht" ? !
Ich stehe vor einem ähnlichen Problem. Und zur Illustration, das sowas sinnvoll sein kann. Es handelt sich um eine Seite, auf der ein Link zeitgesteuert erscheinen soll, also muss ich die Zeit ermitteln. Die Seite (Node) selbst ist natürlich veröffentlicht, nur ein Link auf der Seite darf erst zu einem gewissen Zeitpunkt freigeschaltet werden. Wieso sollte also eine PHP-Zeitfunktion gar nicht gehen ....?

Gruß

--++--
draeck
++--++

  • Anmelden oder Registrieren um Kommentare zu schreiben

achso, übrigens

Eingetragen von draeck (93)
am 08.08.2009 - 10:10 Uhr

... habe ich die sache seeeehr dirty gelöst..... ich ahbe meine zeilen php code für den zeitgesteuerten link ausgelagert und als (Igitt) IFRAME eingebunden. nun gehts wenigstens ohne irgend welche rumfrutzeleien am cache....

mean and dirty but working

gruß

--++--
draeck
++--++

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dirty, aber OK, finde ich.

Eingetragen von tumblingmug (872)
am 08.08.2009 - 10:22 Uhr

Dirty, aber OK, finde ich. Gemessen nämlich an allem sonstigen Aufwand mit dem Thema Cache in Drupal. Solange man nicht direkt in gecachete Seiten quasi "last minute" Änderungen einbuchen kann, muss man das Thema wohl oder übel so oder anders umgehen.

Und: diese Lösung gefällt mir besser als JavaScript-Lösungen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 5 Tagen
  • Hey danke
    vor 1 Woche 6 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 25 Minuten
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association