[gelöst]Random Image & Random Zitat
Eingetragen von Samyylain (24)
am 28.09.2009 - 12:07 Uhr in
am 28.09.2009 - 12:07 Uhr in
Hallo liebe Drupaler,
ich habe z.Zt folgendes Problem:
Ich möchte in den Block "primary blocks" unter das Navigationsmenü ein Bild packen, dieses Bild soll aber auf jeder Seite ein anderes sein.
Dazu kommt, dass auf der Startseite noch ÜBER dem Titel eine Zeile erscheinen soll, in der nach jedem Refresh ganz "random" ein neues Zitat erscheint.
Ist das irgendwie umsetzbar?
Vielen dank für die Hilfe,
Sam
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi Sam, Bei den Sprüchen
am 28.09.2009 - 13:44 Uhr
Hi Sam,
Bei den Sprüchen gehe ich davon aus, dass du sie in einer separaten Tabelle hast. Dann könntest Du einen Block machen und folgenden php-Code einfügen:
<?php
$query_spruch = db_query(db_rewrite_sql("SELECT min(id) minid, max(id) maxid FROM {x_sprueche} WHERE aktiv=1"));
$data = db_fetch_object($query_spruch);
$minid = $data->minid;
$maxid = $data->maxid;
srand((double)microtime()*1000000);
$rndid = rand($minid,$maxid);
$query_spruch = db_query(db_rewrite_sql("SELECT max(id) maxid FROM {x_sprueche} WHERE id <=$rndid AND aktiv=1"));
$data = db_fetch_object($query_spruch);
$aktid = $data->maxid;
$query_spruch = db_query(db_rewrite_sql("SELECT spruch, quelle FROM {x_sprueche} WHERE id = $aktid"));
$data = db_fetch_object($query_spruch);
$spruch = $data->spruch;
$quelle = $data->quelle;
print "<em>$spruch</em>";
if ($quelle != "") print "<br /><small>($quelle)</small>";
?>
In meiner tabelle x_sprueche sind 3 Felder: spruch, quelle, und aktiv. Der Code ist nicht ganz effizient, sollte Dir aber sinngemäss weiterhelfen.
Bei den Random-Bildern kann man auch einen Block machen mit z.B. so einem Code, der eines von 5 fixen Bildern auswählt (Hinweis: hier ist der Pfad fix codiert, man sollte hier eine Drupalvariable verwende, die ich grad nicht zur Hand habe):
<?php
srand((double)microtime()*1000000);
$rndid = rand(1,5);
$bild = "";
if ($rndid == 1) $bild = "a1.jpg";
if ($rndid == 2) $bild = "a2.jpg";
if ($rndid == 3) $bild = "a3.jpg";
if ($rndid == 4) $bild = "a4.jpg";
if ($rndid == 5) $bild = "a5.jpg";
print "<img src='/sites/all/images/".$bild."'>";
?>
hope it helps
lg leda
***************************************************
"Du liebst es, Du brauchst es oder Du gibst es weg"
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Hey leda, danke schonmal
am 28.09.2009 - 13:53 Uhr
Hey leda,
danke schonmal für die Hilfe :)
Habe aber eine Frage bezüglich deines Codes für die Bilder:
Das Problem ist(und ich entschuldige mich unendlich mal für's nicht erwähnen), dass das Menü flexiebel ist, wäre das ein Problem?
Achso und mit PHP bin ich jetz nicht so vertraut, wo genau füge ich diese codes ein?
Edit:
In einer Tabelle habe ich die Zitate nicht, wenn du mir sagen könntest, wie ich das mache, würde sich das aber einrichten lassen.
Du solltest für die Bilder
am 28.09.2009 - 14:47 Uhr
Du solltest für die Bilder auch einen *neuen* Block machen und den unter den Block des Menus in die linke Seitenleiste setzen.
Den Code selbst gibt Du im Blockinhalt ein, stellst aber das Eingabeformat auf "PHP-Code".
Wie hast Du dir das mit den Zitaten überhaupt vorgestellt, woher die kommen sollten?
Nachtrag: Aber falls die Sprüche Nodes sein sollen, dann wäre CCK und Views das Tool Deiner Wahl. Man kann eine Blockview machen, welche eine Randomanzeige bringt.
Es kommt halt drauf an, wieviel man handstricken möchte/kann, oder ob man auf die Bordmittel von Drupal zugreift, was aber nicht ganz einfach ist (vom Einstieg her).
lg leda
***************************************************
"Du liebst es, Du brauchst es oder Du gibst es weg"
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Mhmm das mit den Zitaten ist
am 28.09.2009 - 14:51 Uhr
Mhmm das mit den Zitaten ist nicht aus meinem Mist gewachsen, sondern kommt von meinem Chef.
aber das mit dem CCK und den Views versuch ich mal, danke :-)
Das mit den Bildern habe ich so umgesetzt aber hat nicht Funktioniert. Mir wurde der vollständige PHP-Code ausgespuckt. Könnte das an TinyMCE liegen?
Aber trotzdem nocheinmal vielen dank.
TinyMCE kenne ich nicht,
am 28.09.2009 - 16:54 Uhr
TinyMCE kenne ich nicht, aber offenbar wird der Code nicht interpretiert. Findest Du im Block, unterhalb des Blockinhalts das Eingabeformat "PHP Code" und ist es auch aktiviert?
lg leda
***************************************************
"Du liebst es, Du brauchst es oder Du gibst es weg"
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
TinyMCE ist ein Texteditor
am 29.09.2009 - 08:15 Uhr
TinyMCE ist ein Texteditor ^^
Das Eingabeformat "PHP Code" finde ich, aktiviert ist es auch. Aber funktionieren tut es trotzdem nicht.
Naja danke für den Versuch. Vielleicht hat ja noch jemand anders eine Idee ...
Anderen Editor nehmen
am 29.09.2009 - 09:02 Uhr
Wenn ich in Textfelder Code eingeben will, brauche ich keinen WYSIWYG Editor, der mir evtl den Code verhaut. Da sollte man auf einen einfacheren Editor, wie den BU-Editor umsteigen (evtl nur für einen Development User aufsetzen). Dann klappt das auch mit dem PHP-Code in den Textfeldern.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Das geht leider nicht, da
am 29.09.2009 - 10:16 Uhr
Das geht leider nicht, da unsere Kundin den Editor braucht um neue Seiten besser einzufügen.
Ich könnte ja theoretisch über den "disable rich-text" link das Modul deaktivieren,
aber das funktioniert nicht. Darüber hinaus, habe ich immernoch keine Lösung für mein Problem :-(
Danke trotzdem, für die Hilfe.
Da Dein "Problem" recht
am 29.09.2009 - 10:27 Uhr
Da Dein "Problem" recht mager umschrieben ist, wirst Du hier auch keine "Lösung" finden.
Wie bereits gesagt, mit CCK und Views kannst Du OHNE PHP die Sache mit den Sprüchen hinkriegen.
Für die Bilder könntest Du auch nach einem Modul im Stile eines "Ad-Rotator" suchen.
Wenn Deine Kundin den Editor für Pages brauchst, kannst Du Dir für Deine Zwecke auch einen eigenen Inhaltstyp machen und
*diesem* das PHP-Format freischalten (vorausgesetzt, der TinyMCE ist pro Inhaltstyp nutzbar, das weiss ich wie gesagt nicht).
lg leda
***************************************************
"Du liebst es, Du brauchst es oder Du gibst es weg"
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Eigene Rolle
am 29.09.2009 - 10:44 Uhr
Ich habe ja auch nur gesagt, daß Du eine eigene Rolle für solche Zwecke aufsetzen kannst. Die benutzt dann nur den BU-Editor und kann den PHP code eingeben. "Normale User" würde ich ohnehin nie an PHP Code basten lassen, da damit leicht die ganze Seite stillgelegt werden kann.
Definiere doch einfach für die Sprüche einen eigenen Datentyp. Erzeuge mit Views einen Block der zufällig einen Spruch heraussucht. Diesen Block plazierst Du, wo Du möchtest. Das geht bestimmt auch ganz ohne PHP Code.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
So nocheinmal danke für die
am 29.09.2009 - 14:14 Uhr
So nocheinmal danke für die ganzen Hilfen.
Habe mir da nochmal so meine Gedanken drum gemacht und ein "Prinzip" mir überlegt, nachdem das alles funktionieren könnte.
Weiß halt nur nicht, wie sich das umsetzen lässt und hoffe da kann mir hier einer Helfen.
Also das Prinzip wäre:
Jeder Menüpunkt setzt eine Variable "Page" auf einen bestimmten Wert. z.B.:
Menüpunkt 1 | Page = 1
Untermenüpunkt 1 | Page = 1.1
Untermenüpunkt 2 | Page = 1.2
Menüpunkt 2 | Page = 2
...usw...
Jetzt müsste man doch Sinngemäß "nur" einen Code Formulieren der folgendes aussagt:
If
variable 'page' = 1
print image 'p1.jpg'
Else
nothing
If
variable 'page' = 1.1
print image 'p1.1.jpg'
Else
nothing
If
variable 'page' = 2
print image 'p2.jpg'
Else
nothing
Ist der Gedankengang richtig? Wahrscheinlich müssten jetzt die richtigen "Programmierer" mal hier rein schauen. Ist mir halt nur so in den Kopf gekommen und bringt eventuell was.
Wozu?
am 29.09.2009 - 14:46 Uhr
Warum eine Variable aufsetzen, wenn Du doch für jedes Menüitem bereits einen Pfad hast, mit dem Du arbeiten kannst. Wenn Du schon mit PHP spielen willst, nimm Dir Views, definiere eine Block-Ansicht und als Argument den Pfad der Seite, auf der der Block gezeigt wird. Dieses Argument kannst Du über PHP an den View übergeben und danach ein Bild oder einen Spruch ausgeben lassen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Zitat: Warum eine Variable
am 29.09.2009 - 15:07 Uhr
Warum eine Variable aufsetzen, wenn Du doch für jedes Menüitem bereits einen Pfad hast, mit dem Du arbeiten kannst.
Weil ich gern umständlich denke :-D
Gut, das habe ich nur teilweise verstanden. Also ich habe jetzt bei Views folgende Eingaben gemacht:
Name: Bilder
Zugriff: Administrator
Block bereitstellen (Haken)
Ansichtstyp: Vollständige Nodes
Nodes pro Block: 1
Argumente: ->Node ID -> Alle Werte Anzeigen -> http://meinewebseite.de/drupal/?q=node/6 -> equal
so ... funktioniert nicht so wirklich, ich komme aber auch nicht weiter.
Wollte diese Views extra umgehen, weil ich das nicht ganz verstehe. Kannst du mir vielleicht erklären, wie ich das mache? Wäre echt nett :)
Mal sehen, ob das weiter hilft?
am 29.09.2009 - 15:28 Uhr
Um ehrlich zu sein, ich habe die bisherigen Antworten nur überflogen, aber als ich deine Frage sah, ist mir sofort dieses Viedo eingefallen: http://mustardseedmedia.com/podcast/episode12
Das sollte eigentlich beide Probleme von dir lösen, meine ich.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Nicht als Argument sonder
am 29.09.2009 - 15:29 Uhr
Nicht als Argument sonder als Filter nehmen: Bei Filter über Node den Node-Typ wählen und dann die Zufälligkeit bei Sort auswählen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
So ich hab es dann
am 30.09.2009 - 13:42 Uhr
So ich hab es dann letztenendes doch über PHP gelöst.
Für all jene, die es auch wissen wollen, an der Stelle, an der die Bilder erscheinen sollen folgenden Code in der page.tpl.php einfügen (falls vorhanden auch in der page-front.tpl.php):
<?php
if ($node->nid == Nummer der Node) {
echo '<img src="Pfad zum Bild">';
}
else {
if ($node->nid == Nummer der Node) {
echo '<img src="Pfad zum Bild">';
}
else {
;
}
}
?>
Das kann beliebig häufig wiederholt werden.