Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: cms2day Forum - Community & Support rund ums cms2day. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Donnerstag, 13. September 2012, 13:41

Slogans nacheinander?

Hallo liebe cms2day-Gemeinde,

Muss leider etwas ausholen um mein Problem zu schildern: Ich habe die "Slogan" Funktion verwendet um eine Art Laufschrift auf meiner Webseite einzubinden. Das klappt auch wunderbar.
Jetzt möchte ich jedoch, dass nicht bei jedem Refresh ein neuer Slogan erscheint, sondern nach beispielsweise 15 Sekunden.

Ist das möglich? Oder muss ich mich von der, eigentlich sehr genialen Slogan Funktion, verabschieden?

Liebe Grüße und ein herzliches Dankeschön

Werbung

Quizmasterlex

unregistriert

2

Donnerstag, 13. September 2012, 13:51

Das ist natürlich möglich, allerdings hinkt hier das Kosten-/Nutzenverhältniss. Es gibt verschiedene Lösungswege, beispielsweise speicherst du dir irgendwo welches Image aktuell ist und wenn der Zeitstempel 15 Sekunden weg ist setzt du halt ein neues.

Werbung

3

Freitag, 14. September 2012, 11:15

So, wie die Sloganfunktion momentan eingebaut ist, funktioniert es nicht. Du müsstest einiges tun, damit die Sloganfunktion das tut, was du dir wünscht.

Das Problem ist, dass die Sloganfunktionalität fix im System eingebaut ist und per Funktion im Template aufgerufen wird. Hinzukommt, dass es eine PHP-Funktion ist, sprich auf dem Server ausgeführt wird. Dies bedeutet, dass ein "Refresh" einer Serveranfrage gleichkommt. Dies kann zwar per AJAX durchgeführt werden, ohne dass die ganze Seite neu geladen wird, aber per AJAX lässt sich keine spezifische PHP-Funktion aufrufen sondern nur eine PHP-Datei. Das heisst, du müsstest die page_claim.inc.php so umschreiben, dass dort die Funktion auch gleich aufgerufen wird und diese per AJAX in einem Intervall von 15 Sekunden ausführen lassen. (JQuery sollte alles anbieten). Das müsstest du im Template einbauen.

Ich glaube aber, dass ein solcher Aufruf ausserhalb des Systemkontextes durchgeführt werden würde - Sprich es würde zu diesem Zeitpunkt keine Datenbankverbindung vorhanden sein. Somit müsstest du in page_claim.inc.php eine Datenbankverbindung aufbauen und auch wieder beenden und anschliessend im Systemkontext wieder aufbauen. --> Da bin ich mir aber nicht 100% sicher, müsste ausprobiert werden.

Zusammengefasst:
1. page_claim.inc.php am Schluss noch page_claim(); schreiben.
2. <?php page_claim(); ?> im Template entfernen
3. Per AJAX page_claim.inc.php alle 15 Sekunden ausführen lassen (Im Template wird dies eingebaut).
Mit den folgenden Beispielen solltest Du es umsetzen können:
http://www.w3schools.com/jsref/met_win_setinterval.asp
http://api.jquery.com/load/

Hinweis: cms2day benutzt bereits das jquery Framework, das musst du also nicht noch herunterladen und einrichten.

Ich habe selber noch nie mit ajax gearbeitet, aber in der Theorie sollte dies so funktionieren. Wenn ich etwas Zeit finde, werde ich es vielleicht ausprobieren. (Aber lieber nicht darauf warten sondern selber ausprobieren ;-))

Werbung

4

Freitag, 14. September 2012, 15:08

Da mich das jetzt doch interessierte, habe ich es ausprobiert und es zum laufen gebracht. Leider ist es so, wie ich vermutet habe, dass der Aufruf der PHP-Datei mittels AJAX ausserhalb des Kontextes gemacht wird. Das heisst, du müsstest eine Datenbankverbindung herstellen. Desweiteren werden noch einige Informationen aus der config.inc.php benötigt. Theoretisch könntest du die benötigten Codeschnippsel einfach von dort aus in die page_claim.inc.php kopieren.

Das wäre aber sehr hässlich und ausserdem ist der Inhalt der config.inc.php verschleiert und wenn ich dir zeigen würde, wie man es lesbar macht, würde ich wohl Ärger kriegen. :-) Deshalb kann ich nur sagen: Du musst dich leider von der Slogan-Funktion verabschieden.

