2016-07-07 7 views
0

ホームページ(1ページのスクロールウェブサイト)からクリックした場合はトップ(ホームページ)にスクロールし、内部ページの場合はロゴリンクをサイトURLとして残しておきます。PHPおよびjQuery - ボディクラスまたはスクロールトップに応じてhrefを変更しますか?

私のクライアントは基本的に、サイトがホームページからロゴのonclickをリロードすることを望んでいません。

これを行うにはどうすればよいでしょうか?私は、クリックした場合、これまで...

  1. は、ロゴを
  2. (私のメニューのリンクはこれを使用してページをリロードすることなく、各セクションにスクロールします)URL +ボディクラスでhref属性を交換して、2つの方法を考えていますbody hasclass .homeのときは、ウィンドウの上部にスクロールします。しかし、これがテーマによって設定されたURLを上書きするかどうかはわかりません。

これは、私がWordpressの上Uncodeのテーマを使用しています...

$logoDiv = '<a href="'.esc_url(home_url('/')).'" class="navbar-brand" data-minheight="'.(($LOGO->logo_min == "") ? "20" : esc_attr($LOGO->logo_min)).'">'; 

ロゴHREFがパーシャル/ menus.phpファイルから設定されているかのスニペットです。そして、私はPHPとjQueryの初心者です...これについての最善の方法としての提案は非常に高く評価され、私は自分自身で試してみることができます!

ありがとうございました:)

+0

ダーティトリック:(あなたがスクロールをアニメーション化する場合を除き) 'はJavaScriptを必要とせずにトップにスクロールする'のhref =「#」を有します。 – apokryfos

+0

これはjqueryを使ってhref属性を置き換えるという私の考えでこれを使うことができると思いますか?このようなものかもしれません... $(document).ready(function(){ \t if($(body).hasClass( "home")){ \t $( "。navbar-brand [href = ' .attr( 'href'、 '#') } }); – user3541921

答えて

0

をあなたは

$logoDiv = '<a href="javascript:void(0)" class="navbar-brand" data-minheight="'.(($LOGO->logo_min == "") ? "20" : esc_attr($LOGO->logo_min)).'" onclick="window.scrollTo(0,0);">'; 

が、それはあなたの現在のリンクがページをレンダリングする前にホームページであるかどうかをチェックすることができますあなたの

+0

こんにちは、ありがとう!だから私はPHPファイルで言うことができる...場合:get_body_class 'ホーム'あなたの提案を行う、他の - 元の機能ですか? – user3541921

+0

はい、一度お試しください。 –

0

を助けることを願って、以下のコードを使用することができます。

スクロールをアニメートする場合は、次のjQueryを追加できます。

$("[href='#']").on("click", function (e) { 
    e.preventDefault(); 
    $('html, body').animate({ 
     scrollTop: 0 
    }); 
}); 

これは、あなたがそれを制限したい場合は、より具体的なセレクタが必要と思いhref='#'持つすべてのリンクで動作します。

あなたのコメントが示唆しているように、現在のページがホームページであるかどうかを判断する方法がある場合は、jQueryでこれを行うこともできます。

あなたのソリューションは、動作するはずです:

$(document).ready(function() { 
    if($(body).hasClass("home")){ 
     $(".navbar-brand[href='ldngrp.co']").attr('href', '#'); 
    } 
}); 
+0

驚くべきこと、説明をありがとう...私は周りに遊びがあります! – user3541921

+0

'$ _SERVER [" REQUEST_URI "]'が 'home_url'の間に'/'を最後に追加する可能性があります。 'trim($ _ SERVER [" REQUEST_URI "])、"/")'を代わりに使用してください – apokryfos

+0

こんにちは!だから私は、ifとelseステートメントにPHPを入れ、新しいファイルで親ファイルをオーバーライド...何も変更されていない...これは私が使用したPHPコードです... if($ href = (#_SERVER ["REQUEST_URI"] == home_url( ""、 "relative")? "#":esc_url(home_url( '/')))){ \t $ logoDiv = ' logo_min))。 "" '; } – user3541921

関連する問題