Registered (R) hochstellen: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Erstellung eines kleinen Contao-Moduls)
(Erstellung eines kleinen Contao-Moduls)
Zeile 110: Zeile 110:
 
  $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('ModuleRegisteredR', 'registeredR');
 
  $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('ModuleRegisteredR', 'registeredR');
  
 +
Wir melden unser Programm '''registeredR''' aus unserer PHP-Klasse '''ModuleRegisteredR''' beim outputFrontendTemplate-HOOK an.
  
  

Version vom 14. August 2010, 08:44 Uhr

MsgError.png Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.

Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis.

betrifft
TYPOlight Version ab 2.6
Contao Version ab 2.9

Beim Arbeiten mit Produkten, z.B. in Katalogen, kommt es häufiger vor, dass man das Registered(R)-Symbol verwenden muss. Für die Auftraggeber ist ein einfaches Weglassen des Zeichens keine Alternative, da diese Markenrechte viel Geld gekostet haben und es jeder sehen soll, dass das Produkt markenrechtlich geschützt ist.

®-Zeichen auf der Computertastatur

Auf einem PC kann das ® mit der Tastenkombination [AltGr]+[⇧]+[R], auf MS-Windows-Systemen mit [Alt]+[0][1][7][4], in MS Word mit [AltGr]+[R] und auf Apple-Systemen mit [Alt]+[R] erzeugt werden. Unter Linux erzeugt man dieses Zeichen auf der deutschen Standardtastatur mit der Tastenkombination [Shift]+[AltGr]+[R] oder über die Compose-Kombination [Compose],[O],[R], falls diese nicht zur Verfügung steht.

.

Aufgabenstellung

Da das ® relativ zur Schrift meist hochgestellt verwendet wird, muss es bei jeder Verwendung extra formatiert werden. In HTML wird es dazu in die <sup>®</sup>-Tags eingeschlossen. Bei der Eingabe von laufendem Text ist das sehr lästig. Wenn das Zeichen beispielsweise in Titelfeldern im Backend verwendet wird, ist es normalerweise gar nicht möglich, HTML-Tags einzugeben, da Contao diese beim Speichern automatisch entfernt. Das kann man zwar mit Einträgen in der dcaconfig.php anpassen, es soll aber eine einfachere Möglichhkeit geben.

.

Lösungansätze

Hier mein Dank an die Kollegen aus dem IRC-Chat für die zahlreichen Ideen und Anregungen.


1. kleines JavaScript

Ein JavaScript würde nach dem Aufbau der Webseite hingehen und nachträglich die ® mit dem <sup>-Tag umschließen. Voraussetzung ist dabei, dass beim Betrachter im Browser JavaScript aktiviert ist.

.

2. über den Ausgabe-Hook mit einer kleinen Erweiterung

Diese Variante verspricht am meisten Erfolg, da hier die Webseite vor der Auslieferung entsprechend manipuliert werden kann. Es kostet natürlich etwas Überwindung, dafür eine Erweiterung zu schreiben, aber wir werden weiter unten sehen, dass es gar nicht so schlimm ist.

.

3. Bei der Eingabe im Backend modifizieren

Man könnte auch das Backend derart modifizieren, dass eine Speicher-Callback-Routine die Aufgabe ausführt. Dann muss man aber dafür sorgen, dass auch beim Laden über einen Load-Callback die Anpassung erstmal herausgenommen wird, da der Save-Callback sie ja dann wieder einbaut. Außerdem wären diese Callbacks für viele Felder in vielen Modulen notwendig. Diesen Ansatz kann man also auslassen.

.

Erstellung eines kleinen Contao-Moduls

Es hört sich erstmal schwierig an, doch diese einfache Erweiterung macht nicht so viele Aufwand.

Wir bauen die Verzeichnispfade auf

  • Dazu legen wir im Verzeichnis system/modules ein Verzeichnis registeredR an.
  • In diesem Verzeichnis legen wir das Verzeichnis config an, was dann die Modulkonfiguration definiert.
  • In das config-Verzeichnis kopieren wir aus einem Backend-Modul eine .htaccess-Datei, die für die Sicherheit des Moduls wichtig ist. Die .htaccess überwacht, dass nur das PHP-Script zugreifen darf, ein direkter Zugriff aus den Web bleibt ausgesperrt.

.

Konfigurationsdatei erstellen

In einem UTF-8-fähigen Editor erstellen wir die Datei config.php mit dem folgenden Inhalt und speichern sie im config-Verzeichnis ab.

<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');

/**
 * Contao Open Source CMS
 * Copyright (C) 2005-2010 Leo Feyer
 *
 * Formerly known as TYPOlight Open Source CMS.
 *
 * This program is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation, either
 * version 3 of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this program. If not, please visit the Free
 * Software Foundation website at <http://www.gnu.org/licenses/>.
 *
 * PHP version 5
 * @copyright  Leo Feyer 2005-2010
 * @author     Leo Feyer <http://www.contao.org>
 * @package    Backend
 * @license    LGPL
 * @filesource
 */

/**
 * -------------------------------------------------------------------------
 * HOOKS
 * -------------------------------------------------------------------------
 *
 * Hooking allows you to register one or more callback functions that are 
 * called on a particular event in a specific order. Thus, third party 
 * extensions can add functionality to the core system without having to
 * modify the source code.
 * 
 *   $GLOBALS['TL_HOOKS'] = array
 *   (
 *       'hook_1' => array
 *       (
 *           array('Class', 'Method'),
 *           array('Class', 'Method')
 *       )
 *   );
 * 
 * Use function array_insert() to modify an existing hooks array.
 */
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('ModuleRegisteredR', 'registeredR');

?>

Ganz wichtig ist, dass in der Datei vor dem <?php und nach dem ?> keine Zeichen oder Zeilenumbrüche stehen, da es sonst zu PHP-Fehlern in der Ausgabe kommt.

Das wichtige in dieser Datei ist die Zeile ganz unten:

$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('ModuleRegisteredR', 'registeredR');

Wir melden unser Programm registeredR aus unserer PHP-Klasse ModuleRegisteredR beim outputFrontendTemplate-HOOK an.



-- do_while - 2010-08-14

Ansichten
Meine Werkzeuge

Contao Community Documentation

Fork die Wand an!

Tristan Lins
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge