Skip to content

Commit

Permalink
Readme überarbeitet, Hilfe key angepasst
Browse files Browse the repository at this point in the history
  • Loading branch information
tbaddade committed Mar 11, 2019
1 parent a900b8e commit cf0e3f4
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 36 deletions.
88 changes: 52 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,100 @@
Url AddOn
================================================================================
### Table of Contents
## Table of Contents
1. [Beschreibung](#beschreibung)
2. [Beispiel: News AddOn](#beispiel-news-addOn)
3. [Installation](#installation)
4. [unterstützte Rewriter](#unterstützte-rewriter)

### Beschreibung
## Beschreibung
--------------------------------------------------------------------------------
REDAXO 5 AddOn zur URL-Generierung für Daten aus den Datenbanktabellen (ehemals Url Control, ehemals Frau Schultze)

### Beispiel: News AddOn
## Beispiel: Filme
--------------------------------------------------------------------------------
Normlerweise wird eine News über eine Url wie **/news.html?news_id=1** geholt.
Normalerweise wird ein Film über eine Url wie `/filme/?movie_id=1` geholt.

Mit dem AddOn ist es möglich Urls wie **/news/news-title/** zu erzeugen.
Mit dem AddOn ist es möglich Urls wie `/filme/the-big-lebowski/` zu erzeugen.

Der REDAXO Artikel **/news-title/** selbst existiert dabei nicht. Es wird alles im REDAXO Artikel **/news/** abgehandelt.
Der REDAXO Artikel `/the-big-lebowski/` selbst existiert dabei nicht. Es wird alles im REDAXO Artikel `/filme/` abgehandelt.
**The Big Lebowski** ist dabei der Titel eines Filmes, welcher in einer eigenen Datenbanktabelle hinterlegt wurde.

#### Url holen
Um die Url einer einzelnen News auszugeben verwendet man:
### Url holen
Um die Url eines einzelnen Filmes auszugeben verwendet man:

```php
$newsUrl = rex_getUrl($newsArticleId, $newsClangId, ['id' => $newsDataId]);
echo rex_getUrl('', '', ['movie-id' => $movieId]);
```

| Variable | Beschreibung |
| ---------------- | ---------------------------- |
| `$newsArticleId` | Artikel Id des Detailartikel |
| `$newsClangId` | Clang Id des Detailartikel |
| `$newsDataId` | Datensatz Id der News |
| `movie-id` | ist der im Profil hinterlegte Namensraum |
| `$movieId` | Datensatz Id des Filmes |


#### Id holen
Um die tatsächliche Id der einzelnen News zu erhalten, wird folgende Methode verwendet:
### Id holen
Nach dem der Film mit der eigenen Url aufgerufen wurde (Darstellung der Detailseite), muss jetzt die dazugehörige Datensatz-Id ermittelt werden. Erst dann können die eigentlichen Daten aus der Tabelle abgerufen und ausgegeben werden.

```php
$newsDataId = UrlGenerator::getId();
// versuche die Url aufzulösen
$manager = Url\Url::resolveCurrent();
$movieId = $manager->getDatasetId();
```

#### Beispiel Code
### Beispiel Code

```php
<?php
$newsDataId = UrlGenerator::getId();
$newsArticleId = 5;

if ($newsDataId > 0) {
$datas = rex_sql::factory()->getArray('SELECT * FROM news_table WHERE id = ?', [$newsDataId]);
if (count($datas)) {
$data = current($datas);
echo $data['title'];
}
use Url\Url;

$manager = Url::resolveCurrent();

if ($manager) {
$movie = rex_yform_manager_table::get('rex_movie')->query()->findId($manager->getDatasetId());
if ($movie) {
dump($movie);
}
} else {
$datas = rex_sql::factory()->getArray('SELECT * FROM news_table');
if (count($datas)) {
foreach ($datas as $data) {
echo '<a href="' . rex_getUrl($newsArticleId, '', ['id' => $data['id']]) . '">' . $data['title'] . '</a>';
}
}
$movies = rex_yform_manager_table::get('rex_movie')->query()->find();
if (count($movies)) {
foreach ($movies as $movie) {
echo '<a href="' . rex_getUrl('', '', ['movie-id' => $movie->getId()]) . '">' . $movie->getValue('title') . '</a>';
}
}
}
?>
```

### zusätzliche Pfade aus Relationen bilden

Möchte man die Filme Genres zuordnen, passiert dies meist über eine Relation zu diesen Kategorien.
Die Urls dazu könnten dann so aussehen: `/filme/komoedie/the-big-lebowski/`


### zusätzliche Pfade für die Url

#### zusätzliche Pfade für die Url
#### eigene Pfade an die Url hängen

Im Feld **eigene Pfade an die Url hängen** lassen sich zusätzliche Pfade eintragen, die als gültige URLs verwendet werden können. So ließe sich beispielsweise bei einem Artikel noch eine zusätzliche Seite über `example.com/kategorie/der_artikel/info/` anzeigen. Dann muss in dem Textfeld einfach nur `info` eingetragen werden - ohne vorangestellten und abschließenden Schrägstrich.
Im Feld **eigene Pfade an die Url hängen** lassen sich zusätzliche Pfade eintragen, die als gültige Urls verwendet werden können. So ließe sich beispielsweise bei einem Film noch eine zusätzliche Seite über `/filme/the-big-lebowski/zitate/` anzeigen. Dann muss in dem Textfeld einfach nur `zitate` eingetragen werden - ohne vorangestellten und abschließenden Schrägstrich.

Bei der Ausgabe kann man dann `$mypath = UrlGenerator::getCurrentOwnPath();` schreiben. Wenn die Seite mit dem Zusatz /info aufgerufen wird, enthält `$mypath` den Wert `info`.
<del>Bei der Ausgabe kann man dann `$mypath = UrlGenerator::getCurrentOwnPath();` schreiben. Wenn die Seite mit dem Zusatz /info aufgerufen wird, enthält `$mypath` den Wert `info`.</del>


#### Unterkategorien anhängen?

Es können an die erzeugte Url auch die Unterkategorien des Artikels angehangen werden
Die Urls dazu könnten dann so aussehen: `/filme/the-big-lebowski/schauspieler/`

`Schauspieler` ist dabei eine Unterkategorie der Kategorie `Filme` innerhalb der Strukturverwaltung.

<del>
### Beispiel: URL-Pathlist neu generieren

Wenn Datenbanktabellen außerhalb des YForm-Table-Managers befüllt werden, greift der passende EP nicht und die URLs werden nicht neu generiert. Dies lässt sich manuell nachholen, indem folgende Methode aufgerufen wird.

```
UrlGenerator::generatePathFile([]);
```

</del>

### Installation
--------------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions lang/de_de.lang
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ url_generator_article_error = Artikel wählen
url_generator_article_legend = In welchem Artikel erfolgt die Ausgabe
url_generator_clang_id_notice = Spalte der dazugehörigen eindeutigen Clang Id
url_generator_data = Daten
url_generator_help = Hilfe
url_generator_id_notice = Spalte der dazugehörigen eindeutigen Id
url_generator_identify_record = Datensatz identifizieren
url_generator_namespace = Namensraum
Expand Down

0 comments on commit cf0e3f4

Please sign in to comment.