2010-12-17 9 views
1

Hallo Leute Ich suche Hilfe beim Umschreiben des Bildpfads.wie man den Bildweg umschreibt

Lassen Sie mich erklären .....

Lets sagen, dass ich zwei Anwendungen am Laufen. APP-A und APP-B. Meine APP-A hat ein Plug-in installiert, das die Ausgabe des Menüs im einfachen HTML-Format generiert und als HTML-Datei speichert.

Ich möchte jetzt diese HTML-Datei in meine APP = B importieren und es als Menü dafür verwenden. Die HTML-Datei sieht ungefähr so ​​aus .....

<div class="menu"> 
<li class="item27 parent root" > 
    <a class="daddy item image subtext" href="/xyz/cms/index.php> 
    <span> 
     <img src="tmpl/abc_template/images/icons/icon.png" alt="icon1.png" /> 
     Link 1 <em>subline</em> 
    </span> 
    </a> 
    </li> 
    <li class="item27 parent root" > 
    <a class="daddy item image subtext" href="/xyz/cms/index2.php> 
     <span> 
     <img src="tmpl/abc_template/images/icons/icon.png" alt="icon2.png" /> 
     Link 2 <em>subline</em> 
     </span> 
    </a> 
    </li> 
    <li class="item27 parent root" > 
    <a class="daddy item image subtext" href="/xyz/cms/index3.php> 
    <span> 
     <img src="templ/abc_template/images/icons/icon.png" alt="icon3.png" /> 
     Link 3 <em>subline</em> 
    </span> 
    </a> 
    </li> 
</div> 

ich diese Datei in meine APP-B am Import von require_once('../../app-a/menu.html');

Datei mit aufkommt gut, aber ich habe Probleme mit den Bildpfaden . Diese Pfade werden relativ zur APP-A erzeugt und ich möchte sie so ändern, dass meine APP-B sie von der richtigen Stelle bekommt.

Zum Beispiel, nachdem ich importieren Sie die Datei in APP-B,

ich meine APP-B lesen möchten hinzufügen ../../ vor den Bildpfade, so dass diese Wege:

<img src="tmpl/abc_template/images/icons/icon.png" alt="icon1.png" /> 
<img src="tmpl/abc_template/images/icons/icon.png" alt="icon2.png" /> 
<img src="tmpl/abc_template/images/icons/icon.png" alt="icon3.png" /> 

wie diese Wege

werden
<img src="../../tmpl/abc_template/images/icons/icon.png" alt="icon1.png" /> 
<img src="../../tmpl/abc_template/images/icons/icon.png" alt="icon2.png" /> 
<img src="../../tmpl/abc_template/images/icons/icon.png" alt="icon3.png" /> 

Mit freundlicher Hilfe. Ich verwende eine Vorlage, die jQuery unterstützt. Daher reicht sogar eine jQuery-Lösung aus.

+0

Ist APP-A Plugin ein einfaches PHP-Skript? Sie können das nicht aktualisieren? – ajreal

Antwort

1

Hmm ... ich jQuery Lösungen immer genießen ...

$(function() { 
    $('.menu img').each(function() { 
     img_path = $(this).attr('src'); 
     $(this).attr({'src': '../../' + img_path}); 
     }); 
    }); 

getestet und funktioniert.

+0

Ich würde empfehlen, die Korrektur auf dem Server-Ende, obwohl (für seo Zwecke). Suchmaschinen werden die geänderten Bildpfade nicht aufnehmen. – 65Fbef05

+0

Vielen Dank das war cool. Ich benutze diese Funktion, um sie als akzeptiert zu markieren. –

1

Wahrscheinlich der einfachste Weg wäre einfach eine symbolische Verbindung auf dem Server zu erstellen.

ln -s tmp1 ../../tmp1

Angenommen, es ist ein Linux/Apache-Server. Oder Sie könnten auch eine Alias-Definition in Ihren Apache-Konfigurationen vornehmen oder dasselbe mit .htaccess.

Sonst müssen Sie anfangen, HTML zu hacken und es im laufenden Betrieb neu zu erstellen, wozu ich sicher bin, dass es mehrere Bibliotheken gibt, mit denen Sie das tun können, aber wahrscheinlich eigene Vorbehalte und Sicherheitsprobleme haben.

1

Wenn Sie nur eine schnelle Lösung wollen, werden Sie wahrscheinlich mehr Erfolg haben das Menü HTML-Datei in einen String zu lesen:

$menuString = file_get_contents('../../app-a/menu.html');

Dann können Sie einen regulären Ausdruck verwenden, um Ihren relativen Pfad zu dem hinzufügen Beginn jedes src-Tags.

preg_replace('%"tmpl/%is', '"../../tmpl/', $menuString);

Dieser reguläre Ausdruck ist nicht sehr robust, aber es sollte Ihnen einen Ausgangspunkt geben.

+0

Hey vielen Dank für die Antwort. Das klingt nach etwas, was ich tun kann. Nur noch eine Hilfe ......... nachdem ich preg_replace gemacht habe, wie lege ich diese neuen Inhalte in meinen APP-B Code?Ich meine, was wird die Syntax für das gleiche sein. Bitte beachten Sie, ich bin ein Anfänger in der Programmierung und habe gerade angefangen zu lernen. –

+0

Wo Sie zuvor die Anweisung require_once hatten, können Sie nun 'echo $ menuString;' schreiben und das Menü HTML auf die Webseite drucken. – Andrew

+0

Vielen Dank, dass wirklich funktioniert –