it-swarm-es.tech

Obtener la cabeza de la plantilla actual del componente

¿Es posible recuperar el <head> de un documento de un componente y luego usarlo dentro de una vista raw?

Sé si usas format=raw puede hacer que el documento solo muestre lo que devuelve el componente (es decir, sin ningún otro módulo, plantilla, etc.)

Estoy tratando de crear una vista para mi componente que incluya un poco de la plantilla (específicamente el <head>) y luego solo lo que genera mi componente (planeo pasar esto a una utilidad CLI wkhtmltopdf para generar un PDF de la salida).

Necesito el head ya que mi componente se basa en la plantilla CSS para el estilo, pero no quiero nada más, básicamente:

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

Esta es una forma de realizarlo como espera:

Los view.raw.php sería algo como esto:

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

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

Los default_raw.php el archivo dentro de la carpeta tmpl sería algo como esto:

<?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, no hay <head> en JDocumentRaw. El formato sin formato está destinado a generar resultados que no sean HTML, sin cargar la plantilla.

Si solo desea generar la salida del componente como una página HTML utilizando el diseño de la plantilla, debe agregar &tmpl=component a la URL. Esto cargará el component.php archivo en su plantilla en lugar de index.php. No debe cargar ninguna posición del módulo y solo generar el componente. Esto es especialmente útil para ventanas modales y similares.

2
Bakual