PHPackages                             alexsawallich/node - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. alexsawallich/node

ActiveLibrary

alexsawallich/node
==================

A Zend-Framework-Module to make all frontend contents (comming from different modules) available via the same interface.

024PHP

Since Apr 13Pushed 10y ago1 watchersCompare

[ Source](https://github.com/alexsawallich/Node)[ Packagist](https://packagist.org/packages/alexsawallich/node)[ RSS](/packages/alexsawallich-node/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

*Node* a Zend-Framework-Module
==============================

[](#node-a-zend-framework-module)

What does this module do?
-------------------------

[](#what-does-this-module-do)

*Node* is a module, which has grown by the time to support more features than initially planned. It brings a layer into your Zend-Framework application to create url-rewrites (route) for each of your contents.

The module ships with 3 types of nodes: MVC-Nodes, Content-Nodes and Redirect-Nodes.

**MVC-Nodes** can be created from the backend (requires ZfcAdmin) of the module. The configuration-form allows you to specify the url-path this node should be available at. In dropdowns you select the controller (all controllers in your application are retrieved from the service-manager) and the action within this controller. Optionally you can provide further parameters which will be passed 1:1 into the router. Also optionally you can provide an original-url-path if the specified controller, action and parameters are already assigned to a certain route. Whenever this route will be output, e.g. in your templates, it will be replaced by the new node-based-url, which you just created.

So MVC-Nodes allow you to achieve the following: route the url  to a potential News-Controller, to the Index-Action with the parameter *Sort=ASC*.

**Redirect-Nodes** are an additional feature, which wasn't planned initially, but can be very useful. Just like MVC-Nodes you can create these kind of nodes within the backend by configuring it with the help of a form. You specify the url-path for this node and the target url (can be external), where the node should redirect to. You may also specify the http-status-code which will be used upon redirection.

So Redirect-Nodes allow you to do the following: create a redirect from  to

**Content-Nodes** are the initial idea of the module. They are nodes, which can't be created manually from the backend, since they always should be related to a content (e.g. a blog-post). Whenever you create a specific content, a node should be created - whenever you delete this content, the node should be deleted as well. Since this Node-Module doesn't know the internals of the other modules which delivers the content, you are responsible for creating a third module, which ties the module, which allows managing a certain content, with the Node-Module.

So Content-Nodes are basically the same as MVC-Nodes. However you can't create or delete them manually as this task has to be implemented within the code itself. The following task can be achieved with a Content-Node: when calling internally execute the View-Action within a BlogController with the parameter *id=5*.

Additional features
-------------------

[](#additional-features)

There are some other features, which can be dis-/enabled in the config-file.

- **Enable meta-fields**. If enabled, the add/edit-forms in the node backend allow you to specify a meta-description, meta-keywords and robots-settings for your seo-concerns.
- **Enable access-counter**. If enabled, whenever a node-route gets called a counter for this node is incremented. Also the timestamp of the last access of this node is being saved. These information is presented within the node-overview in the backend.
- **Caching**. The nodes are stored within a database. The first time you call the page, all nodes are fetched, processed and put into the router of your application. While doing that, the router-config is cached, so in the next request it's not necessary to fetch all nodes again.
- **Translatable**. All strings within the module are wrapped with the `translate()`-method from the translator-instance.
- **Rich usage of events**. This module triggers events at certain points, which gives you the chance of extending nodes with additional fields for example. Think of nodes as a central place to store information, that is relevant for all your content. Maybe you want to have a different header-image for each of your nodes - no problem. Through the triggered events you can easily modify the backend-forms or hook into the process of saving the nodes into the database.

Future plans
------------

[](#future-plans)

- This module is currently written for ZF2, however I want to make it compatible with ZF3. Therefore I will probably create another branch.
- The composer.json of this module doesn't really list the correct requirements. If you install the whole ZF2, everything should be fine. However in fact you only need certain components.
- Maybe I will put some efforts in translating this module into german. Now it's english, however you can easily call your own translations, if available.

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/ac22e0249515780b9f33aa796be21aa402a41d1ab655159f6680ed7057b6435d?d=identicon)[alexsawallich](/maintainers/alexsawallich)

---

Top Contributors

[![alexsawallich](https://avatars.githubusercontent.com/u/4184816?v=4)](https://github.com/alexsawallich "alexsawallich (14 commits)")

### Embed Badge

![Health badge](/badges/alexsawallich-node/health.svg)

```
[![Health](https://phpackages.com/badges/alexsawallich-node/health.svg)](https://phpackages.com/packages/alexsawallich-node)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
