Dahil olan dosya göreli yolları tutarken html içerir

0 Cevap php

Have several html snippets that I want included in a 'parent' file.
The parent file contains relative paths.
These snippets also contain relative paths, relative to their location - not relative to the file they will be included into.
For example, one snippet is the header, common to all pages on the site.

<div style='background:url(img/bg.jpg)'>
  <img src='img/logo.png'>
</div>

Bu, aşağıdaki gibi mevcut sayfanın içine sokulacaktır:

  <div style='background:url(img/gradient.jpg)'>
    <?php include '../includes/header.txt'; ?>
  </div>

Example is very greatly simplified, the actual files have many paths.
I am NOT in control of the files that will be included.
Which means I cannot add PHP variables to the urls.

I also cannot make the paths absolute in any way.
For the included files - because I have no control over the html.
For all files - because the final pages are dev'd on several machines, and must work whether at http://www.mysite/myfile, http://localhost/mysite/myfile, or even http://127.0.0.1/~/anyuser/...

Ben yaşadım bazı fikirler:

  1. php include: include '../includes/header.txt';
    • Yollar o içine dahil edilmiştir dosyaya göreli çıkıyor.
  2. Including each snippet as an iFrame:
    • Sayfa düzeni çok iFrame kolay değil. SEO ve yanında sayfa yükleme sorunları.
  3. Parsing the page and replacing all paths using a parser.
    • Sayfaları% 100 geçerli HTML (onlar üzerinde hiçbir kontrolü) ve ölü üzerinde çözümleyici öksürükler ve rulo değil. Saçma sunucu yükü yanında.
  4. Using base tags
    • Works beautifully in every real browser.
      But Internet Explorer 7, 8, and 9 just ignore the base tag (outside the head). One base tag could be declared in the head, but then all the other paths on the page (and probably in the CSS files) will be all wrong.

BaseTag Kullanımı:

<?php
  echo "<base href='$path_to_includes_folder' />";
  include '../includes/header.txt';
  echo "<base href='$path_based_on___file__' />";
?>

As I understand, this exactly why the base tag was created, and is supported in every decent browser - so that we can, in the middle of one HTML file, tell the browser that I am about to include a second HTML file, and all paths should be relative to the new location. This worked beautifully in IE6, and I assume there must have been some logic in dropping support for it. Some logic which escaped Opera, Webkit, and Mozilla. The only posts I can find on the subject laud Microsoft for dropping support, without giving even a hint of a reason why dropping support for something which is an accepted standard (in use in all browsers of the time) and useful is a good thing.

Şimdi, ben bir tutku ile IE için gelişmekte nefret ediyorum, ama bunu göz ardı edemeyiz. Onlar hala kullanıcılarının neredeyse 1/3 'var!

Peki, nasıl göreli yolları ile php parçacıklarını içerir ve dosya dahil edilmeden göreli onları tutmak için?

Tüm MS taban desteği düştü, ya da ne geri almak için yapılabilir herhangi bir neden varsa ve kimse bana söyleyebilir misiniz?

0 Cevap