Solltest du dich doch für die "hässliche" Variante entscheiden, musst du folgendes machen:

1. Erstelle im Ordner includes/functions eine neue PHP-Datei. Bsp: claim.php (Wichtig ist, dass kein .inc im Dateinamen vorkommt)

2. Schreibe folgendes in diese Datei:

PHP-Quelltext

1
2
3
4
5
6
7
8
<?php

$conn mysql_connect('localhost''@user''@passwort');
mysql_select_db('@datenbank'$link);
$claim mysql_fetch_assoc(mysql_query("SELECT * FROM claim ORDER BY RAND() LIMIT 1"));
print $claim["claim"];            
    
?>

Hinweis: user, passwort und datenbank musst du natürlich anpassen.

3. Baue folgenden Code in den <head> Bereich deines Templates:

Quellcode

1
2
3
4
5
6
7
8
<script type="text/javascript">
  $(document).ready(function() {
    $("div#claim").load('../includes/functions/claim.php');
    var doRefresh = setInterval(function() {
      $("div#claim").load('../includes/functions/claim.php');
    }, 15000);
  });
</script>

Hinweis: Der Pfad muss stimmen. Bei diesem Beispiel wird davon ausgegangen, dass cms2day im root Verzeichnis installiert wurde.

4. Setze einen <div> mit der id claim in das Template, wo dass der Text angezeigt werden soll.

Quellcode

1
<div id="claim"></div>


Das sollte alles sein. Aber wie gesagt, das ist weder schön noch wirklich gut gelöst.

//EDIT:
Mir ist gerade aufgefallen, dass ich dies auf einer 3.9.3 getestet habe ... Ich hoffe, auf der 3.9.6 funktioniert es auch. Ich habe die Unterschiede nicht überprüft. Sollte meines Erachtens aber gehen.

Werbung

emet

Admin & Support

  • »emet« ist männlich

Beiträge: 2 530

Wohnort: Rhein/Main

Paypal:

  • Nachricht senden

5

Samstag, 15. September 2012, 19:25

Prime, du weist doch, das in der config nix groß drin ist - das ist in der 3.9.6 uninteressant.

Es werden mehr oder weniger eigentlch fast nur die Dateien aus dem Ordner function eingelesen.

Wir haben ja auch alle Funktionen in diese Dateien eingebaut.

Also wie schon mal bei einem anderen Thema - einfach eine Funktion bauen und in dem Ordner ablegen.

Ansonsten die Frontend und Backendfunktion umschreiben - in den dazu gehörigen Dateien.
.
HTML, was ist das? Ein neues Männermagazin? Css.., was es so alles gibt!

News: http://www.cms2day.de/news/1/
Features: http://www.cms2day.de/cms-funktionen/

Zufrieden mit cms2day und unserer Arbeit/Support - Spenden (-Button links) sind herzlich Willkommen - Dankeschön.
.

Werbung

Quizmasterlex

unregistriert

6

Samstag, 15. September 2012, 19:33

Ich denke dafür ist diese Funktion einfach nicht gedacht (und vorbereitet). Am einfachsten ist vermutlich wenn du dir etwas eigenes baust. Wenn du das ganze unbedingt übers Backend konfigurieren möchtest ist der Aufwand dafür auch überschaubar.

Werbung

7

Samstag, 15. September 2012, 19:57

Prime, du weist doch, das in der config nix groß drin ist - das ist in der 3.9.6 uninteressant.

Es werden mehr oder weniger eigentlch fast nur die Dateien aus dem Ordner function eingelesen.

Wir haben ja auch alle Funktionen in diese Dateien eingebaut.

Also wie schon mal bei einem anderen Thema - einfach eine Funktion bauen und in dem Ordner ablegen.

Ansonsten die Frontend und Backendfunktion umschreiben - in den dazu gehörigen Dateien.


Ich weiss, dass es prinzipell uninteressant ist - In diesem Fall ist die Tatsache, dass alle Dateien mit der Endung .inc.php von functions automatisch eingebunden wird, jedoch wichtig zu wissen, da die Lösung, die ich gepostet habe, mit einer solchen Dateiendung zu unerwünschten Nebenwirkungen führen würde. (Mal abgesehen von den globalen Variablen, die "nachgebaut" werden müssen, wenn Programmdateien ausserhalb des Kontextes ausgeführt werden müssen, was bei AJAX der Fall ist.)

