About languages, types and other dynamic content filters
After much thought I have introduced another change into OriginNode architecture and how it is built from ground up. An average infosystem nowadays features specific requirements to filter content based on things like what language the user is browsing the website on or what product they are viewing. In order to deal with a potential catastrophic problem of having to build an immense tree and then duplicate elements between branches of that tree (such as having two products instead of one product for an e-shop just because the website has two languages), another solution was needed to improve usability without cutting down the legs of your new and fancy website before it is even up and running.
Basing it on my own experience and the various infosystems that are out there, regardless of content total size, the objects are always ‘filtered’ through two key values. One is a language and the other is a type, of sorts. Language plays a different role from a type (which you might use for a products categorization) because language can change values of a field based on what language is currently displayed. Example is to have a product with the exact same price and weight, but two different names because of language difference. This means that the node needs a field that has a different value for each language in the system, while many other fields remain the same. In OriginNode I am calling that behavior ‘language depencancy’ and plan to build it so that you can assign every field to be language dependant, in which case OriginNode generates all the fields required to fulfil that need.
But types are an entirely different monster. Types can be various statuses that you need to assign to products for filtering purposes, for example to separate your products into ‘special offer’, ‘best-selling’ and ‘regular’ groups. Creating a new module for that purpose is unnecessary, because nodes share similar properties. OriginNode has a couple of hardcoded filters that are already used, such as active flag and period when the object is returned, but there is always a need for dynamic types that are also displayed within OriginNode itself. For a public site one could indeed create a new dropdown and deal with filtering simply by using that on public frontend, but for those dynamic types to be also displayed as tabs within OriginNode another solution was needed. So far the best option seems to be to treat those dynamic types as module-based language dependancy. While languages apply for the entire infosystem, types do not. Types are assigned to each module in the system and can be used to filter nodes within OriginNode itself by using tabs when viewing the module. To deal with conflict of interest tabs-wise with languages and types, then languages always take priority and would be shown as tabs. Types however would be displayed as a separate dropdown filtering option.
In unrelated news, one of my country’s more known content management systems has gone open-source after many years of development. The code itself is tired and old-school and looks like it requires a major rewrite, but for what its worth this only shows the value of open source technologies in todays market. While being open source never guarantees quality, it definitely helps.







