Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/friendsofredaxo/properties
REDAXO-Properties für Templates und Module
https://github.com/friendsofredaxo/properties
backend developers frontend properties redaxo redaxo-addon
Last synced: 2 months ago
JSON representation
REDAXO-Properties für Templates und Module
- Host: GitHub
- URL: https://github.com/friendsofredaxo/properties
- Owner: FriendsOfREDAXO
- License: mit
- Created: 2018-06-22T10:02:44.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2023-10-06T21:09:49.000Z (over 1 year ago)
- Last Synced: 2024-04-15T00:27:50.596Z (10 months ago)
- Topics: backend, developers, frontend, properties, redaxo, redaxo-addon
- Language: PHP
- Homepage:
- Size: 45.9 KB
- Stars: 20
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# REDAXO-Properties für Templates und Module
Hier können REDAXO-Properties gesetzt werden die man zum Beispiel in Templates, Modulen und AddOns verwenden kann. Die Properties sind im Backend und Frontend verfügbar. Siehe auch https://redaxo.org/doku/master/eigenschaften#set-property.
Unter dem Menüpunkt **System** können die Properties verwaltet werden (siehe auch `package.yml`).Oft werden in verschiedenen Templates/Modulen die gleichen Einstellungen wie z.B. bestimmte Artikel-Id's, Anzahl Datensätze usw. benötigt. Durch die Verwendung von Properties können diese Einstellungen (einfach und flexibel) **zentral an einer Stelle** gepflegt und dann in Templates/Modulen/AddOns verwendet werden.
> **Hinweis:** Es können nur Properties angelegt werden die noch nicht existieren. So werden Kollisionen mit den Core-Properties vermieden.
## Formatierung
Die Formatierung für die Properties ist angelehnt an die bekannten ini-Dateien und die language-Files von REDAXO-AddOns, und bewusst einfach gehalten.
Die Properties werden in der AddOn-Konfiguration gespeichert und werden bei einem REDAXO-Export auch exportiert.**Zeilen-Format**:
`propertyName = propertyInhalt`
oder
`propertyName=propertyInhalt`* jede Property-Einstellung in einer Zeile
* Kommentare beginnen mit '#' am Zeilenanfang
* Inline-Kommentare mit '#' möglich (ein Leerzeichen vor und nach dem #!)
* automatisches Type-Casting
* JSON-Properties möglich> **Hinweis:** Bereits bestehende REDAXO-Properties oder Properties aus anderen Addons werden nicht überschrieben!
> **Hinweis:** Properties können durch setzen eines frei wählbaren PREFIXes für die eigene Übersicht gruppiert werden.
Zum Beispiel: `PREFIX = my.`
Alternativ kann auch die Section-Schreibweise (ini-Dateien) verwendet werden.
Zum Beispiel: `[my.]`## Type-Casting
Die definierten Properties werden automatisch in den entsprechenden Variablen-Typ gecasted.
**Beispiele**
`property = Text` -> (string) Text
`property = 1` -> (integer) 1
`property = 1.0` -> (float) 1
`property = 1,234` -> (float) 1.234
`property = .123` -> (float) 0.123
`property = "asdf"` -> (string) asdf
`property = '"asdf"'` -> (string) "asdf"
`property = true` -> (boolean) true
`propery = FALSE` -> (boolean) false
`property = {"erstens": 1, "zweitens": 2}` -> array(2) { ["erstens"]=> int(1) ["zweitens"]=> int(2) }> **Hinweis:** JSON-Properties müssen im gültigen JSON-Format notiert werden!
## Beispiele für Property-Einstellungen
Mit gesetztem PREFIX ...
```ini
# Einstellungen für den News-Bereich Zugriff im Modul/Template
PREFIX = news.
listLimit = 10 # Anzahl Teaser-Einträge für die Startseite rex::getProperty('news.listLimit')
detailArticle = 123 # Artikel-ID für die News-Anzeige rex::getProperty('news.detailArticle')# Diverse Artikel-ID's
PREFIX = id.
search = 123 # Artikel-ID für die Suche rex::getProperty('id.search')
basket = 456 # Artikel-ID für den Warenkorb rex::getProperty('id.basket')
```oder alternativ mit Sections statt Prefix ...
```ini
# Einstellungen für den News-Bereich Zugriff im Modul/Template
[news.]
listLimit = 10 # Anzahl Teaser-Einträge für die Startseite rex::getProperty('news.listLimit')
detailArticle = 123 # Artikel-ID für die News-Anzeige rex::getProperty('news.detailArticle')# Diverse Artikel-ID's
[id.]
search = 123 # Artikel-ID für die Suche rex::getProperty('id.search')
basket = 456 # Artikel-ID für den Warenkorb rex::getProperty('id.basket')
```## Verwendung im Template / Modul
Verwendung der oben definierten Properties im Template oder Modul
```php
// Zugriff auf Properties mit gesetztem PREFIX = news. / Section [news.]
$limit = rex::getProperty('news.listLimit');
```Alternativ zur PHP-Schreibweise kann auch folgende Schreibweise in Templates verwendet werden.
> **Hinweis:** Funktioniert nicht bei Properties im JSON-Format!
```
REX_PROPERTY[news.listLimit]
REX_PROPERTY[key=news.listLimit]
```## Anwendungs-Beispiel
Für ein Galerie-Modul müssen mindestens 3 Bilder ausgewählt werden.
**Property-Einstellungen**
```ini
# Backend-Properties
PREFIX = be.
minimumGalleryPics = 3# Frontend-Properties
PREFIX = fe.
...
```**Modul-Input**
```php
...
```**Modul-Output**
```php
...
```## Empfehlungen / Sonstiges
* PREFIX= oder [Section] setzen!
* Properties im CamelCase notieren -> https://en.wikipedia.org/wiki/Camel_case
* Es sind auch mehrere PREFIXe/Sections zur Gruppierung von Properties möglich
* Durch den Eintrag **load: early** in der package.yml sind die Properties auch in (fast) allen AddOns verfügbar