Skip to content

Views überschreiben

René Schirmer edited this page Jun 30, 2024 · 24 revisions

Views überschreiben


Inhaltsverzeichnis

Hinweis

Vom Grundsatz werden persönliche Änderungen an den Modulen unter "application/modules/" nicht empfohlen, da bei Updates der jeweiligen Module diese Dateien überschrieben werden und somit eigene Anpassungen verloren gehen.

Verbesserungen oder empfohlene Anpassungen die in ilch 2 einfließen sollen, müssten direkt in das Projekt IlchCMS - Ilch 2 eingeflochten werden. Somit ständen dann, mit der Überprüfung durch das Ilch-Team und dem Update, die Verbesserungen auch jedem zur Verfügung.

Wenn jedoch eigene den individuellen Bedürfnissen gewünschte Anpassungen gewollt sind, dann sollten die betroffenen Views, die Template-Ausgaben des betroffenen Moduls, in das verwendete Layout eingebunden und angepasst werden. Damit werden zukünftige Updates des betroffenen Moduls die eigenen Anpassungen nicht überschreiben.

Unter den folgenden Punkten werden die Maßnahmen und Abläufe im Allgemeinen und anhand von zwei Beispielen beschrieben.


Vorgehensweise

Um die Views (Template-Ausgaben) den eigenen Wünschen gemäß der oben genannten Empfehlung anzupassen, müssen die betroffenen Ausgaben des jeweiligen Moduls in das eigene Layout eingebunden und auch nur hier angepasst werden.

Die jeweiligen Views sind im Modulordner „application/modules/MODULNAME/views/“ zu finden und müssten dann in das eigene Layout „application/layouts/LAYOUTNAME/views/modules/MODULNAME/“ kopiert werden. Hier können dann die persönlichen Anpassungen eingebunden werden.

Beim Aufruf der Webseite werden vorhandene Views vom genutzten Layout geprüft und dargestellt. Wenn keine vorhanden sind, werden immer die Views der Module aus dem Ordner „application/modules/MODULNAME/views/“ verwendet.

Um zu erkennen wo sich die betroffene Datei befindet, die für eine Integration in das Layout notwendig ist, hilft grundlegend auch die URL beim Aufruf des jeweiligen Moduls der eigenen Webseite. So sieht man bei „domain.de/index.php/MODULNAME/index/index“ dass die aufgerufene View-Datei „application/modules/MODULNAME/views/index/index.php“ ist und die Kopie dieser Datei, für die eigene Anpassung, in die Ordnerstruktur „application/layouts/LAYOUTNAME/views/modules/MODULNAME/index/“ erfolgen muss.

Nun können in der „application/layouts/LAYOUTNAME/views/modules/MODULNAME/index/index.php“ individuelle Darstellungen integriert werden, welche vorrangig beim Aufruf deiner Seite angezeigt werden und vor allem nicht bei Updates überschrieben werden.

Es folgen jetzt zwei Beispiele um diese Grundlagen zu veranschaulichen.


Beispiele

Es werden nun am Gästebuch-Modul „application/modules/guestbook/“ und am Artikel Modul „application/modules/article/“ individuelle Anpassungen getätigt und die notwendigen Abläufe demonstriert. Diese Beispiele zeigen den Weg bzw. die Art und Weise wie man Module dem eigenen Layout entsprechend anpassen oder in anderer Form darstellen kann.


Beispiel - Gästebuch-Modul

Als Beispiel ändern wir den Link "Neuer Eintrag" des Gästebuchs und verschönern diesen etwas durch einen CSS Button.

screenshot_guestbook.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/guestbook/index/index
App-View: application/modules/guestbook/views/index/index.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/guestbook/index/index.php Ziel / einfügen

Nun kann im Code der index.php des Views im Layout der Link mit einer CSS Klasse versehen werden:

<div class="float-end">
    <a href="<?=$this->getUrl(['action' => 'newentry']) ?>"><?=$this->getTrans('entry') ?></a>
</div>

z.B. mit der Klasse class="guestbook_newentry"

<div class="float-end">
    <a class="guestbook_newentry" href="<?=$this->getUrl(['action' => 'newentry']) ?>"><?=$this->getTrans('entry') ?></a>
</div>

und in der style.css des verwendeten Layouts die CSS Klasse definieren z.B.:

a.guestbook_newentry{
    background-color: #f00;
    border: none;
    border-radius: 5px;
    color: #fff;
    font-size: 14px;
    padding: 5px 10px;
    text-align: center;
    text-decoration: none;
}

so würde dann das Ergebnis aussehen:

screenshot_guestbook_ergebnis.jpg


Beispiel - Artikel-Modul

Als Beispiel entfernen wir die Anzeige des Autors bzw. des Artikelerstellers in allen Artikelanzeigen. Hierzu muss man prüfen, in welchen Views der Autor angezeigt wird. In diesem Fall ist es aufgrund der vielen Anzeigemöglichkeiten etwas umfangreicher.

