rw.pages
Last updated
Was this helpful?
Was this helpful?
[
{
"title": "About",
"url": "./",
"description": "",
"isPage": true,
"isFolder": false,
"isLink": false,
"isCode": false,
"isExternal": false,
"isActive": true,
"hasActiveChild": false,
"isDraft": false,
"displayInMenu": true,
"openInNewWindow": false,
"navLevel": 0,
"pageDepth": 0,
"hasPages": false,
"pages": [],
"icon": {}
},
{
"title": "Portfolio",
"url": "portfolio/",
"description": "",
"isPage": true,
"isFolder": false,
"isLink": false,
"isCode": false,
"isExternal": false,
"isActive": false,
"hasActiveChild": false,
"isDraft": false,
"displayInMenu": true,
"openInNewWindow": false,
"navLevel": 0,
"pageDepth": 1,
"hasPages": true,
"pages": [
{
"title": "Project Template",
"url": "portfolio/project1/",
"navLevel": 1,
"pageDepth": 2,
"hasPages": false,
"pages": [],
// ... other properties
}
],
"icon": {}
}
]const transformHook = (rw) => {
const pages = rw.pages;
console.log(pages.length); // Number of top-level pages
console.log(pages[0].title); // "About"
console.log(pages[0].isActive); // true (if current page)
};
exports.transformHook = transformHook;const transformHook = (rw) => {
const filterPages = (pages) => {
return pages
.filter(page => page.displayInMenu && !page.isDraft)
.map(page => ({
...page,
pages: page.hasPages ? filterPages(page.pages) : []
}));
};
const navPages = filterPages(rw.pages);
rw.setProps({
navPages,
hasNavPages: navPages.length > 0
});
};
exports.transformHook = transformHook;const transformHook = (rw) => {
const filterPages = (pages) => {
return pages
.filter(page => page.displayInMenu && !page.isDraft)
.map(page => ({
...page,
hasPages: page.pages ? filterPages(page.pages).length > 0 : false,
pages: page.pages ? filterPages(page.pages) : []
}));
};
const pages = filterPages(rw.pages);
rw.setProps({
pages,
hasPages: pages.length > 0
});
};
exports.transformHook = transformHook;<nav>
<ul>
@each(page in pages)
<li class="@if(page.isActive)active@endif">
<a href="{{page.url}}"
@if(page.openInNewWindow)target="_blank"@endif>
{{page.title}}
</a>
@if(page.hasPages)
<ul>
@each(subPage in page.pages)
<li class="@if(subPage.isActive)active@endif">
<a href="{{subPage.url}}">{{subPage.title}}</a>
</li>
@endeach
</ul>
@endif
</li>
@endeach
</ul>
</nav>const transformHook = (rw) => {
const findActivePage = (pages) => {
for (const page of pages) {
if (page.isActive) return page;
if (page.hasActiveChild && page.pages) {
const active = findActivePage(page.pages);
if (active) return active;
}
}
return null;
};
const activePage = findActivePage(rw.pages);
rw.setProps({
activePage,
activePageTitle: activePage?.title || ''
});
};
exports.transformHook = transformHook;const transformHook = (rw) => {
const buildBreadcrumbs = (pages, trail = []) => {
for (const page of pages) {
if (page.isActive) {
return [...trail, page];
}
if (page.hasActiveChild && page.pages) {
const result = buildBreadcrumbs(page.pages, [...trail, page]);
if (result) return result;
}
}
return null;
};
const breadcrumbs = buildBreadcrumbs(rw.pages) || [];
rw.setProps({
breadcrumbs,
hasBreadcrumbs: breadcrumbs.length > 1
});
};
exports.transformHook = transformHook;const transformHook = (rw) => {
const pages = rw.pages;
// Find pages with children
const pagesWithChildren = pages.filter(page => page.hasPages);
// Get all top-level page titles
const pageTitles = pages.map(page => page.title);
rw.setProps({
pagesWithChildren,
pageTitles,
totalPages: pages.length
});
};
exports.transformHook = transformHook;