Bilder werden nicht vom Design-Layout angezeigt (Orchard CMS)

7

Ich versuche ein Thema für Orchard CMS zu erstellen. Die Vorlage, die ich habe, wurde nicht dafür gemacht, deshalb habe ich Probleme, Bilder von Layout.cshtml anzuzeigen.

Dies ist die aktuelle Ordnerstruktur auf meinem Webserver (nur Theme-Ordner-Struktur):

Thema / Inhalt / Bilder / Bild.jpg Thema / Ansichten / Layout.cshtml Thema / Stile / Site.css

Die folgende Zeile zeigt kein Bild (in Layout.cshtml):

<img src="../Content/Images/bgBig.jpg" alt="Big background image" />

In dieser Zeile wird jedoch das Bild (in Site.css) angezeigt:

background-image:url('../Content/Images/bgLines.png');

Ich glaube, das Problem besteht darin, dass Layout.cshtml das Bild nicht aus Theme / Views / Layout.cshtml, sondern von dem anderen Ort anzeigt. Wenn jemand weiß, was dieser Ort wäre oder wie er überschrieben werden könnte, wäre ich dankbar.

    
PabloPeškobar 28.03.2011, 22:55
quelle

5 Antworten

11

Wenn Sie Bilder in Layout.cshtml hinzufügen, sollten Sie den vollständigen Pfad zu Ihrem Thema verwenden (zB /Themes/My.Theme/Content/Images/MyImage.jpg ). Beachten Sie, dass die Pfade, die Sie im Tag [img] angeben, relativ zur URL im Browser sind und nicht der Pfad auf dem Server. In MVC sind diese fast nie gleich.

Die Layout.cshtml-Ansichtsdatei wird als Teil jeder einzelnen Anfrage geladen, so dass die relativen Pfade, die Sie einfügen, fast immer unterbrochen werden.

Stellen Sie sich vor, Sie haben zwei Orchard-Seiten: site.com/mypage und site.com/something/mypage . Layout.cshtml wird in beiden gerendert. Relative URLs, die für den ersten funktionieren, werden mit dem Zugriff auf den zweiten wahrscheinlich unterbrochen.

CSS-Stylesheets werden direkt geladen, indem der absolute Pfad zu den physischen Dateien im Ordner / Themes / YourTheme / Styles (Standard) angegeben wird. In diesem Fall funktionieren die relativen URLs.

HTH

    
Piotr Szmyd 29.03.2011, 13:05
quelle
24

Ich könnte etwas spät dran sein, aber das könnte anderen helfen.

Um das aktuelle Thema zu erhalten und dann einen dynamischen Pfad (im Gegensatz zu einem absoluten Pfad) zu erstellen, verwenden Sie Folgendes:

WorkContext.CurrentTheme : Ruft das aktuelle Arbeitsthema ExtensionDescriptor ab.

Geben Sie es dann dem Html.ThemePath URL-Builder: Ex.

%Vor%

Viel Spaß!

Mit freundlichen Grüßen, Tiago.

    
Tiago 20.03.2012 17:44
quelle
5

Thx Tiago für Ihre Lösung. Ich denke, dies ist in der Tat die richtige Lösung, im Gegensatz zur Verknüpfung des vollständigen Pfades, von dem ich denke, dass die Orchard-Site an der Wurzel der Domäne sein müsste.

Die vollständige Bildreferenz der ursprünglichen Frage würde wie folgt aussehen:

%Vor%     
Alexander Rechsteiner 05.12.2012 17:40
quelle
5

Ich bin überrascht, dass niemand erwähnt hat, dass Sie das folgende web.config in dem Ordner benötigen, in dem sich Ihre Bilder / Scripts / Styles befinden ( siehe die Obstbaum-Dokumente )

%Vor%

Darüber hinaus ist dies die zuverlässigste Art, ein Bild zu lokalisieren, wie andere bereits festgestellt haben:

%Vor%     
Mohammad Sepahvand 05.02.2013 20:54
quelle
0

Wenn Sie die Quelle untersuchen, sollte sie Ihnen zeigen, wo sie versucht, das Bild zu finden und zu scheitern. Es ist höchstwahrscheinlich der relative Pfad, mit dem es Probleme hat, versuchen Sie einen absoluten Pfad in der CSS, um zu sehen, ob das das Problem ist. ohne die tatsächliche Website, kann ich nicht sicher wissen.

    
Sam 28.03.2011 23:20
quelle