2012-03-25 22 views
2

drupalの "基本ページ"の内容をレンダリングしたいと思います。 displaying a Drupal view without a page template around itが、Drupalの7Drupal 7でテンプレートを使わずにDrupalページを表示する

のために私の試みは、ほぼ動作します:

function mytheme_preprocess_page(&$variables, $hook) { 
    if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { 
     $variables['theme_hook_suggestions'][] = 'page__ajax'; 
    } 
} 

そしてtemplate.phpが住んでいる同じディレクトリにpage--ajax.tpl.phpという名前のファイルがあります:

<?php print $page['content']; ?> 

をこの質問のようなもの問題は、サイドバーからメニューと2つのカスタムブロックをレンダリングすることです。私はページの内容だけを必要とします。私は何を変えるべきですか?

答えて

6

あなたはほぼそこにいます。必要なのは、カスタムHTMLラッパーテンプレートを追加することだけです。

  • template.phpに機能を追加します:
function THEMENAME_preprocess_html(&$variables, $hook) { 
    if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { 
    $variables['theme_hook_suggestions'][] = 'html__ajax'; 
    } 
} 
  • html--ajax.tpl.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" 
    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">` 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <?php print $styles; ?> 
    <?php print $scripts; ?> 
</head> 
<body class="<?php print $classes; ?>"> 
    <?php print $page_top; ?> 
    <?php print $page; ?> 
    <?php print $page_bottom; ?> 
</body> 
</html> 
  • という名前のファイルをフラッシュし、すべてのキャッシュを作成します。それで全部です。 Ufonion Labs社の回答に基づいて
+0

表示するブロックを担当して使用します。あなたのリンクからコードを入力しました。なぜなら、正しい解決策が死んだリンクにあったのを見つけるよりも、将来の人にとって悪いことはないからです:)。私はすぐにあなたの提案を試み、あなたに戻ってきます。 –

+0

また、<?php print $ page;を試してみてください。 ?>何もせずに(このファイルの最初のバージョンだったので)。ありがとうございました。 –

+0

残念ながら、これは機能しませんでした。私は全く同じ出力を得る。 'html-ajax'と' page-ajax'テンプレートの両方が(HTMLコメントを出力することによって)使用されていることを確認しました。私が考える問題は、ブロックがページアヤックスの '$ page ['content']'の一部であるように見えるので、とにかくレンダリングされるということです。 –

3

私は私のテーマはこのように、template.php完全 にhook_preprocess_pagehook_preprocess_htmlの両方を実装する によってDrupalの7のページコンテンツの周り すべてのHTML出力を削除することができました:

function MY_THEME_preprocess_page(&$variables) { 
    if (isset($_GET['response_type']) && $_GET['response_type'] == 'embed') { 
    $variables['theme_hook_suggestions'][] = 'page__embed'; 
    } 
} 

function MY_THEME_preprocess_html(&$variables) { 
    if (isset($_GET['response_type']) && $_GET['response_type'] == 'embed') { 
    $variables['theme_hook_suggestions'][] = 'html__embed'; 
    } 
} 

は、その後、私は私のテーマに2つのテンプレートを追加しました:html--embed.tpl.php

<?php print $page; ?> 

page--embed.tpl.php:私は、このようなhttp://example.com/node/3としてノードのページを開いたとき、私はresponse_type パラメータを追加するとき

<?php print render($page['content']); ?> 

は今、私はそのようなhttp://example.com/node/3?response_type=embedとして、いつものように完全なページ を参照してください、しかし、私は のみ<div>をページの内容で取得し、別のページに埋め込むことができます。ここ

臆面もなく撮影したフォーム: displaying a Drupal view without a page template around it(Drupalの7のための次善の答え)。

アレクセイ・ソリューションは、まだページテンプレートウィッヒは、リスト項目がパーサを混乱

関連する問題