it-swarm.com.de

Ruft den Kopf der aktuellen Vorlage von der Komponente ab

Ist es möglich, den <head> Eines Dokuments aus einer Komponente abzurufen und in einer raw - Ansicht zu verwenden?

Ich weiß, wenn Sie format=raw Verwenden, können Sie das Dokument nur ausgeben lassen, was die Komponente zurückgibt (d. H. Ohne andere Module, Vorlagen usw.).

Ich versuche, eine Ansicht für meine Komponente zu erstellen, die einen Teil der Vorlage enthält (insbesondere den <head>) Und dann nur das, was meine Komponente generiert (ich plane, dies an ein CLI-Dienstprogramm zu übergeben wkhtmltopdf, um eine PDF der Ausgabe) zu generieren.

Ich brauche die head, da meine Komponente für das Styling auf Template-CSS angewiesen ist, aber ich möchte nichts anderes - im Grunde genommen:

<html>
<head>
...css, js, title, etc from template...
</head>
<body>
...ONLY output from my component, like 'format=raw'...
</body>
</html>
1
codinghands

Dies ist eine Möglichkeit, wie Sie es erwarten:

Das view.raw.php würde ungefähr so ​​aussehen:

<?php
defined( '_JEXEC' ) or die;

class YOURCOMPONENTViewYOURVIEW extends JViewLegacy // or JView depends on J! version
{
    public function display($tpl = 'raw')
    {
        parent::display($tpl);
    }
}

Das default_raw.php Datei in tmpl Ordner würde ungefähr so ​​aussehen:

<?php
defined( '_JEXEC' ) or die;
$url = jUri::base();

$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, TRUE);
$contents = curl_exec($ch);
curl_close($ch);

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($contents);
libxml_use_internal_errors(false);

$xpath = new DOMXPath($dom);
$head = $xpath->query('/html/head')->item(0);
$head = $dom->saveHTML($head);
echo '<html>' . $head . '<body>BLAH BLAH</body></html>'
2
Farahmand

Afaik, es gibt kein <head> In JDocumentRaw. Das Raw-Format soll eine Nicht-HTML-Ausgabe generieren, ohne die Vorlage zu laden.

Wenn Sie die Komponentenausgabe nur als HTML-Seite mit dem Vorlagendesign generieren möchten, sollten Sie der URL &tmpl=component Hinzufügen. Dadurch wird die Datei component.php In Ihre Vorlage anstelle von index.php Geladen. Es sollte keine Modulposition laden und nur die Komponente ausgeben. Dies ist besonders nützlich für modale Fenster und dergleichen.

2
Bakual