コンポーネントからドキュメントの<head>
を取得してraw
ビュー内で使用することは可能ですか?
format=raw
を使用する場合、コンポーネントが返すものだけをドキュメントに出力することができます(つまり、他のモジュールやテンプレートなどはありません)。
テンプレートのビット(特に<head>
)を含むコンポーネントのビューを作成し、コンポーネントが生成するものだけを作成しようとしています(これをCLIユーティリティwkhtmltopdf
に渡す予定です) PDF)を生成します。
私のコンポーネントはスタイル設定のためにテンプレートCSSに依存しているのでhead
が必要ですが、他には何も必要ありません-基本的に:
<html>
<head>
...css, js, title, etc from template...
</head>
<body>
...ONLY output from my component, like 'format=raw'...
</body>
</html>
これは、期待どおりに実行する方法です。
view.raw.php
は次のようになります。
<?php
defined( '_JEXEC' ) or die;
class YOURCOMPONENTViewYOURVIEW extends JViewLegacy // or JView depends on J! version
{
public function display($tpl = 'raw')
{
parent::display($tpl);
}
}
default_raw.php
tmpl
フォルダー内のファイルは次のようになります。
<?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>'
Afaik、JDocumentRawには<head>
はありません。未加工の形式は、テンプレートをまったく読み込まずに、HTML以外の出力を生成することを目的としています。
テンプレートデザインを使用してコンポーネント出力をHTMLページとしてのみ生成する場合は、URLに&tmpl=component
を追加する必要があります。これにより、component.php
ではなくindex.php
ファイルがテンプレートに読み込まれます。モジュールの位置を読み込まず、コンポーネントのみを出力します。これは、モーダルウィンドウなどで特に役立ちます。