Artikel - Archiv Liste

screenshot_archive_list.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/article/archive/index
App-View: application/modules/article/views/archive/index.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/archive/index.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der archive/index.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

<?php if ($article->getAuthorId() != ''): ?>
    <?php $user = $userMapper->getUserById($article->getAuthorId()); ?>
    <?php if ($user != ''): ?>
        <i class="fa-solid fa-user" title="<?=$this->getTrans('author') ?>"></i> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $user->getId()]) ?>"><?=$this->escape($user->getName()) ?></a>&nbsp;&nbsp;
    <?php endif; ?>
<?php endif; ?>

Artikel - Archiv Auswahl

screenshot_archiv.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/article/archive/show/year/2022/month/12
App-View: application/modules/article/views/archive/show.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/archive/show.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der archive/show.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

<?php if ($article->getAuthorId() != ''): ?>
    <?php if ($article->getAuthorName() != ''): ?>
        <i class="fa-solid fa-user" title="<?=$this->getTrans('author') ?>"></i> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $article->getAuthorId()]) ?>"><?=$this->escape($article->getAuthorName()) ?></a>&nbsp;&nbsp;
    <?php endif; ?>
<?php endif; ?>

Artikel - Kategorie Auswahl

screenshot_cat.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/article/cats/show/id/1
Appl-View: application/modules/article/views/cats/show.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/cats/show.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der cats/show.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

<?php if ($article->getAuthorId() != ''): ?>
    <?php if ($article->getAuthorName() != ''): ?>
        <i class="fa-solid fa-user" title="<?=$this->getTrans('author') ?>"></i> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $article->getAuthorId()]) ?>"><?=$this->escape($article->getAuthorName()) ?></a>&nbsp;&nbsp;
    <?php endif; ?>
<?php endif; ?>

Artikel - Keyword Auswahl

screenshot_key.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/article/keywords/show/keyword/ilch
App-View: application/modules/article/views/keywords/show.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/keywords/show.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der keywords/show.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

<?php if ($article->getAuthorId() != ''): ?>
    <?php if ($article->getAuthorName() != ''): ?>
        <i class="fa-solid fa-user" title="<?=$this->getTrans('author') ?>"></i> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $article->getAuthorId()]) ?>"><?=$this->escape($article->getAuthorName()) ?></a>&nbsp;&nbsp;
    <?php endif; ?>
<?php endif; ?>

Artikel - Liste

screenshot_index.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/article/index/index
App-View: application/modules/article/views/index/index.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/index/index.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der index/index.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

<?php if ($article->getAuthorId() != ''): ?>
    <?php if ($article->getAuthorName() != ''): ?>
        <i class="fa-solid fa-user" title="<?=$this->getTrans('author') ?>"></i> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $article->getAuthorId()]) ?>"><?=$this->escape($article->getAuthorName()) ?></a>&nbsp;&nbsp;
    <?php endif; ?>
<?php endif; ?>

Artikel - Vollanzeige

screenshot_show.jpg

Info Pfad Bemerkung
URL: domain.de/index.php/article/index/show/id/1
App-View: application/modules/article/views/index/show.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/index/show.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der index/show.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

if ($article->getAuthorId() != ''):
    $user = $userMapper->getUserById($article->getAuthorId());
    if ($user != ''): ?>
        <i class="fa-solid fa-user" title="<?=$this->getTrans('author') ?>"></i> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $user->getId()]) ?>"><?=$this->escape($user->getName()) ?></a>&nbsp;&nbsp;
    <?php endif; ?>
<?php endif; ?>

Artikel - Box

screenshot_box.jpg

Info Pfad Bemerkung
App-View: application/modules/article/boxes/views/article.php Quelle / kopieren
Layout-View: application/layouts/LAYOUTNAME/views/modules/article/boxes/views/article.php Ziel / einfügen

Mit der Entfernung folgenden Codes aus der boxes/views/article.php des Layout-View, wo der Autor ermittelt und ausgegeben wird, wird im Ergebnis dieser nicht mehr angezeigt.

<?php if (!empty($article->getAuthorName())) : ?>
    <br>
    <?=$this->getTrans('by') ?> <a href="<?=$this->getUrl(['module' => 'user', 'controller' => 'profil', 'action' => 'index', 'user' => $article->getAuthorId()]) ?>"><?=$this->escape($article->getAuthorName()) ?></a>
<?php endif; ?>

Wiki für ilch-2

Benutzer

  • Inhaltsverzeichnis
    Hier findet man u.a. die Installationsanleitung, sowie Fehler- und Problem-behebungen

Entwickler

  • Inhaltsverzeichnis
    Hier findet man Informationen zum Script, Konzept und dem Programmierstil

Designer

  • Inhaltsverzeichnis
    Hier findet man Informationen über den Aufbau und Anpassung von Layouts und Modulen

Video-Tutorials


Clone this wiki locally