[Gelöst] Globalen Inhaltsblock mit Parametern aufrufen?

Hilfe zu Modulen und Tags
Post Reply
kris29
Forum Members
Forum Members
Posts: 53
Joined: Wed Dec 10, 2008 10:56 pm

[Gelöst] Globalen Inhaltsblock mit Parametern aufrufen?

Post by kris29 »

Hallo

Um mehrere Videoclips inkl. Player auf einer Seite einzubinden, erzeuge ich bisher für jede Videodatei einen eigenen Globalen Inhaltsblock mit dem entsprechenden Code (JW FLV Player, swfobject, ...).

Nun meine Frage. Wäre es möglich nur einen Globalen Inhaltsblock zu erstellen und Parameter, wie z.B. den Dateinamen der Videodatei als Variablen anzuhängen?

Beispiel:

Code: Select all

{global_content name='Videoplayer' dateiname='...' autostart='...' }
"dateiname" und "autostart"  die Variablen um die es geht.

Ich könnte mir vorstellen mein Anliegen ist mit Smarty leicht zu lösen. Leider bin ich darin nicht so fit und brauch eure Hilfe. Danke.
Last edited by kris29 on Mon Aug 24, 2009 3:38 pm, edited 1 time in total.
NaN

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by NaN »

Dazu müsste man den Tag {global_content} ändern.
Nur mit Smarty allein lässt sich das glaube ich nicht lösen.
kris29 wrote: Um mehrere Videoclips inkl. Player auf einer Seite einzubinden, erzeuge ich bisher für jede Videodatei einen eigenen Globalen Inhaltsblock mit dem entsprechenden Code (JW FLV Player, swfobject, ...).
Das finde ich etwas umständlich.
Warum rufst Du das Module nicht im Template auf?
Dann kannst Du den Dateinamen direkt an den Player übergeben.
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by nicmare »

und warum postest du es dann nicht im smarty-unterforum ? :D
kris29
Forum Members
Forum Members
Posts: 53
Joined: Wed Dec 10, 2008 10:56 pm

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by kris29 »

Hm, hast recht. Ich war mir nicht sicher, weil ich dachte mein Problem hätte auch was mit Modulen und Tags zu tun. Verschieben kann ich's leider nun nicht mehr.
kris29
Forum Members
Forum Members
Posts: 53
Joined: Wed Dec 10, 2008 10:56 pm

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by kris29 »

NaN wrote: Warum rufst Du das Module nicht im Template auf?
Dann kannst Du den Dateinamen direkt an den Player übergeben.
Die Videoclips sollen im Content-Bereich der Webseite abgespielt werden. Der User lädt sie ins Verzeichnis "video" und sollte - in meinem Wunschszenario - das Video nun im Editor mittels einer Textzeile {global_content name='Videoplayer' dateiname='...' autostart='...' } einfügen können.

Wie meinst du das mit "das Modul im Template aufrufen"?
NaN

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by NaN »

nicmare wrote: und warum postest du es dann nicht im smarty-unterforum ? :D
kris29 wrote: Hm, hast recht. Ich war mir nicht sicher, weil ich dachte mein Problem hätte auch was mit Modulen und Tags zu tun. Verschieben kann ich's leider nun nicht mehr.
Verschieben können wir es immer noch ;)
Aber ich glaube eben nicht, dass sich das so einfach mit Smarty realisieren lässt.
Dazu müsste man den PHP Code des {global_content}-Tags anpassen (die neuen Parameter als Template Variable einfügen).
Falls es doch mit Smarty gehen sollte, dann verschieben wir es eben dorthin oder machen einen neuen Thread inklusive Lösung auf.
kris29 wrote: Wie meinst du das mit "das Modul im Template aufrufen"?
Für die Seiten, auf denen die Videos abgespielt werden sollen, könnte man einfach ein neues Seiten-Template anlegen.
Der Benutzer lädt das Video mit dem Tiny (oder wie auch immer) hoch und gibt in einem Feld (ein zweiter content block mit dem Parameter oneline=true) nur den Pfad zum Video an (finde ich sogar noch besser als immer den Smarty Code eingeben zu müssen).
Im Template kannst Du dann einfach den SWF Player an der Stelle platzieren wo er sein soll und und übergibst als Variable an den Player den Inhalt des zweiten content blocks.
kris29
Forum Members
Forum Members
Posts: 53
Joined: Wed Dec 10, 2008 10:56 pm

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by kris29 »

NaN wrote: Im Template kannst Du dann einfach den SWF Player an der Stelle platzieren wo er sein soll und und übergibst als Variable an den Player den Inhalt des zweiten content blocks.
Die Lösung mit dem Template klingt gut, setzt aber voraus, dass die Videos immer an der gleichen Stelle erscheinen. Ich wollte die Videos frei zwischen dem Text (im TinyMce) einbinden können. Zum Beispiel in einem Newseintrag, wo es verschieden viele Videos geben kann und der User entscheidet, an welcher Stelle er die Videos in seinem Artikel platziert (ähnlich wie Videopostings in einem Blog).
NaN

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by NaN »

Wie sieht denn der Inhalt des globalen Inhaltsblocks aus?
Rufst Du da noch ein Modul auf oder ist dort nur HTML drin womit Du dann den Player anzeigen lässt?
Wenn PHP keine allzu große Hürde für Dich darstellt, versuch das doch lieber mit einem UDT.

