Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Inhalt der "main column" in externer PHP Seite anz

  1. #1
    HTML Newbie
    Registriert seit
    04.09.2005
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Inhalt der "main column" in externer PHP Seite anz

    Wie kann man den Inhalt der "main column" in einer externen PHP Seite anzeigen?

    Ich möchte den Inhalt der "main column" meiner Plone Installation via
    php include in einer div Sektion meiner PHP Site anzeigen. Beide Sites
    haben unterschiedliche Domains.

    Es hat sich herausgestellt, dass man mit einem Python Skript den
    HTTP_REFERER überprüfen kann. Diesen kann man dann als "access rule"
    einsetzen.

    Leider benötige ich aber ein neues "main_template" um sicherzustellen,
    dass auch wirklich nur der nackte HTML Block (ohne Html, Header, Body usw)
    referenziert wird. Dafür muss man scheinbar einen zusätzlichen Skin
    einrichten.


    Hat Irgendjemand eine Idee wie ich das bewerkstelligen kann?

    Vielen Dank im Voraus für Eure Hilfe.

    YouCan
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Kaiserliche Hoheit
    Registriert seit
    22.02.2005
    Beiträge
    1.558
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich möchte den Inhalt der "main column" meiner Plone Installation via
    php include in einer div Sektion meiner PHP Site anzeigen.
    Du meinst dein Plone erstellt die Seite komplett und der Hauptbereich der Seite soll dann von PHP auf einer anderen Domain angezeigt werden?
    "Carpe Diem" powered by positiv Feelings

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    04.09.2005
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von Torty
    Du meinst dein Plone erstellt die Seite komplett und der Hauptbereich der Seite soll dann von PHP auf einer anderen Domain angezeigt werden?
    Ich möchte nur den Artikel (HTML) ohne alles andere. Also nur das was im "main_template" in den nachfolgenden 3 Zeilen steht:

    <metal:bodytext metal:define-slot="main" tal:content="nothing">
    Page body text
    </metal:bodytext>

    ...und auch diesen resultierenden Block OHNE "document actions".

    Die Anzeige in der PHP-Seite ist nicht das Problem.

  4. #4
    Kaiserliche Hoheit
    Registriert seit
    22.02.2005
    Beiträge
    1.558
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Naja - also den Hauptbereich ('main') exportieren. Hmmm...also lass mich mal nachdenken...
    "Carpe Diem" powered by positiv Feelings

  5. #5
    Kaiserliche Hoheit
    Registriert seit
    22.02.2005
    Beiträge
    1.558
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Die folgende Lösung geht davon aus, dass das PHP-Script die Plone-Seite per URL ansprechen also aufrufen kann.

    Die Idee ist folgende:
    Im main_template wird vor und hinter die Slot-Definition 'main' ein eindeutiger Kommentar eingefügt. Dieser wird dann durch PHP gefunden un der dazwischenligende Code extrahiert.

    Schritte im Plone:
    1.) /portal_skins/templates/main_template -> Klicken -> customize
    2.) /portal-skins/custom/main_template folgendes ändern:
    ... * Zeile 139 einfügen:
    ... * Zeile 143 einfügen:
    Dadurch wird der gesamte HTML-Code des Main-Slot von diesen 2 Kommentaren "umrahmt". Diese lassen sich dann per PHP suchen und der dazwischenliegende Code extrahieren.

    Hier ein einfaches Code-Bsp.:
    Code:
    <?
    // ZielURL festlegen
    $ploneURL = "http&#58;//localhost&#58;8282/ziel";
    // Zieldatei einlesen &#40;HTML-Code&#41;
    $ploneHTML = file_get_contents&#40;$ploneURL&#41;;
    // main-Bereich extrahieren
    $extractHTML = substr&#40;$ploneHTML, strpos&#40;$ploneHTML, "##START##"&#41;+13, strpos&#40;$ploneHTML, "##END##"&#41;-5&#41;;
    
    /* ### funktioniert noch nicht ###
    // extrahiert die CSS-Dateien
    $cloneHTML = $ploneHTML;
    $cssStr = "";
    $tok = strtok &#40;$ploneHTML, "<"&#41;;
    while &#40;$tok&#41; &#123;
      if &#40;strpos&#40;$tok, ".css"&#41;&#41; &#123;       // referenziert dies eine CSS-Datei?
        $y = strpos&#40;$tok, "/>"&#41; + 2;   // Ende von <link rel= finden
        $cssStr += "<".substr&#40;$tok, 0, $y&#41;;   // CSS-Datei "merken"
      &#125;
      $tok = strtok &#40;"<"&#41;;
    &#125;
    */
    //  Standard-CSS-Dateien einfügen
    $extractHTML = '
    <link rel="Stylesheet" type="text/css"
          href="http&#58;//localhost&#58;8282/wow/ploneNS4.css" />
    <style type="text/css" media="screen"></style>
    <style type="text/css" media="screen"></style>
    <link rel="alternate stylesheet" type="text/css"
          media="screen"
          href="http&#58;//localhost&#58;8282/wow/ploneTextSmall.css"
          title="Small Text" />
    <link rel="alternate stylesheet" type="text/css"
          media="screen"
          href="http&#58;//localhost&#58;8282/wow/ploneTextLarge.css"
          title="Large Text" />
    <link rel="stylesheet" type="text/css" media="print"
          href="http&#58;//localhost&#58;8282/wow/plonePrint.css" />
    <link rel="stylesheet" type="text/css"
          media="projection"
          href="http&#58;//localhost&#58;8282/wow/plonePresentation.css" />
    <!--&#91;if IE&#93;>
      <style type="text/css" media="all">@import url&#40;http&#58;//localhost&#58;8282/wow/ploneIEFixes.css&#41;;</style>
    <!&#91;endif&#93;-->
    <style type="text/css" media="all"></style>
    <link rel="shortcut icon"
          href="http&#58;//localhost&#58;8282/wow/favicon.ico"
          type="image/x-icon" />
    <link rel="search"
          href="http&#58;//localhost&#58;8282/wow/search_form"
          title="Search this site" />
    '.$extractHTML;
    
    // main-Slot ausgeben
    echo $extractHTML;
    
    ?>
    Leider ist er durch die Sucherei nach den CSS-Dateien nicht sehr perfomant. Da könnte man evtl. mit Hilfe von reg. Ausdrücken noch etwas Tempo reinbringen...Ich habe ihn deswegen auch erstmal auskommentiert. Zudem arbeitet er auch irgendwie nicht korrekt.

    Alternativ könnte man auch einfach die Standard-CSS-Files einfügen und hoffen, dass die Plone-Seite keine weiteren CSS-Dateien einbindet. Dies würde zumindest deutlich schneller gehen.
    "Carpe Diem" powered by positiv Feelings

  6. #6
    HTML Newbie
    Themenstarter

    Registriert seit
    04.09.2005
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von Torty
    Code:
    <?
    // ZielURL festlegen
    $ploneURL = "http&#58;//localhost&#58;8282/ziel";
    // Zieldatei einlesen &#40;HTML-Code&#41;
    $ploneHTML = file_get_contents&#40;$ploneURL&#41;;
    // main-Bereich extrahieren
    $extractHTML = substr&#40;$ploneHTML, strpos&#40;$ploneHTML, "##START##"&#41;+13, strpos&#40;$ploneHTML, "##END##"&#41;-5&#41;;
    // main-Slot ausgeben
    echo $extractHTML;
    ?>
    Daran die ausgegebene Seite per PHP zu filtern hatte ich gar nicht gedacht. Aber so geht es natürlich auch, wenn man den code ein wenig anpaßt.

    Code:
    <?php 
    $ploneURL = "http&#58;//localhost&#58;8282/ziel/"; 
    $ploneHTML = file_get_contents&#40;$ploneURL&#41;; 
    $startHTML = strpos&#40;$ploneHTML, "##START##"&#41;+13;
    $endHTML = strpos&#40;$ploneHTML, "##END##", $startHTML&#41;-5;
    $lengthHTML = $endHTML-$startHTML;
    $tempHTML = substr&#40;$ploneHTML, $startHTML, $lengthHTML&#41;; 
    $startHTML = strpos&#40;$tempHTML, "documentActions"&#41;-12;
    $endHTML = strpos&#40;$tempHTML, "plain", $startHTML&#41;-12;
    $lengthHTML = $endHTML-$startHTML;
    $extractHTML = substr_replace&#40;$tempHTML,"",$startHTML, $lengthHTML&#41;; 
    echo $extractHTML; 
    ?>
    Dieser Skript funktioniert jetzt einwandfrei.

    Vielen Dank für deine freundliche Unterstützung.

    ...youcan

  7. #7
    Kaiserliche Hoheit
    Registriert seit
    22.02.2005
    Beiträge
    1.558
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Gern. Nachteilig ist einzig die etwas langsame Ausführung des PHP. Da kann man vermutlich auch nur wenig ändern...
    "Carpe Diem" powered by positiv Feelings

  8. #8
    HTML Newbie
    Themenstarter

    Registriert seit
    04.09.2005
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von Torty
    Gern. Nachteilig ist einzig die etwas langsame Ausführung des PHP. Da kann man vermutlich auch nur wenig ändern...
    Also langsam ist es momentan nicht.

    Aber ich habe ein Problem mit den relativen Links im Kode.

    Momentan erfolgt die Ersetzung noch recht rudimentär.
    Code:
    $extractHTML = eregi_replace&#40;'src="images/','src="http&#58;//www.domain.com/folder/images/',$extractHTML&#41;;
    Hast du eine Idee wie ich alle enthaltenen URL's (href, src) so modifizieren kann, dass auch komplexe URL's ("/root/folder/" oder "../folder/") korrekt auf absoluten Zugriff umgestaltet werden?

    youcan

  9. #9
    Kaiserliche Hoheit
    Registriert seit
    22.02.2005
    Beiträge
    1.558
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    relative Links sind absolutes Gift für diese Art des "Replacements". Mir fiehle da nur ein, dass man alle href=" prüft, ob sie mit http:// beginnen.
    Falls nicht setzt man die aufgerufene Ziel-URL ein.
    Aber ob das so klappt...
    "Carpe Diem" powered by positiv Feelings

  10. #10
    Gast

    Standard

    Zitat Zitat von Torty
    relative Links sind absolutes Gift für diese Art des "Replacements". Mir fiehle da nur ein, dass man alle href=" prüft, ob sie mit http:// beginnen. Falls nicht setzt man die aufgerufene Ziel-URL ein.
    Aber ob das so klappt...
    Die relativen Links ohne Rücksprünge bearbeite ich zuletzt...
    Code:
    <?php
    //---------------------------------------------------------------------------------------------------
    // $VER&#58; filter_html 1.3 &#40;07-Sep-2005&#41;, &#40;c&#41; by youcan@gmx.net
    //---------------------------------------------------------------------------------------------------
    
    $plonePATH = "";
    
    function fixURL&#40;$pregmatches&#41; &#123;
    	global $plonePATH;
    	return $pregmatches&#91;1&#93; . preg_replace&#40;'&#91;^/?&#40;.*&#41;$&#93;i',"$plonePATH$1",$pregmatches&#91;2&#93;&#41; . $pregmatches&#91;3&#93;;
    &#125;
    
    function filter_body&#40;$ploneURL,$blockPATH&#41; &#123;
    	global $plonePATH;
    	if&#40;substr&#40;$ploneURL,-1,1&#41;=="/"&#41; &#123;
    		$plonePATH = $ploneURL;
    	&#125; else &#123;
    		$plonePATH = dirname&#40;$ploneURL&#41;.'/';
    	&#125;
    	$url_a = parse_url&#40;$plonePATH&#41;;
    	if&#40;$url_a&#91;port&#93;==''&#41; &#123;
    		$ploneDOMAIN = $url_a&#91;scheme&#93;.'&#58;//'.$url_a&#91;host&#93;.'/';
    	&#125; else &#123;
    		$ploneDOMAIN = $url_a&#91;scheme&#93;.'&#58;//'.$url_a&#91;host&#93;.'&#58;'.$url_a&#91;port&#93;.'/';
    	&#125;
    	$ploneHTML = file_get_contents&#40;$ploneURL&#41;;
    	if&#40;$ploneHTML==false&#41; &#123;
    		echo "";
    	&#125; else &#123;
    		$startHTML = strpos&#40;$ploneHTML, "##START##"&#41;+13;
    		$endHTML = strpos&#40;$ploneHTML, "##END##", $startHTML&#41;-5;
    		$lengthHTML = $endHTML-$startHTML;
    		$tempHTML = substr&#40;$ploneHTML, $startHTML, $lengthHTML&#41;;
    		$startHTML = strpos&#40;$tempHTML, "documentActions"&#41;-12;
    		$endHTML = strpos&#40;$tempHTML, "plain", $startHTML&#41;-12;
    		$lengthHTML = $endHTML-$startHTML;
    		$extractHTML = substr_replace&#40;$tempHTML,"",$startHTML,$lengthHTML&#41;;
    		$extractHTML = eregi_replace&#40;'src="/','src="'.$ploneDOMAIN,$extractHTML&#41;;
    		$extractHTML = eregi_replace&#40;'href="/','href="'.$ploneDOMAIN,$extractHTML&#41;;
    		$extractHTML = eregi_replace&#40;'src="../','src="'.dirname&#40;$plonePATH&#41;.'/',$extractHTML&#41;;
    		$extractHTML = eregi_replace&#40;'href="../','href="'.dirname&#40;$plonePATH&#41;.'/',$extractHTML&#41;;
    		$extractHTML = preg_replace_callback&#40;'/&#40;href="|src="&#41;&#40;?!http&#58;|mailto&#58;&#41;&#40;&#91;^"&#93;+&#41;&#40;"&#41;/im',"fixURL",$extractHTML&#41;;
    		echo $extractHTML;
    	&#125;
    &#125;
    ?>
    ...nur die relativen Links die mehrere Rücksprünge (../../) enthalten machen mir Sorgen.

    youcan

Ähnliche Themen

  1. "Bestimmte Seite laden, wenn eingeloggt" Befehl
    Von n!c im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 19.05.2008, 22:30
  2. externer Link im <div id=""></div>
    Von mwarias im Forum HTML & CSS Forum
    Antworten: 4
    Letzter Beitrag: 01.01.2006, 15:46
  3. Antworten: 4
    Letzter Beitrag: 31.08.2005, 09:28
  4. Zugriff auf den Inhalt eines "input"-Tags über VBS
    Von Macintosch im Forum HTML & CSS Forum
    Antworten: 3
    Letzter Beitrag: 06.05.2004, 09:33
  5. Funktion: "Dies Seite einem Freund mailen" einrich
    Von brummi im Forum HTML & CSS Forum
    Antworten: 9
    Letzter Beitrag: 24.04.2004, 18:05

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •