■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。

takamura > fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。 @ 2016/5/14 0:39
はじめまして、takamura と申します。
当社が属している商店街の Web サイトを、baserCMS を利用して更新しようと考えております。
そのまえに、baserCMS の学習も兼ねて、個人ブログサイトを構築しながら、実験中です。

さて、表題の現象が発生して悩んでいるので、アドバイス頂けたら幸いです。
よろしくお願い致します。
状況説明が長くなってしまいましたが、一番最後が[質問]です。

■ bootstrap を利用しています。
 下記のように画面上部に、bootstrap の navbar-fixed-top を使って、
ナビゲーションを表示させました。
(上部に固定表示され、スクロールしても動かない。)

<nav class="navbar navbar-default navbar-fixed-top">
: (メニューを配置)
</nav>

 ところが、baserCMS の管理システムツールバーが同じ場所に表示されて、
重なってます。
 それぞれの css を確認したところ、どちらのプロパティとも

top: 0;
position: fixed;

でした。ただし、z-index の設定値が異なり、baserCMSツールバーの方が大きい
数値が設定されていたので、上に重なっています。

■ 一般の訪問者さまが閲覧する際には、管理システムツールバーが表示されて
いないので問題ないと考えられますが、管理者自身や投稿担当者がログイン状態に
あると、サイトのナビゲーションが隠れてしまいます。

 管理システムツールバーの高さが、31px でしたので、とりあえずの対策として
ナビゲーション側の css を後読み込みで上書きしました。
 下記のように、別ファイルを用意して最後にロードするようにしました。

.navbar-fixed-top {
top: 31px;
}

 これで、"重なる"ことは避けることができたのですが、ログアウトした状態、
つまり、一般の閲覧時に top 31px の不自然な隙間が空いてしまいます。

■ 管理システムツールバーが表示されていることを検出する関数や、
ログイン状態を確認する関数などで、表示されているときだけ
ナビゲーションを下げることを考え、いろいろ調べました。
ツールバーエレメント出力処理に関連して、

BcBaserHelper.php
public function func()

の中を見たところ、諸々の条件を判断してツールバーエレメントを出力
するという判断を行っており、その条件判断部分のみは関数として定義
されていませんでした。

[質問]
ログイン状態を知る関数を教えて下さい。
また、別の方法で"重なる"ことを回避するアイデアがあれば、教えて下さい。

よろしくお願い致します。

-----------------------------------------------
■ BaserCMSのバージョン:3.0.9
■ レンタルサーバー名:
開発中は、Raspberry Pi 3 に各環境をセットアップ
運用は、ロリポップ、SAKURA INTERNET などの予定。
■ スマートURLの利用:ON
3.0.8 からデフォルトONになっていますね!
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル(自己評価):C
■ OSの種類:Raspbian Jessie(debian系)
■ PHPのバージョン:5.6.20
■ データベース種類・バージョン:MySQL 14.14
tecking > Re: fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。 @ 2016/5/14 8:38
takamuraさん

引用:
[質問]
ログイン状態を知る関数を教えて下さい。
また、別の方法で"重なる"ことを回避するアイデアがあれば、教えて下さい。

関数 existsEditLink() で判定してはどうでしょう?

ログイン状態だと true, ログアウト状態だと false を返します。

/lib/Baser/View/Helper/BcBaserHelper.php 内では「編集画面へのリンクが存在するかチェックする」というコメントになっているのでちょっと分かりづらいかもですが、実際は「編集画面へのリンクを表示可能か否か(=ログイン状態か否か)」を判定している関数です。ページ上に編集画面へのリンクを設置しないというときにも活用できますよ。
takamura > Re: fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。 @ 2016/5/15 18:39
返信ありがとうございます。
おかげさまで、あっさり解決しました。

Layouts/default.php の中で、
<?php $this->BcBaser->func() ?>
<?php if($this->BcBaser->existsEditLink()): ?>
<?php $this->BcBaser->css(array('adjustment'),array('inline'=>'false')) ?>
<?php endif; ?>
というように処理を追加しました。
adjustment.css にて、top を 31px に下げてあります。

他にもコメントの解釈を角度を変えてみると、いろいろ便利な関数がありそうですね。
ありがとうございました。
takamura > Re: fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。 @ 2016/5/23 9:20
その後、いろいろ試してみて、気がついたことがあったので、追記します。

教えて頂いた
existsEditLink()
は、ツールバーの「編集する」を表示するかしないかを判別しており、それを利用してログイン状態にあるか判別してみました。
ところが、「編集する」が表示されない条件があるようです。
ブログのカテゴリで記事一覧を表示させた場合に、「編集する」が表示されませんでした。
タグ名で一覧表示させた場合も、表示されません。
つまり、対応する編集ページがない場合があります。

そこで、他の方法を検討しました。
右端には「ユーザー名」と「システムナビ」が表示されています。
ユーザー名を選択すると、アカウント設定とログアウトが選択出来ます。

ログイン中ならば、ログアウトが必要ですから、ここをヒントにソースコードを検索したところ、
$this->BcBaser->getUserName($user)
にてユーザー名を取得していました。
ログインしていなければ空だったので、これを利用することも表題の件を対処することが可能でした。

以上です。
GUSSAN > Re: fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。 @ 2016/12/19 9:33
takamuraさん、みなさま
本件、同様の事情で実装を試みたところ、他の問題にぶつかってしまっております。
アドバイス頂ければありがたいのですが。
$this->BcBaser->getUserName($user)
或いは、
$this->BcBaser->existsEditLink()
の何れの関数を利用した判定でも、takamuraさんご指摘のcss読み込みの方法で、管理用ツールバーの重なりは解消できたのですが、

管理ユーザーとしてログインしている状況でユーザー画面をプレビューしている状態にし、ツールバー右側のログインユーザー名表示をクリックしても、反応しなくなってしまいました。
アカウント設定やログアウトのメニューが表示されず、ゆえにログアウトができません。システムナビも同様に表示されないため操作できません。
逆に管理画面のプレビュー状態では、問題なく、アカウント設定やログアウトのメニュー表示も表示され、ログアウトも可能です。

takamuraさんのアドバイスに従って、レイアウトのdefault.phpの先頭に以下を記述し、adjustment.cssを記述して、呼び出しただけです。
<?php $this->BcBaser->func() ?>
<?php if($this->BcBaser->existsEditLink()): ?>
<?php $this->BcBaser->css(array('adjustment'),array('inline'=>'false')) ?>
<?php endif; ?>


なにか、お気づきの点などありますでしょうか?

baserCMSバージョン: 3.0.16
PHP:5.5
スマートURL: ON
レンタルサーバー名:lolipop
設置フォルダ:サブフォルダ
セーフモード:Off
データベース: MySQL
PHPスキル:D

GUSSAN > Re: fixed に設定したナビゲーションと管理システムツールバーが重なってしまいます。 @ 2016/12/19 12:35
大変申し訳ありません。自己解決致しました。
先頭にうっかり追加してしまいました。
body上に
<?php $this->BcBaser->func() ?>
の記述が既にあることに気づかずにいました。
上記、直後に記述して、問題なく表示されました。お騒がせして申し訳ありませんでした。

baserCMSバージョン: 3.0.16
PHP:5.5
スマートURL: ON
レンタルサーバー名:lolipop
設置フォルダ:サブフォルダ
セーフモード:Off
データベース: MySQL
PHPスキル:D

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
41 人のユーザが現在オンラインです。 (38 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 41