1

ここで人々の時間を無駄にしないようにしたかったので、Google と forums.joomla.org を使用してみましたが、残念ながら運がありませんでした。これが私の問題です:

私のウェブサイトには、メンバーになるために無料で登録するためのリンクのみを持つランディング ページと、ユーザーが登録後にアクセスする適切なインデックス ページの両方があります。ランディングページを kanadax.ca/ として設定したのは、最初にページにアクセスしたときにそこにランディングしてもらいたいからです。私の実際のインデックス ページは kanadax.ca/index.php にあります。ただし、ユーザーがすでにログインしていて、Web サイトのロゴをクリックしてルート ドメインに移動すると、ページが見つからないというエラーが表示されます。

私がやりたいことは次のとおりです: - 登録されていないゲスト ユーザーの場合、ロゴが kanadax.ca/ にあるランディング ページにリダイレクトされるようにします。- ユーザーが登録されると、kanadax.ca/index.php にアクセスすると、example.com/index.php にリダイレクトされます。

基本的に、ユーザー グループに基づく条件付きリダイレクトを探しています。何か案は?

明らかに、あまり魅力的でない example.com/index.php よりもメインのインデックス ページとして example.com/ url を実際に好むでしょうが、それはリダイレクトを修正した後の 2 番目のステップです。.htaccess でできると思いますが、より複雑なランディング ページ - ゲストおよび登録ユーザー用のインデックス ページ構造では、少し難しいと思います。ただし、この分野についてもフィードバックがある場合は、ぜひフィードバックをお寄せください。

私はphpにあまり慣れていないことを言及しておく必要がありますが、ステップバイステップで教えていただければ、喜んで提案を試みます. 結局のところ、このウェブサイトを作成する最初の目標は学ぶことです。

ありがとうございます!

PS 必要に応じて、テスト アカウントを提供させていただきますので、ご自分で Web サイトを試してみてください。

**編集:

@Adamさん、入力とステップバイステップに本当に感謝しています。それはまさに私が必要としていたものです。これで、最初のセクションを index.php の先頭に配置しましたが、後半については、どこに配置すればよいかわかりません。index.php 内で関連するロゴを検索すると、2 つのセクションが表示されます。

// Logo file or site title param
if ($this->params->get('logoFile'))
{
  $logo = '<img src="'. JURI::root() . $this->params->get('logoFile') .'" alt="'. $sitename .'" />';
}
elseif ($this->params->get('sitetitle'))
{
  $logo = '<span class="site-title" title="'. $sitename .'">'. htmlspecialchars($this->params->get('sitetitle')) .'</span>';
}
else
{
  $logo = '<span class="site-title" title="'. $sitename .'">'. $sitename .'</span>';
}

<div class="header">
        <div class="header-inner clearfix">
          <a class="brand pull-left" href="http://www.kanadax.ca/index.php/anasayfa">
            <?php echo $logo;?> <?php if ($this->params->get('sitedescription')) { echo '<div class="site-description">'. htmlspecialchars($this->params->get('sitedescription')) .'</div>'; } ?>
          </a>
          <div class="header-search pull-right">
            <jdoc:include type="modules" name="position-0" style="none" />
          </div>
        </div>
      </div>

2 番目の部分はヘッダーの下にあります。これらのどちらかが正しいセクションだと思いますか? もしそうなら、そこにあるものを削除してあなたの提案に置き換えるか、それともそのままにしておくべきですか?

4

2 に答える 2

2

テンプレートの index.php ファイルを次のように変更してみてください。

  1. これをコードの最初のどこかに追加します

    $user = JFactory::getUser();
    if(JFactory::getUser()->id)
    {
        //link to page for registered users 
        $link =  JRoute::_('index.php?option=com_content&view=article&id=3');
    }else{
        //link to page for default users 
        $link =  JRoute::_('index.php?option=com_content&view=article&id=1');   
    }
    
  2. ロゴを表示すべき場所に

    <a href="<?php echo $link; ?>">
        <img src="images/path_to_image_name"/>
    </a>
    

それだけです!後で Joomla と PHP に慣れてきたら、テンプレートを直接注入する代わりにカスタム モジュールを作成できます。

于 2013-03-19T08:23:29.400 に答える
2

何もハッキングしたくない場合は、カスタム html モジュールのデバッグまたはその他の位置にリダイレクト コードを貼り付けてみることもできますが、高度なモジュール マネージャーを使用して、ゲストに対してのみロードするか、ログインしているユーザーに対してのみロードします。無数のパラメーターに基づいて、AMM を使用してあらゆる種類のトリックを実行して、ロードしたりロードしないようにすることができます。

Adam の答えはすっきりしていますが、自分のテンプレートをハックすることを本当にためらう人もいます (または、それが商用のテンプレートである場合、コードを配置する適切な場所を見つけるのが本当に面倒かもしれません)。

AMM の詳細については、 http ://www.nonumber.nl をご覧ください。

于 2013-03-20T01:55:01.550 に答える