2

joomlaのホームページだけにメッセージを表示するにはどうすればよいですか? 私は、site.com/index.php/page や site.com 以外のものではなく、site.com に表示することに興味があります。

私は以下をテストしました:

    <?php $app = JFactory::getApplication(); 
    $menu = $app->getMenu(); 
    $lang = JFactory::getLanguage(); 
if ($menu->getActive() == $menu->getDefault($lang->getTag())) : ?>this is the homepage
    <?php endif; ?>

この

<?php $menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
    echo "this is the homepage";
}
?>

問題は、明らかにホームページではないhttp://site.com/index.php/category/id/78-articleのようなページに「これはホームページです」というメッセージがまだ表示されることです。リンクに index.php があるときはいつでも、上記のコードはそれがホームページに属していると考えているようです。

4

3 に答える 3

2

これは、リンクの「index.php」とは関係ありません。代わりに、http://site.com/index.php/category/id/78-articleのリンクにメニュー項目が関連付けられていないという事実に関連しています。あなたが望んでいることを正確に行うには、コードを少し工夫して、実際のページの情報がホームページの情報と一致することを確認する必要があるでしょう:

$jinput = JFactory::getApplication()->input;
$menu = & JSite::getMenu();
$active = $menu->getActive();
$default = $menu->getDefault();
if (
    $active == $default && 
    $jinput->get('option') == $default->query['option'] && 
    $jinput->get('view') == $default->query['view'] && 
    $jinput->get('id') == $default->query['id']
) {
    echo "This is the homepage";
}

入力で設定されたものに対して、デフォルトのメニュー項目オプション (どのコンポーネント) とビューと ID の値をチェックしています。

http://site.com/index.php/category/id/78-articleこのリンクは id を 78 に設定し、ホームページのメニューで定義されているものからビューとオプションを変更する可能性が高いため、トリガー発生しません。

于 2013-03-07T22:12:22.347 に答える
1

OK、単なるアイデアですが、試してみてください:

if (preg_match('/index\.php$/',$_SERVER['PHP_SELF'])) {
  echo "this is the homepage";
 }
于 2013-03-07T22:00:13.280 に答える
0

これを試してみてください。1. 管理画面から「ホーム」(ホームページです)が割り当てられているメニューを確認します。そこに表示されているリンクをコピーします。それは次のようなものになります

index.php?option=com_somecomponent&view=someview
  1. テンプレートの index.php に移動します。
  2. そこに条件を書きます

    if(JRequest::getVar('option')=='com_something' && JRequest::getVar('view')=='someview'){    //show message    }
    

これでうまくいくはずです!! しかし、覚えておいてください。ホームページのメニューを変更する場合は、それに合わせて変更する必要があります。

于 2015-03-27T09:56:50.020 に答える