web-dev-qa-db-ja.com

サイドバー表示の切り替え

私は、ユーザーが目次を表示または非表示にできるのと同じ方法で、ユーザーがJavascriptを使用してサイドバーの表示/非表示を切り替えることができるWordPressテーマを開発しています。

ユーザーがサイドバーを隠すためにリンクをクリックするとき、私はサイドバーの可視性を "none"に設定し、ユーザーが次回そのページにアクセスしたときにサイドバーが表示されるようにドキュメントクッキーを設定するtoggle()javascriptトグル機能を持​​っています最後のトグル状態を覚えています。

クッキーを取得し、そのクッキーに基づいて可視性を設定する別のJavaScript関数setToggleFromCookie()があります。これはすべてうまくいきます:

サイドバーが非表示になっている場合(つまり、サイドバーの可視性div = "none"およびドキュメントCookie hidesidebar = 1)、サイドバーは、JavaScriptがvisibility = "none"でvisibility = "block"をオーバーライドする直前に表示されます。 "

SetToggleFromCookie()をjQuery(document).ready(function())に入れましたが、setToggleFromCookie()がサイドバーを読み込んで表示してから非表示にする前のようです。

1
marpa

迷惑な間、あなたのプラグインは正しく機能しています。最初にサイドバーを表示してページが完全に自分自身をレンダリングし、次にサイドバーを隠すためにJavaScriptコードがアクティブになります。

この問題を解決するには、PHPコードでユーザーのCookieを確認/取得し、それに応じてディスプレイのサイドバーのステータスを設定します。このようにしてページをレンダリングすると、最初はnoneに設定され、それ以降の画像切り替えでサイドバーを動的に表示/非表示にすることができます。

何らかの理由でページが再度読み込まれると、同じPHP読み込みコードが再度実行され、それに応じてサイドバーの初期状態が設定されます。初期ページ読み込み後に「フォローアップ」する必要はありません。サイドバーを非表示にします。

うまくいけば、これは理にかなっています。詳細が必要な場合は、関連するコードで質問を更新してみてください。

4
Dillie-O