Repository: notionnext-org/NotionNext (2026-07-26T13:13:41Z)

Issue:
Gallery 布局中“显示页面图标”配置未生效
> 若为「如何使用 / 部署咨询」而非可复现缺陷，请改用 [Discussions · 使用问答](https://github.com/notionnext-org/NotionNext/discussions/new/choose)，Issue 仅用于可跟踪的 Bug。

---

<!--
  !!! 重要 !!!
  请遵守这个模板的格式填写，否则你的Issue将被关闭
-->

**描述bug**
首先感谢作者以及各位维护者一直以来对项目的维护与更新！

更新到最新版本后，我发现 Gallery 布局中的“显示页面图标” 配置似乎没有生效。

**期望的正常结果**
关闭 “显示页面图标” 后，网站中的 Gallery 卡片不应再显示页面图标。

**复现步骤**
1. 在 Gallery 布局 中关闭 “显示页面图标”；
2. 更新到最新版本并重新部署。

测试结果：
* Notion 中已关闭该配置；
* 网站端仍然会显示页面图标。

**环境**

- 【必填】NotionNext版本 [4.10.7]
- 【必填】主题 [hexo]
- 【必填】部署方案 [vercel]
- 【可选】操作系统: [iOS, Android, windows]
- 【可选】浏览器 [chrome, safari, firefox]

**补充说明**
我确认已经重新部署，并多次刷新页面测试，目前始终会显示页面图标，因此感觉这个配置目前可能没有生效。

如果还需要我补充更多测试信息，请告诉我，我很愿意继续配合。


Discussion:
收到，这个我先按配置失效问题记录。

从描述看，Gallery 端的“显示页面图标”开关似乎没有传到站点渲染层；如果你方便，再补一张 Notion 侧配置截图和页面公开链接，后续维护者可以直接对照当前版本判断是回归还是漏实现。
已提交修复 PR：#4316

本次改动让 Gallery 在 `show_page_icon === false` 时仅隐藏该视图卡片标题中的页面图标；未配置或开启时保持原行为。已补充开/关两种状态的回归测试，并完成全量测试、type-check、lint 和补丁重装验证。
这个 issue 已经被 #4316 直接覆盖了，当前实现是让 Gallery 在 `show_page_icon === false` 时只隐藏标题里的页面图标，保留其他 Gallery 行为不变。

PR 里的测试和检查已经过了，等 Vercel 预览这边结束后，就可以继续走合并判断。若你这边还有不同版本的复现样例，也可以继续贴在这里，方便一起回归确认。
感谢修复！

我更新到最新版本重新部署后进行了测试，目前这个问题似乎仍然存在。

另外，在继续测试时，我发现了一个新的现象，感觉可能和这个问题有关。

我分别测试了下面两种配置：

**情况一**

* 显示页面图标：关闭
* 属性是否可见：Title 设置为不可见

Notion 中显示符合配置，但网站端仍然显示页面图标和 Title。

<img width="8112" height="1766" alt="Image" src="https://github.com/user-attachments/assets/c7eee67c-c447-4c46-96c4-032581670fec" />

**情况二**

* 显示页面图标：关闭
* 属性是否可见：Title 设置为可见

Notion 中显示同样符合配置，但网站端依然显示页面图标。

<img width="8112" height="1863" alt="Image" src="https://github.com/user-attachments/assets/de9db6fe-2e8b-4704-85ff-f79d07f4b212" />

我已经更新到最新版本重新部署，并多次刷新页面测试，结果一致。

不确定这两个现象是否属于同一个问题，所以先一起反馈，希望对定位有所帮助。



Patch:
diff --git a/patches/react-notion-x+7.10.0.patch b/patches/react-notion-x+7.10.0.patch
new file mode 100644
index 00000000000..395453e427e
--- /dev/null
+++ b/patches/react-notion-x+7.10.0.patch
@@ -0,0 +1,16 @@
+diff --git a/node_modules/react-notion-x/build/third-party/collection.js b/node_modules/react-notion-x/build/third-party/collection.js
+index 97e229d..64344de 100644
+--- a/node_modules/react-notion-x/build/third-party/collection.js
++++ b/node_modules/react-notion-x/build/third-party/collection.js
+@@ -5877,7 +5877,10 @@ function Gallery({
+   const shouldLimit = typeof loadLimit === "number";
+   const showLoadMore = shouldLimit && !isExpanded && ((blockIds == null ? void 0 : blockIds.length) || 0) > loadLimit;
+   const visibleBlockIds = showLoadMore ? blockIds == null ? void 0 : blockIds.slice(0, loadLimit) : blockIds;
+-  return /* @__PURE__ */ jsxs17("div", { className: "notion-gallery", children: [
++  return /* @__PURE__ */ jsxs17("div", { className: cs(
++    "notion-gallery",
++    collectionView.format && collectionView.format.show_page_icon === false && "notion-gallery-hide-page-icons"
++  ), children: [
+     /* @__PURE__ */ jsx54("div", { className: "notion-gallery-view", children: /* @__PURE__ */ jsx54(
+       "div",
+       {
diff --git a/styles/notion.css b/styles/notion.css
index c41e0df6b52..1476efe4c3c 100644
--- a/styles/notion.css
+++ b/styles/notion.css
@@ -2198,6 +2198,11 @@ figure.notion-asset-wrapper.notion-asset-wrapper-video > div {
   padding: 0 16px;
 }
 
+/* Respect Notion Gallery's "Show page icon" view setting. */
+.notion-gallery-hide-page-icons .notion-page-title-icon {
+  display: none;
+}
+
 /* Dark mode: database property tags (select / multi_select) text readability */
 html.dark .notion-property-select-item,
 html.dark .notion-property-status-item,


Test patch:
diff --git a/__tests__/components/NotionCollectionGallery.test.js b/__tests__/components/NotionCollectionGallery.test.js
new file mode 100644
index 00000000000..e5275d2df2b
--- /dev/null
+++ b/__tests__/components/NotionCollectionGallery.test.js
@@ -0,0 +1,78 @@
+import { execFileSync } from 'child_process'
+
+const renderGalleryScript = `
+  const React = (await import('react')).default
+  const { renderToStaticMarkup } = await import('react-dom/server')
+  const { NotionRenderer } = await import('react-notion-x')
+  const { Collection } = await import('react-notion-x/build/third-party/collection')
+  const createRecordMap = showPageIcon => ({
+    block: {
+      collection_view: {
+        value: { id: 'collection_view', type: 'collection_view',
+          collection_id: 'collection', view_ids: ['gallery_view'] }
+      },
+      page: {
+        value: { id: 'page', type: 'page', parent_table: 'collection',
+          properties: { title: [['Gallery item']] },
+          format: { page_icon: '📄' } }
+      }
+    },
+    collection: {
+      collection: {
+        value: { id: 'collection', name: [['Gallery']],
+          schema: { title: { name: 'Name', type: 'title' } } }
+      }
+    },
+    collection_view: {
+      gallery_view: {
+        value: { id: 'gallery_view', type: 'gallery',
+          format: {
+            collection_pointer: { id: 'collection' },
+            show_page_icon: showPageIcon,
+            gallery_cover: { type: 'none' },
+            gallery_cover_size: 'medium',
+            gallery_cover_aspect: 'cover',
+            gallery_properties: []
+          } }
+      }
+    },
+    collection_query: {
+      collection: {
+        gallery_view: { collection_group_results: { blockIds: ['page'] } }
+      }
+    },
+    signed_urls: {}
+  })
+  const renderGallery = showPageIcon =>
+    renderToStaticMarkup(
+      React.createElement(NotionRenderer, {
+        recordMap: createRecordMap(showPageIcon),
+        components: { Collection }
+      })
+    )
+  process.stdout.write(JSON.stringify({
+    hidden: renderGallery(false),
+    visible: renderGallery(true)
+  }))
+`
+
+describe('Notion Gallery page icon setting', () => {
+  const result = JSON.parse(
+    execFileSync(process.execPath, [
+      '--input-type=module',
+      '-e',
+      renderGalleryScript
+    ])
+  )
+
+  it('adds the page-icon hiding class when Notion disables icons', () => {
+    expect(result.hidden).toContain(
+      'notion-gallery notion-gallery-hide-page-icons'
+    )
+  })
+
+  it('keeps page icons visible when Notion enables icons', () => {
+    expect(result.visible).toContain('class="notion-gallery"')
+    expect(result.visible).not.toContain('notion-gallery-hide-page-icons')
+  })
+})