2011-02-01 11 views
0

私はJoomla 1.6テンプレートを作成しています。最初のページを他とは違うものにしたいと思います。私は何を期待することは、それのようなものです:joomlaのテンプレートでは、最初のページを記事と異なるページにするにはどうすればよいですか?

<?php 
if(this_page_link_to_an_artcile || this_page_is_not_the_main) { 
    ?> <jdoc:include type="component" /> <?php 
} 
?> 

私は標準テンプレートのいずれかに見えたし、多少一部のページで示したことがないなりその「場合」を見つけようとして失われてしまいました。

答えて

1
// Is Frontpage? 
$option = JRequest::getCmd('option'); 
$view = JRequest::getCmd('view'); 

$frontpage = ($option == 'com_content' && $view == 'featured') 
$is_article = ($option == 'com_content'); 
if ($is_article && !$frontpage) 
{ 
    // ... 
} 

EDIT:!今すぐJoomlaの中で働く1.6)

それは記事ではない場合、それはフロントページではないので($is_article || !$frontpageは常に... trueを返す必要があります依存しています。

+0

あなたの言ったようにほとんど動作しましたが、JRequest :: getCmd( 'view')は「frontpage」ではなく「features」をフロントページに戻していました。 Joomla 1.5との違いかもしれないと思いますよね?さて、今のところ、「機能している」とはフロントページを正しく識別していると思います。しかし、まだ誰かがそれについてコメントしているなら、私は聞いてうれしいです。 –

1

joomlaを使用して複数のテンプレートを作成し、それらを異なるメニュー項目/ページに割り当てることができます。 たとえば、メインテンプレート(記事付き)と別のテンプレート(ホームページのみ)、つまり元のテンプレートを持つことができます。 「ホーム」メニュー項目にリンクされています。

テンプレートマネージャでメニュー項目/テンプレートの割り当てを行うことができます。

+0

私は2つの異なるテンプレートを持っているのではなく、ただ1つのテンプレートを持っていたいと思います。既定のテンプレートの一部が機能するのと同じ方法です。 –

+0

Hmmm私はこのようにしたことはありませんが、ItemIDを取得し、それが「ホーム」ページであるかどうかをチェックし、コンポーネントと表示モジュールを非表示にするか、逆もまた同様です。例。$ menus =&JSite :: getMenu(); $ menu = $ menus-> getActive(); $ itemid = $ menu-> id; – GoofyHTS

+0

しかし、メインページのIDは何ですか?たとえば、今私のページには435ですが、それはいつもそうだとは思いませんよね? –

0

どういう意味ですか? Joomla内のページは、どのコンポーネントとモジュールがロードされているかに応じて異なって見えます。あなたのホームページにはどんなコンテンツがありますか?おそらく、デフォルトのメニューを別のタイプに変更するだけで済みます。

ホームページに構造的な相違がないかぎり、コードを追加する必要はなく、メニュータイプを変更するだけです。

ページ間の構造的な相違に対応するために、必要なときにのみ表示される折りたたみ可能な位置を作成する必要があります。

<?php if ($this->countModules('left')) : ?> 
    <div id="leftcolumn"> 
     <jdoc:include type="modules" name="left" style="xhtml" /> 
    </div> 
<?php endif; ?> 

また、メニュー項目に追加できるページクラス接尾辞パラメータを利用することもできます。これにより、ページ固有のスタイルを追加することができます。私は通常それをテンプレートindex.phpのBODYタグに追加します。

<?php 
$menu = &JSite::getMenu(); 
$active = $menu->getActive(); 
$pageclass = ""; 
if (is_object($active)) : 
    $params = new JParameter($active->params); 
    $pageclass = $params->get('pageclass_sfx'); 
endif; 
?> 
<body id="<?php echo $pageclass ? $pageclass : 'default'; ?>"> 
+0

私は全く違ったレイアウトを意味し、他の列は他の場所に配置されています。 –

+0

それでもテンプレート内のすべてを実行できるはずです。コンテンツがある位置に基づいてページが構築されるように折りたたみ可能な位置を設定することです。私は例として私の答えに少しのコードを追加しています。 –

3

各ページまたはページのグループごとに個別のスタイルを設定したい場合は、これをテンプレートindex.php/head:

に追加することができますその後
<?php $active = JFactory::getApplication()->getMenu()->getActive();?> 

、例えば、bodyタグ内のすべてのページを網羅ラッパーのdivを作る:あなたは、個々のスタイリングをしたい任意のページのスタイルを取得

<body> 
<div class="<?php echo $active->alias; ?> "> 
----- PAGE CONTENT----- 
</div> 
</body> 

その方法。たとえば、「ホーム」ページのために、あなたはCSSであなただけのホームページに表示されます.footer div要素のプロパティを設定する

.home .footer {} 

のプロパティを設定するファイル。

関連する問題