Ich habe mir das ganze mal noch angeschaut und jetzt eine - zumindest bei mir funktionierende - Lösung ohne Änderung vom Core entwickelt. Dazu muss die angehängte Datei domain_preview.php (vorher entpacken) ins Contao-Root kopiert werden und die .htaccess um folgende zwei Zeilen ergänzt werden:
Code:
RewriteCond %{QUERY_STRING} !^r=2
RewriteRule ^contao/preview\.php$ domain_preview.php [QSA,L]
Die beiden Zeilen müsse vor der letzten Rewrite-Regel stehen, sodass es dann bspw. so aussieht:
Code:
RewriteCond %{QUERY_STRING} !^r=2
RewriteRule ^contao/preview\.php$ domain_preview.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
Was macht das ganze?
In der .htaccess wird im ersten Schritt der Aufruf von /contao/preview.php auf /domain_preview.php umgeleitet.
In der domain_preview.php wird jetzt versucht, die Domain zu ermitteln. Das funktioniert momentan beim Bearbeiten einer konkreten Seite, eines Artikels und eines Inhaltselements. Wurde die Domain ermitteln, wird wieder auf /domain_preview.php umgeleitet - diesmal jedoch unter der richtigen Domain. Dabei werden die Anmeldecookies serialisiert mit übergeben.
Beim erneuten Aufruf von domain_preview.php unter der richtigen Domain werden die übergebenen Cookies für diese Domain gesetzt und es wird wieder auf die /contao/preview.php umgeleitet. Durch den Parameter r=2 greift die .htaccess hier nicht und es wird das originale Script aufgerufen.
Da preview.php nun unter der richtigen Domain aufgerufen ist und durch das setzen der Cookies angemeldet sein sollte, wird die Vorschau korrekt aufgerufen.
Quick and Dirty aber bei mir funktioniert es.
Gruß
Lesezeichen