何が起きるか
フォルダに公開期間を設定すると、その配下のページも公開期間に従って表示されなくなります(これは正しい動きです)。
ところが、コンテンツ一覧ではその配下のページが、本当に公開中のページと同じ見た目(白い行・公開状態「○」)で表示されます。
フォルダ「サービス」の公開期間の開始日を未来の日付(2026/12/01)にした状態で確認しました。
| コンテンツ一覧での見え方 | 訪問者が開くと | |
|---|---|---|
| フォルダ「サービス」 | 灰色の行(公開されていないことが分かる) | 404 |
| 配下の「サービス1〜3」 | 白い行・「○」(公開中の「サンプル」と同じ) | 404 |
| 公開中の「サンプル」(比較) | 白い行・「○」 | 表示される |
ツリー形式でも、フォルダは灰色、配下のページは白く表示されます。
親フォルダが「非公開」のときとの違い
親フォルダを「非公開」にしたときは、配下のページの公開状態の欄が「—」になり、一覧で区別できます。
ところが、親フォルダが「公開期間外」のときは「○」のままです。
つまり一覧は、親から引き継いだ非公開は示すのに、親から引き継いだ公開期間は示していない状態です。
なぜ問題か(どんな被害があるか)
運営者は、コンテンツ一覧の「○」と行の色で、ページが訪問者に見えているかを判断します。
- 見えていないページを、見えていると思い込む
公開予約(フォルダの公開開始を未来にする)や、期間限定の特集(フォルダの公開終了を設定する)で、配下のページは訪問者に見えていないのに、一覧では公開中と区別がつきません。
- 問い合わせを受けても原因にたどり着けない
「ページが表示されない」と言われて一覧を見ても「○」なので、運営者はページ自体の設定を疑います。原因が親フォルダの公開期間にあることは、一覧からは分かりません。
同じ一覧の中で、フォルダ自身は灰色にしているので、「公開期間外は灰色で示す」という考え方は製品の中にすでにあります。
ブログ記事一覧で、公開期間外の記事の背景が灰色にならない不具合(#2048)が修正されていることからも、一覧は実際の公開状態を映すべきものだと考えました。
再現手順
-
管理画面にログインする
-
配下にページがあるフォルダの編集画面を開く(初期データの「サービス」フォルダを使いました)
-
「公開期間」の開始日を未来の日付(例: 明日)にして保存する
-
公開サイトで、フォルダ配下のページ(
/service/service1)が 404 になることを確認する(これは正しい動き) -
コンテンツ一覧(表形式、またはツリー形式でフォルダを開く)を見る
-
フォルダ「サービス」の行は灰色だが、配下の「サービス1〜3」は白い行で、公開状態が「○」になっていることを確認する
(比較)同じフォルダの公開期間を戻して「非公開」にすると、配下のページの公開状態は「—」になります。
期待する動き
親フォルダの公開期間によって訪問者に表示されないページは、一覧でもそれが分かるようにしてほしいです(灰色の行にする、公開状態を「—」にする、または「親フォルダの公開期間により非公開」と示す、など)。
環境
-
baserCMS 5.4.0(公式の docker-compose で起動し、インストーラーで初期データ
BcThemeSampleを入れた状態) -
PHP 8.5.7 / MySQL 8.0
補足(原因と思われる箇所)
コンテンツ一覧の行(index_row_table.php)は、BcContentsHelper::isAllowPublish($content, true) で公開かどうかを判定しています。
第 2 引数が true のため、そのページ自身の設定(self_status / self_publish_begin / self_publish_end)だけを見ています。
親フォルダから引き継いだ公開期間は publish_begin / publish_end に入っていますが、判定には使われていません。
既存の Issue を検索しましたが、同じ内容は見当たりませんでした。



