Download the PHP package nr/pagetablenext without Composer
On this page you can find all versions of the php package nr/pagetablenext. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nr/pagetablenext
More information about nr/pagetablenext
Files in nr/pagetablenext
Package pagetablenext
Short Description PageTable with scoped admin preview
License MIT
Homepage https://github.com/neuerituale/PageTableNext
Informations about the package pagetablenext
PageTableNext
What it does
This module is a solid base for the implementation of custom builder systems and modular template systems. It provides a list of PageTable based content elements and adds an intuitive UI to the ProcessWire backend to make content creation and editing as simple and fun as possible. It offers functions to create, publish, move, delete, hide, copy and paste content elements.
The rendering logic of the module is detached from the ProcessWire backend scope via Shadow DOM and allows for custom rendering and styling of the elements in the backend, so the backend preview can look identical to the front end, or anything like you can imagine. It ships with some helper functions that simplify the handling of content elements.
The module extends Ryan's PageTable and is strongly inspired by PageTableExtended by mademyday. Big thanks to both of them.
Features
- Custom rendering (e.g. frontend preview) in the backend. Content elements are encapsulated in Shadow DOM.
- Instant publishing and unpublishing.
- Copy and paste with check of allowed templates (page-wide).
- Editing in the ProcessWire modal.
- Instant deletion of content elements.
- Custom JavaScript actions can be easily added.
- Page references support.
- Triggers save on all referenced pages (e.g. clear cache).
- Shows the "view" link in the edit view that leads to the referenced page .
- Manipulates the breadcrumb navigation of the content element (Shows the first referenced page).
- Support for ProcessGraphQL with the additional modules GraphQLFieldtypePageTable and GraphQLFieldtypePageTableNext
Install (Short way)
- Copy the files for this module to and Install PageTableNext, FieldtypePageTableNext and InputfieldPageTableNext.
- Enter your favorite field name and click "Setup Field" in Module Configuration.
- Add the field to your page template and add some content element templates to the PageTableNext field.
Install (Long way)
- Copy the files for this module to and Install PageTableNext, FieldtypePageTableNext and InputfieldPageTableNext.
- Create a new template (e.g. "content-elements").
- In the tab "Access" set the permission management to "Yes", then check "View page" and "Guest".
- Optional: In the tab "Family" set the option "Can this template be used for new pages?" to "One".
- Optional: In the "Advanced" tab, check the options "Don't allow pages to change their template?" and "Don't allow unpublished pages".
- Create a new page which will act as a container for the content elements (as child of Admin) with the title e.g. "Content Elements". Choose the template from step 2 ("content-elements")
- Create a new field of type PageTableNext (e.g. ptn)
- "Details" tab
- Select one or more templates for your content elements under "Select one or more templates for items".
- Optional: In "Select a parent for items" select the container page you created in step 3.
- Optional: Configure the following at "Page behaviors":
- Delete: Delete them
- Trash: Nothing
- Unpublish: Nothing
- "Input" tab
- Optional: For "Automatic Page Name Format" add .
- Path to content element templates: Add the path for the front- and backend rendering of the content elements. The path is relative to /site/templates/fields/ e.g. "ptn/". The name of the PHP template file must match the name of the template.
- "Details" tab
- Copy the file from the module folder to the folder . Replace "ptn" with your field name
- Add the field to your page template and add some content element templates to the new PageTableNext field.
Rendering
Frontend
Use file field rendering for the output. You can find more information here.
Backend
All elements are rendered in the backend as custom HTML elements (<ptn-content>). The styling is separated from the backend. This way, the rendering of your content elements is encapsulated and separated from the backend. You can use a different custom element by extending the class "PtnContent". `
Configuration / Add news fields
Modules
> Configure
> PageTableNext
Field settings
Fields
> ptn
> Details
Select one or more templates for items
Here you can select templates for the content elements. These templates are available later when you want to create new content elements on your page.
Select a parent for items
If selected, all new content elements are stored as a child page of the selected page. If no page is selected, the content elements will be created as child pages of the referenced page.
API
The field itself returns a PageArray of content elements. If you want you can create your own rendering:
Customize/override output files
All files in the folder can be overwritten. Just create a folder in your templates directory and copy the corresponding files there. Now you can edit the files.
Styling
Variant 1:
Copy your CSS style file into the folder or set a symlink to your style file.
Variant 2:
Copy the file into the directory and change the path to your style files below
Extend Custom Element
If you want to execute your own code while creating the content elements, e.g. initialize the page tree with Alpine, you can extend the CustomElement. You can add your own code to the file for example
First Step
Second Step
Override . Go to the bottom of the file and change the tag name from to
Add custom actions
In order to add new JavaScript actions, follow the two steps. Add a button to the list of actions in the file .
Register your action e.g. in the file .
GraphQL
The content elements can also be queried using GraphQL.
For this purpose, the data is divided into three new fields:
id
, type
and render
. All other page fields are still available (created, name, references, template ...).
id
is the page id of the content element.
type
is the template name in PascalCase.
render
is everything from the content element template file /site/fields/[content-element-template-name].php
.
This template is also used for the preview in the backend.
If you want to use a different template here, e.g. to return different fields or a serialised object,
you can create an additional template file with the postfix ".graphql" /site/fields/[content-element-template-name].graphql.php
.
Request
Response
GraphQL query with Postman
ToDos
- Refactor content element handling with Alpine.js
- Video-Tutorial