Du weisst auch, dass ich kein Fan von Obfuskationen bin, aber das ist ein anderes Kapitel ...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Prime« (15. September 2012, 20:03)


Werbung

emet

Admin & Support

  • »emet« ist männlich

Beiträge: 2 530

Wohnort: Rhein/Main

Paypal:

  • Nachricht senden

8

Sonntag, 16. September 2012, 18:25

Ja Prime, aber was sollen wir machen.

Seit die config nicht mehr antastbar ist und alles über die functions läuft, hat seither keiner mehr das System mit eigenen Programmierungen zerschossen.

Jeder baut sich eine Function oder ein Addon und wenns nicht funzt, wird es einfach aus dem System entfernt.

Vorher gingen die Probleme bei uns ein und wir haben gesucht wie die Idioten ("und es hat keiner was dran gemacht") und da hat irgendwo einer in der config rumgebastelt und wenns nur ein Punkt war, der vergessen wurde.

Die Probleme sind erledigt.

Dafür das die Anwendung hier was ganz anderes tun soll, wäre evtl ein kleines Modul sinnvoll in Verbindung mit einer Autorun oder einem Addon zur Plazierung der Frontendausgabe.

Oder wenn die Texte einer bestimmten Seite zugewiesen werden sollen mit einer ID Abfrage (bzw. kann dann der einzelne Aufruf auch über PageContentModul eingestellt werden - dann braucht man das mit den IDs nicht)
.
HTML, was ist das? Ein neues Männermagazin? Css.., was es so alles gibt!

News: http://www.cms2day.de/news/1/
Features: http://www.cms2day.de/cms-funktionen/

Zufrieden mit cms2day und unserer Arbeit/Support - Spenden (-Button links) sind herzlich Willkommen - Dankeschön.
.

Werbung

9

Sonntag, 16. September 2012, 18:42

Ich verstehe, warum ihr das gemacht habt. Ihr müsst aber auch verstehen, dass die Funktionsweise der config.inc.php dennoch bekannt sein müsste. Genau für den hiesigen Fall.

Modul, Addon, Autorun - Das alles bringt in diesem Fall nichts. Das ist ein technologisches Problem AJAX/PHP.

Hier die Erklärung:
Damit das so funktioniert, wie gewünscht und wie ich umgesetzt habe, muss die PHP-Datei eine Ausgabe produzieren. Wenn eine Funktion gebaut wird, muss in der selben Datei, wie die Funktion definiert wurde, die Funktion aufgerufen werden. So, wenn nun die Datei funktion.inc.php heisst und im functions Ordner abgelegt wird, inkludiert die config.inc.php diese Datei automatisch. Das bedeutet, dass JEDESMAL die Ausgabe aufgerufen wird. Dies kann nur unterbunden werden, in dem die Datei nicht inc.php sondern nur .php als Dateiendung hat. Dies musste ich wissen und habe es nur herausgefunden, weil ich die config.inc.php entschleiert habe. AJAX kann nur ganze PHP-Dateien aufrufen und nicht spezifische PHP-Funktion innerhalb einer Datei.

Es geht mir nicht darum, dass die config.inc.php prinzipiell entschleiert werden sollte, sondern, dass ein Programmierer wissen sollte, was darin gemacht wird. Das kann in Prosa geschrieben werden.

Bsp:
Als erstes werden alle Dateien des Ordners functions, die mit inc.php enden, automatisch inkludiert. Desweiteren werden die folgenden Variablen erstellt mit den jeweiligen Datenbankwerten: $option, etc.

PS. Aber das wird nun zu Offtopic und sollte, wenn überhaupt, intern diskutiert werden.

Der Threadersteller hat einen Lösungsweg für sein Problem, somit sollte dieses Thema beendet sein.

Werbung

Quizmasterlex

unregistriert

10

Sonntag, 16. September 2012, 19:09

es ist auch für andere Zwecke nicht verkehrt. Viele Leute haben Probleme damit einfach verschleierten Quellcode auf dem eigenen Webserver zu haben - man haftet zumindest mittelbar dafür.

Werbung