Wird der Multimedia-CP verwendet um eine intern geladene (Dateizentrale) Flash-SWF-Datei anzuzeigen, wird die Datei im Frontend nicht angezeigt.
Der Grund für dieses Verhalten ist der Schutz des Verzeichnisses ”/filearchive/” durch eine .htaccess Datei.
Es gibt zwei Lösungen für dieses Problem:
1. Die .htaccess Datei deaktivieren
2. Script: Kopieren der gewünschten Datei in ein nicht geschütztes Verzeichnis und bereitstellen der Datei aus diesem Verzeichnis heraus
Ich spreche hier die zweite Methode an.
Script:
Während des CP Aufrufs ermittelt das Script den relevanten Dateiname aus dem HTML-Quelltext und sucht diese Datei im nicht geschützten Verzeichnis. Wenn diese Datei dort nicht existiert, wird eine Kopie der Datei aus ”/filearchive/” in ”/content/tmp/” angelegt und der HTML Quelltext an den neuen Verzeichnisnamen angepasst.
<note> Wenn die Originaldatei in ”/filearchive/” gelöscht wird, bleibt die Kopie in ”/content/tmp/” erhalten !!</note>
Docu: –
Forum: Flash swf file doesn't display in multimedia content part
Autor: K.Heermann (flip-flop) http://planmatrix.de
CMS Version: >= 1.4x
Version: V1.0 (07.09.2010)
Bedingung: → /config/phpwcms/conf.inc.php
Für eine bessere Identifizierung und Laufzeitoptimierung muss <!--COPY_SWF//--> in das Template eingesetzt werden.
Datei: template/inc_cntpart/multimedia/copy_swf.tmpl
[MULTIMEDIA] <!--COPY_SWF//--> <div class="multimedia"> {MULTIMEDIA} </div> [/MULTIMEDIA]
Datei: /template/inc_script/frontend_init/cp_trig_multimedia_copy_swf.php
cp_trig_multimedia_copy_swf.php
<?php // ------------------------------------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");} // ------------------------------------------------------------------------------------------- /** * ***************************************************************************** * SWF file: the files in the directory /filearchive/ are protected by an htaccess file * If you want to give up this protection, this script can be used. * Copy SWF file from folder /filearchive/ into the folder /content/tmp/ * V1.0 07.09.10 K.Heermann http://planmatrix.de * * ---- Template ------------------------------------------ * Please insert <!--COPY_SWF//--> into your multimedia * template for a better identification of this CP. * * folder: /template/inc_cntpart/multimedia/ * * [MULTIMEDIA] <!--COPY_SWF//--> <div class="multimedia"> {MULTIMEDIA} </div> [/MULTIMEDIA] * * ***************************************************************************** */ function CP_MULTIMEDIA_COPY_SWF($text, & $data) { // CP type multimedia = 9 if( $data['acontent_type'] == 9 AND strpos($text, '<!--COPY_SWF//-->') ) { // Is there any swf file in source? if (preg_match('@value="'.PHPWCMS_FILES.'(.*?)\.swf"@i', $text, $filename)) { // Yes it is and we have catched the filename if ($filename[1] ) { $source = PHPWCMS_FILES.$filename[1].'.swf'; // Source dir and filename $target = 'content/tmp/'.$filename[1].'.swf'; // Destination dir and filename $error = false; // file already exists in destination dir? if (!is_file ($target)) { // No, please copy into if (!copy($source, $target)) { $error = true; } } // Change folder in html source $text = preg_replace('@="'.$source.'"@i','="'.$target.'"',$text); } } if ($error) str_replace('<!--COPY_SWF//-->','Error while copying the file!!<br>',$text); else str_replace('<!--COPY_SWF//-->','',$text); } return $text; } // ---- END function register_cp_trigger('CP_MULTIMEDIA_COPY_SWF'); ?>