Oder dem Object Tag.
kris29
Forum Members
Forum Members
Posts: 53
Joined: Wed Dec 10, 2008 10:56 pm

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by kris29 »

Der Code vom Inhaltsblock sieht z.Z. so aus:

Code: Select all

<__script__ type='text/javascript' src='mediaplayer/swfobject.js'></__script>
  <div id='mediaspace'><p><a href="http://get.adobe.com/flashplayer">Flash Plugin installieren</a> um den Videoplayer zu sehen.</p></div>

  <__script__ type='text/javascript'>
  var s1 = new SWFObject('mediaplayer/player.swf','ply','480,'280','9','#ffffff');
  s1.addParam('allowfullscreen','true');
  s1.addParam('allowscriptaccess','always');
  s1.addParam('wmode','opaque');
  s1.addParam('flashvars','file={root_url}/uploads/video/clip-01.flv&autostart=false');
  s1.write('mediaspace');
</__script>
Das Object Tag hab ich mir auch schon angeschaut, allerdings hab ich nicht rausfinden können, ob sich auch Video- und MP3-Dateien mit einem Player meiner Wahl abspielen lassen.
NaN

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by NaN »

kris29 wrote: Das Object Tag hab ich mir auch schon angeschaut, allerdings hab ich nicht rausfinden können, ob sich auch Video- und MP3-Dateien mit einem Player meiner Wahl abspielen lassen.
Aber selbstverfreilich. Wozu sollte dieses Plugin denn sonst gut sein?
Auszug aus der Modulhilfe:

Code: Select all

{object type="flash" src='uploads/movie.swf' height='300' width='300' param='quality::low||bgcolor::#ffffff' alt='Download Flash Player'}
Beim Parameter src einfach den Pfad zum Player Deiner Wahl eingeben und bei param die Parameter, die Du an den Player übergeben willst (parameter_name1::parameter_wert||parameter_name2::wert|| ... ).
Wenn Du den Pfad nicht für jedes Video neu angeben willst, kannst Du das Object-Plugin einfach etwas abändern, indem Du in Zeile 22 (innerhalb der Funktion smarty_cms_function_object) einfach folgendes einfügst:

Code: Select all

$params['src'] = "Pfad zum Player Deiner Wahl";
Somit wird generell Dein Player geladen und Du brauchst den Parameter src nicht mehr anzugeben.
Dasselbe könntest Du mit jedem Parameter machen, der sich a) nie ändert und den Du b) nicht immer wieder neu angeben willst.

Wenn Du weiterhin Deine Javascript-Variante verwenden willst, dann sähe der Code für einen UDT ungefähr so aus:

Code: Select all

global $gCms;

$autostart = false;
if(isset($params['autostart']))
	$autostart = trim($params['autostart']);

$file = '';
if(isset($params['file']))
	$file = trim($params['file']);

$output = '
<__script__ type="text/javascript" src="mediaplayer/swfobject.js"></__script>
<div id="mediaspace"><p><a href="http://get.adobe.com/flashplayer">Flash Plugin installieren</a> um den Videoplayer zu sehen.</p></div>
<__script__ type="text/javascript">
	var s1 = new SWFObject("mediaplayer/player.swf","ply","480,"280","9","#ffffff");
	s1.addParam("allowfullscreen","true");
	s1.addParam("allowscriptaccess","always");
	s1.addParam("wmode","opaque");
	s1.addParam("flashvars","file='.$gCms->config['uploads_url'].'/video/'.$file.'&autostart='.$autostart.'");
	s1.write("mediaspace");
</__script>';

echo $output;
Speichere den Spaß unter "Erweiterungen->Benutzerdefinierte Tags" mit Namen ... sagen wir, "video".
Aufgerufen wird er dann z.B. so:

Code: Select all

{video file="video.flv" autostart="false"}
kris29
Forum Members
Forum Members
Posts: 53
Joined: Wed Dec 10, 2008 10:56 pm

Re: Globalen Inhaltsblock mit Parametern aufrufen?

Post by kris29 »

Danke NaN für die Hilfe! Klappt super.

Damit auch mehrere Player auf einer Seite angezeigt werden können, habe ich die id="mediaspace" um eine Zufallszahl erweitert um sie einmalig zu machen.

Code: Select all

global $gCms;

$autostart = false;
if(isset($params['autostart']))
	$autostart = trim($params['autostart']);

$file = '';
if(isset($params['file']))
	$file = trim($params['file']);

$zufallszahl = rand(1, 100);

$output = '
<__script__ type="text/javascript" src="mediaplayer/swfobject.js"></__script>
<div id="mediaspace $zufallszahl"><p><a href="http://get.adobe.com/flashplayer">Flash Plugin installieren</a> um den Videoplayer zu sehen.</p></div>
<__script__ type="text/javascript">
	var s1 = new SWFObject("mediaplayer/player.swf","ply","480","280","9","#ffffff");
	s1.addParam("allowfullscreen","true");
	s1.addParam("allowscriptaccess","always");
	s1.addParam("wmode","opaque");
	s1.addParam("flashvars","file='.$gCms->config['uploads_url'].'/video/'.$file.'&autostart='.$autostart.'");
	s1.write("mediaspace $zufallszahl");
</__script>';

echo $output;
Last edited by kris29 on Mon Aug 24, 2009 3:39 pm, edited 1 time in total.
Post Reply

Return to “Module und Tags”