Druckversion des Themas

Hier klicken um das Topic im Orginalformat anzusehen

Forum Sefrengo.org _ Entwicklung _ Modulerstellung mit externen Daten

Geschrieben von: FireFlyer Sat. 10. April 2010, 16:25

Hallo,
ich habe angefangen ein Modul zu schreiben, welches den JW-Player einbindet. Klappt auch schon, aber ich bräuchte Hilfe in zwei Punkten:

- ich muss Daten für den Player auf den Server speichern (JS, CSS und Player-Dateien) Wo sollten diese am besten untergebracht werden?
- ich habe eine Verzeichnis und Dateiauswahl im Modul integriert. Bei der Ausgabe dieser Variablen bekomme ich die ID des Ordners, bzw. der Datei zurück. Gibt es hierfür schon eine Funktion, damit ich die beiden zu PFAD/DATEI zusammenführen kann und an das Skript übergeben kann?


Geschrieben von: mvsxyz Sat. 10. April 2010, 17:13

1. Bisher wurde es meines Wissens immer so gehandhabt, dass das Modul (cmsmod-Datei) mit den externen Ressourcen als ZIP zum Download angeboten wird. Diese Ressourcen kannst du dann so aufteilen:

/cms/mod/jwplayer/
/cms/css/
/cms/js/

Alternativ kannst du auch die CSS- und JS-Dateien im Modulverzeichnis unterbringen.

2. Dafür gibt es die API-Klasse DbFile, die du wie folgt benutzen kannst:

QUELLTEXT
$_sf_file =& sf_factoryGetObjectCache('ASSETS', 'DbFile');
$_sf_file->loadByIdupl(<DEINE_IDUPL>);
$_sf_file->getHttppathRelative();
// oder
// $_sf_file->getHttpDirpathRelative().$_sf_file->getFilename();

Geschrieben von: FireFlyer Sat. 10. April 2010, 17:53

Danke für die flotte Antwort. Werd mich zwar nicht mehr heute drüber machen, aber wenn der Geburtstag heute nicht zu heftig wird, dann werde ich morgen dran schrauben!

Geschrieben von: FireFlyer Sun. 11. April 2010, 15:18

Bekomm das leider nicht gebacken mit der API, kannst mir weng helfen?

Fehler:
Fatal error: Call to a member function getHttpDirpathRelative() on a non-object

QUELLTEXT
<CMSPHP>
$width=MOD_VALUE[10];
$height=MOD_VALUE[15];
$path=MOD_VALUE[30];
$file=MOD_VALUE[35];

echo "PFAD-ID: ".$path."<br/>";
echo "DATEI-ID: ".$file;

//$_sf_file->getHttpDirpathRelative(5);
//$_sf_file->getFilename($file);

$_sf_file->getHttpDirpathRelative(5);

print_r($_sf_file);

$myTplVars['player'] = '{player}';

$myPlayer['player'] = "PLAYER-VARIABLEN sind hier";

$myTpl = "MOD_VALUE[5]";
$myTpl = str_replace($myTplVars, $myPlayer, $myTpl);

echo $myTpl;

</CMSPHP>

Geschrieben von: mvsxyz Sun. 11. April 2010, 18:04

Du hast den Aufruf aus meinem Beispiel nicht korrekt übernommen. Schau dir bitte das Beispiel nochmal an und vergleiche deine Zeilen wie du $_sf_file initialisierst und verwendest.

Geschrieben von: FireFlyer Sun. 11. April 2010, 18:54

OK, da hatte ich vor lauter weiter testen einen Bock drin. Hast auf jeden Fall recht, dass es klappt. Nun werden mir anscheinend alle Objekte zu dieser Datei angezeigt!

Auszug daraus:

QUELLTEXT
[filename] => video.flv, usw.


Wie kann ich jetzt nur das eine Objekt [httppath_absolute] ausgeben oder in eine Variable zur Weiterverarbeitung schreiben?

Erklär mir bitte deinen Code:
QUELLTEXT
$_sf_file =& sf_factoryGetObjectCache('ASSETS', 'DbFile');     Initialisierung?
$_sf_file->loadByIdupl(<DEINE_IDUPL>);      auf die bestimmte Datei und deren Objekte zugreifen?
$_sf_file->getHttppathRelative();      hier sollte nur der relative Pfad ausgeben werden?


Geschrieben von: bkm Sun. 11. April 2010, 19:38

echo $_sf_file->getHttppathRelative();

Geschrieben von: FireFlyer Sun. 11. April 2010, 23:01

Danke bkm das klappt so!

Kann mir trotzdem jemand meine Vermutung aus der Code-Box bestätigen oder berichtigen. Muss ja was draus lernen! wink.gif

Geschrieben von: mvsxyz Mon. 12. April 2010, 09:44

QUELLTEXT
// Deklaration der Variable $_sf_file und Initialisierung mit dem API-Objekt DbFile
$_sf_file =& sf_factoryGetObjectCache('ASSETS', 'DbFile');

// Laden der Datei mit der IDUPL aus der Datenbank -> Variable $_sf_file ist folglich mit den Daten der (einen) Datei belegt
$_sf_file->loadByIdupl(<DEINE_IDUPL>);

// Baut den relativen Pfad aus dem Pfad und Dateinamen zusammen und gibt dieses mit return zurück -> kann in Variable gespeichert oder mit echo ausgegeben werden
$_sf_file->getHttppathRelative();

Geschrieben von: bkm Tue. 13. April 2010, 18:17

ZITAT(bkm @ Sun. 11. April 2010, 20:38) *
echo $_sf_file->getHttppathRelative();

Vielleicht langt auch schon in Deinem Fall getHttppathAbsolute ohne es erst wieder neu zubauen.

Geschrieben von: FireFlyer Tue. 13. April 2010, 20:01

Kann sein, aber never change a running Sefrengo Modul smile.gif

Muss ich mal probieren, bin froh, dass es so schon geklappt hat. Jetzt warte ich erst mal auf Feedback zum Modul.

Danke für die stetige Unterstützung!!!

Unterstützt von Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)