Die ClassID der Palette und ihrer Objekt ist 8.

Eine Aufstellung aller verwendeten Panelstatements der Palette finden Sie hier.

    1. Legen Sie einen Zielrahmen im Dokument fest. Dieser Rahmen wird durch das Template ersetzt
    2. Ist der Zielrahmen mit einem Objekt (z.B. der Produktrecherche) verknüpft, werden alle Platzhalter des Templates, die die gleiche KlassenID haben, mit diesem Objekt verknüpft und geladen. Durch gehaltene Alt-Taste kann das Laden der Platzhalter unterdrückt werden.

Die Eigenschaften von Templates werden in der Tabelle pageitems (ODBC-Verbindungen) bzw. in der Datei pageitems.xml (XML-Offline- und SOAP/Pubserver-Verbindungen) gesichert.

Für die Anlage neuer Templates in XML-Offline- und SOAP-Verbindungen muß die Datei pageitems.xml einen Eintrag mit der id 0 haben.

In PubServer-Verbindungen wird pageitems.xml automatisch vom PubServer generiert und enthält den 0-Eintrag standardmäßig.

Hier eine vollständige Definition eines pageitem-Eintrages mit allen unterstützen Features:

<?xml version="1.0"?>

<pageitems>
	<pageitem>
		<id>0</id>
		<name></name>
		<description></description>
		<color>-1</color>
		<data>
		<src></src>
		</data>
			<preview>
			<src></src>
		</preview>
		<type>
			<id>0</id>
			<name>no type</name>
		</type>
		<state>
			<id>0</id>
		<value>no state</value>
		</state>
		<domain>
			<id>0</id>
			<name>no client</name>
		</domain>
		<placeholder>
			<id>0</id>
			<name></name>
		</placeholder>
		<kind>frames</kind>
		<version>-1</version>
		<leftpos>0.0</leftpos>
		<toppos>0.0</toppos>
		<rightpos>0.0</rightpos>
		<bottompos>0.0</bottompos>
		<spread>
			<position></position>
			<leftitem>0</leftitem>
			<middleitem>0</middleitem>
			<rightitem>0</rightitem>
			<continue>0</continue>
			<scriptid>0</scriptid>
		</spread>
		<format>0</format>
		<magnets>0</magnets>
		<memberships></memberships>
		<active>3</active>
		<buildSupportScript>0</buildSupportScript>
		<hasShapes>0</hasShapes>
		<hasMinSize>0</hasMinSize>
		<realWidth>0.000000</realWidth>
		<realHeight>0.0</realHeight>
		<textflowPrefix1Action>0</textflowPrefix1Action>
		<textflowPrefix1></textflowPrefix1>
		<textflowPrefixNAction>0</textflowPrefixNAction>
		<textflowPrefixN></textflowPrefixN>
		<position>1</position>
	</pageitem>
</pageitems>

Das korrespondierende Template wird nach dem in der folgenden Tabelle beschrieben Schema ermittelt:

SpreadID Seitentyp Verwendetes Template
Datenbank, Tabelle pageitems
Links Neutral Rechts
0 alle selbst
1 linke Seiten selbst MiddleID RightID
2 neutrale Seiten LeftID selbst RightID
3 rechte Seiten LeftID MiddleID selbst
XML und SOAP, Datei pageitems.xml
Links Neutral Rechts
alle selbst
left, links linke Seiten selbst spread.middleitem spread.rightitem
unisex, mitte neutrale Seiten spread.leftitem selbst spread.rightitem
right, rechts rechte Seiten spread.leftitem spread.middleitem selbst

Seit Version 2.1 R 1760 Templates werden in das Template-Popup der Produktrecherche aufgenommen. In dieses Menü werden nur Rahmen-Templates aufgenommen, Snippets und Tabellentemplates werden in diesem Menü nicht gezeigt :

In den Einstellungen zum Template (bei Neuanlage oder Button der Palette Templates) können Sie die Sichtbarkeit eines Templates in der anderen Fenstern festlegen. Folgende Werte sind definiert :

Sichtbarkeiten von Templates machen eine Erweiterung des Datenmodelles von Daten vor R1760 (22.2.2010) nötig (Die Einstellung muss ja irgendwo festgehalten werden). Ob die Erweiterung gemacht wurde, wird von Comet automatisch bei Verbindung mit dem Datenpool geprüft. Ist diese Erweiterung nicht gemacht, bleiben alle Templates per Default sichtbar. Folgende Werte sind definiert :

Wert Sichtbarkeit
0 unsichtbar
1 sichtbar in der Desktop-Anwendung
2 sichtbar im Whiteboard
3 immer sichtbar
10 sichbar nur in der Previewpalette

Erweitern Sie die Tabelle pageitems um das Feld active vom Typ int. Setzen Sie dessen Werte jeweils auf 3 :

mysql> alter table pageitems add active int;
mysql> update pageitems set active = 3 where id > 0;

Erweitern Sie in der Datei pageitems.xml alle pageitems.pageitem-Elemente um das Attribut active :

<active>3</active>

Seit Version 1.3.1 R112

Nach der Ermittlung des seitentypischen Templates wird das Template-ID-Skript des Zieltemplates ausgeführt. Dieses Skript kann unter Berücksichtigung der Zielseite und -position die ID des Templates, das tatsächlich eingefügt werden soll, ändern.

Achtung : Ab v3.3 R2630 wird das Skript auch im Seitenaufbau verwendet. Eine vollständige Beschreibung dazu finden Sie hier.

Template-ID Skripte werden in actions definiert und haben dort die ClassID 15.

Das Skript wird nur ausgeführt, wenn die SkriptID des Templates größer 0 ist. Hat das Skript einen Rückgabewert ungleich 0, wird das Template nicht eingefügt und die einfügende Funktion erzeugt den Fehler pageItemNotDefinedErr (1247).

Über die (nur in Template-ID-Skripten) definierte globale Variable gPageitemID kann die ID des einzusetzenden Templates geändert werden. Eine vollständige Aufzählung der in Template-ID-Skripten definierten globalen Variablen finden Sie hier. Hier ein sehr simples Beispiel:

int main ()
{
	*gPageitemID = 123;

	eturn 0;
}

Um die Template-ID Skripte, die nur in seltenen Situationen benötigt werden, zu aktivieren, müssen die Tabelle pageitems und/oder die Datei pageitems.xml um das Attribut/Element scriptid erweitert werden. Folgende Schritte sind dazu nötig:

Erweitern Sie die Tabelle pageitems um das Attribut scriptid. Der Wert wird für alle Einträge mit 0 initialisiert. Hier die nötigen SQL-Anweisungen:

alter table PageItems add scriptid number (10);
update PageItems set scriptid = 0;
commit;

Für XML und SOAP muss die Datei pageitems.xml um das Element

   pageitems.pageitem.spread.scriptid

erweitert werden. Dazu wird folgendes Vorgehen vorgeschlagen:

  1. Öffnen Sie die Datei xentities.xml und fügen dort die folgenden Zeilen ein:
    <dummy>
    	<file>pageitems.xml</file>
    	<attr>pageitems.pageitem.spread</attr>
    	<name>scriptid</name>
    	<type>name</type>
    	<writable>1</writable>
    </dummy>
    
  2. Öffnen Sie die Datei mit dem WERK II Programm xmlquery und sichern Sie die Datei mit commit :
    > xmlquery
    > open pageitems
    > update scriptid = 0 node pageitems.pageitem 
    > commit;
  3. Die Datei pageitems.xml enthält jetzt das gewünschte Attribut jeweils mit dem Wert 0. Damit das Feld nicht jedesmal neu angelegt wird, entfernen Sie die in Schritt 1 eingefügten Zeilen wieder aus xentities.xml.

Template-ID-Skripte werden wie alle anderen Skripte in der Tabelle actions bzw. in der Datei actions.xml verwaltet. Als ClassID der Aktion geben Sie 15 an.

  1. Einfügen eines neuen Eintrages mit der ClassID 15 in Tabelle actions bzw. in die Datei actions.xml.
  2. Öffnen des Skriptes über die Palette Platzhalterwerte. Dazu wird um Editfeld Script: die ID des Skriptes eingetragen und das danebenstehende Button geklickt.

[Seit v4.1 R21612] Der Produktaufbau prüft vor dem Einsetzen eines Produkt-Templates die Größe des verfügbaren Platzes im Seitenelement. Als Templategröße wird dabei die Größe der BoundingBox um alle Rahmen des Templates verwendet. Die Größe des Haupttemplates wird in der Liste der Templates angezeigt:

Ist das Seitenelement zu klein, wird das nächste passende Seitenelement gesucht. Um möglichst wenig Weißraum im Dokument zu erhalten ist es also nötig, die Templates so klein wie möglich zu machen. Aber die kleinen Templates haben natürlich andererseits das Problem, dass sie ziemlich schwer zu editieren sind, weil alle Rahmen auf ihre minimale Höhe verkleinert wurden.

Mit der Einstellung Erwartete Minimalgröße des Dialoges für die Eintellungen eines Templates (Button der Palette Templates) können Sie einen erwarteten Minimalwert für die Templategröße festlegen. Der Produktaufbau verwendet dann zur Größenprüfung anstelle der tatsächichen Größe der Rahmen die hier angegebenen Werte (und die Rahmen im Template können beliebige Größen haben). Die festgelegte Minimalgröße gilt für alle Untertemplates!

Templates, deren Minimalgröße zur Prüfung verwendet wird, werden in der Palette mit einem roten Stern hinter der Größenangabe markiert:

Bitte beachten Sie folgende Hinweise:

  1. Für die Verwendung des Features ist eine Erweiterung der Standardtabelle/datei pageitems nötig. Hier finden Sie nähere Informationen dazu.
  2. "Alte" Templates müssen zur Aktivierung der Option einmal neu gesichert werden. Öffnen Sie dazu das Template mit Doppelklick in den Listeneintrag und sichern Sie das Template mit Hilfe Alt-Klick des Buttons der Palette Templates. Danach kann das Template-Dokument wieder geschlossen werden.
  3. Als untere Größe der Minimalgröße sind jeweils 10 Pt festgelegt.

Folgende Anweisungen können Templates ins Dokument einfügen :

Skriptbefehl Beschreibung
document::store_macro Ändern eines Templates im Datenbestand (kann nicht rückgängig gemacht werden)
document::insert_macro datgenbankgesicherte Template ins Dokument einsetzen
document::place_items Template ins Dokument einsetzen
document::build_products und verwandte Rasteraufbau
productlist::establish und verwandte Seitenaufbau

Ab Version 1.4 können Platzhalter mit Tabellen verknüpft werden. Die Tabellen selbst werden dabei als Templates verwaltet und die Templates enthalten in einem (ab 1.4 neuen) Attribut eine Angabe, von welcher Sorte ein Template ist. Folgende Sorten sind definiert :

Datenbank XML/SOAP
0 frames
1 table
sonst frames

Für die Unterscheidung, ob ein Template eine Tabelle oder Rahmen enthält, muss die Datendefinition für Templates erweitert werden. Folgende Schritte sind dazu nötig:

Erweitern Sie die Tabelle pageitems um das Attribut kindID. Der Wert wird für alle Einträge mit 0 initialisiert. Hier die nötigen SQL-Anweisungen:

alter table PageItems add kindID number (10);
update PageItems set kindID = 0;
commit;

Wenn Sie wollen, können Sie auch noch eine Tabelle anlegen, die eine Zuordnung der kindIDs zu einem Namen enthält wie oben angegeben, enthält. Für die Plugins ist diese Tabelle nicht erforderlich.

Für XML und SOAP muss die Datei pageitems.xml um das Element

   pageitems.pageitem.kind

erweitert werden. Dazu wird folgendes Vorgehen vorgeschlagen:

  1. Öffnen Sie die Datei xentities.xml und fügen dort die folgenden Zeilen ein:
    <dummy>
    	<file>pageitems.xml</file>
    	<attr>pageitems.pageitem</attr>
    	<name>kind</name>
    	<type>name</type>
    	<writable>1</writable>
    </dummy>
    
  2. Öffnen Sie die Datei mit dem WERK II Programm xmlquery und sichern Sie die Datei mit commit :
    > xmlquery
    > open pageitems
    > update kind = 'frames' node pageitems.pageitem
    > commit;
  3. Die Datei pageitems.xml enthält jetzt das gewünschte Attribut jeweils mit dem Wert 'frames'. Damit das Feld nicht jedesmal neu angelegt wird, entfernen Sie die in Schritt 1 eingefügten Zeilen wieder aus xentities.xml.

[Ab Version 1.4.2, R 504] Zwischen den Rahmen eines Templates können Magneten definiert sein, die die Abstände der Rahmen zueinander festlegen. Verändern Rahmen beim Laden ihrer Platzhalter ihre Grösse oder Position, werden die Abstände nach dem Laden wieder auf die ursprünglichen Werte zurückgesetzt. Sind an den gegenüberliegenden Kanten Nägel definiert, verändern diese Kanten ihre Position nicht - dann wird die Rahmengröße entsprechend angepasst

Für magnetisierte Templates muss das Plugin priint:adjust installiert sein.

Wenn Sie zwischen Rahmen eines Templates Magentabstände festlegen müssen Sie an der Seite gegenüber dem ersten Magneten einen Nagel setzen.

Beim Anlegen eines Templates wird geprüft, ob das Template überhaupt Magneten enthält. Nur in diesem Fall wird nach dem Laden der (aufwendige) Prozess des Abstand-Recovers durchgeführt. Die nötige Angabe wird im Attribut

    magnets

festgehalten. Wollen Sie diese Eigenschaft verwenden, muss die Datei/Tabelle panelstatements anlog den Erweiterungen für Tabellenplatzhalter um das Attribut magnets erweitert werden.

InDesign®-Dokumente sind nicht rückwärtskompatibel, d.h., Dokumente, die mit einer neueren InDesign®-Version erstellt wurden, können von älteren InDesign®-Versionen ncht mehr geöffnet werden.

Hinweis: Um den Inhalt neuerer Dokumente auch in älteren InDesigns verfügbar zu machen, können Sie das Dokument in der neueren Version im IDML Format exportieren. IDML läßt sich über alle Versionen öffnen. In neueren InDesigns stellt Adobe zudem automatisch einen Cloud-Service zur Verfügung, der ihr Dokument downgraded (und dazu mit Sicherheit ebenfalls die IDML-Ehrenrunde läuft).

Umgekehrt kann ein neues InDesign® ältere Dokumente öffnen. Adobe verspricht hier eine Kompatibilität von zwei Versionen rückwärts, öffnet aber auch ältere Dokumente. Sie sollten den Inhalt so geöffneter älterer Dokumente dennoch sorgfältig prüfen!

Achtung: Ältere Dokumente werden von InDesign® immer als neue und ungesicherte Dokumente geöffnet die also auch noch keinen Dateipfad haben. Alle Aktionen die auf dem Dateipfad des Dokumentes basieren wie z.B. document::save basieren werden also fehlschlagen.

InDesign® Haupt-Version
CC 2018 13
CC 2019 14
2020 15
2021 16
2022 17
2023 18
2024 19

Ab v4.2 R32000 können Templates zusammen mit einer InDesign-Versionsnummer gesichert werden. Die priint:comet-Plugins warnen dann vor dem Editieren und Überschreiben von Templates älterer InDesigns und die Verwendung von Templates neuerer InDesigns wird bereits im Vorfeld verhindert.

Hier finden Sie Beschreibungen zum Aktivieren des Features:

Templates aus einer abweichenden InDesign-Version werden in der Palette mit einem roten Stern vor dem Namen gekennzeichnet. Bei Templates jüngerer InDesign-Versionen werden zusätzlich Name und Preview ausgegraut. Hier ein Screenshot:

[Seit v5.0 R36820] Templates können beim Anlegen und Sichern mit einem Timestamp versehen werden. Beim Laden der Templates werden diese Zeitstempel automatisch mit geladen. Soll ein Template später gesichert oder gelöscht werden, wird zuerst der aktuelle Zeitstempel des Templates im Datenbestand ermittelt. Nur wenn der aktuelle Zeitstempel kleiner oder gleich dem initialen Zeitstempel, wird die Änderung ausgeführt. Nach der Änderung wird das Template im Datenpool mit einem neuen Timestamp versehen. Der Timestamp verhindert damit das unbeabsichtigte Ändern oder Löschen 'eben' geänderter Templates.

Zeitstempel werden in Millisekunden Welzeituhr (UTC) nach dem 12. Jan. 1970 angegeben.

Zusätzlich zum Zeitstempel wird der Loginname der letzten Änderung im Template hinterlegt.

Achtung: Beim Neuladen der Templates-Palette werden auch die Zeitstempel neu geladen!

Hier finden Sie Beschreibungen zum Aktivieren des Features:

[Ab Version 3.1, R1956, 17. Juni 2010] Vor dem Löschen eines Templates mit kann im Datenpool nachgefragt werden, ob es erlaubt ist, dieses Template zu löschen. Die dazu notwendige Anweisung hinterlegen Sie im

Panelstatement 118

Die Anweisung darf ein Datenbankbefehl (unter SOAP auch eine SOAP-Anweisung) oder ein cScript sein.

Selects und SOAP-Anweisungen enthalten ein Fragezeichen (?), das durch die ID des Templates ersetzt wird. Es wird genau eine String-Ergebnisspalte erwartet, siehe hier.

Die folgende Anweisung verbietet das Löschen aller Templates.

select "beep" from pageitems where id = ?

Für komplexere Prüfungen kann die Anweisung auch als Skript geschrieben werden. Das Ergebnis der Prüfung wird in der Ausgabevariable gResult übergeben: Ist gResult leer, wird gelöscht, sonst nicht. Eine genaue Beschreibung der im Skript definierten Variablen finden Sie in folgender Tabelle.

Variable Typ Beschreibung
gResult char[5000] - Rückgabewert Folgende Angaben sind im Ergebnis erlaubt:
  • "" : Das Template darf gelöscht werden.
  • "beep" : Das Template darf nicht gelöscht werden. Auf den Löschversuch wird mit einem Piep reagiert.
  • "no_message" : Das Template darf nicht gelöscht werden. Der Löschversuch wird ignoriert.
  • Sonst : Das Template darf nicht gelöscht werden. Bei einem Löschversuch wird die angegebene Warnmeldung gezeigt.
gRecordID int ID des Templates
gRecordStringID char* readonly Name des Templates
gTimestamp int [Seit v5.0 R36820] Timestamp der letzten Änderung des Templates. Die Angabe erfolgt in Millisekunden und entspricht dem Timestamp der Templates. Siehe auch system::now mit der Formatangabe 113.
gLastUpdatedBy char* [Seit v5.0 R36820] readonly Wer hat die letzte Änderung am Template vorgenommen?

Das Skript verbietet das Löschen ungeradzahliger Templates.

int main ()
{
	if (gRecordID % 2)
	{
		sprintf (gResult,
					"Ungeradzahlige Templates (%d) können nicht gelöscht werden.",
					gRecordID
				);
	}
	
	return 0;
}

Fortsetzungsrahmen werden verwendet, wenn mindestens ein Text eines Templates beim Laden der Platzhalter einen Overset bekommt, das Produkt aber (möglicherweise mit modifizierten Rahmen) weitergeführt werden soll.

Das Template enthält zum Beispiel eine Tabelle, die so hoch werden kann, dass sie nicht mehr auf eine Seite passt. Neben der Tabelle soll aber ein Produktbild stehen. Wie bekommen Sie dieses Bild auf die nächste Seite?

Um Fortsetzungstemplates verwenden zu können, müssen Sie drei Dinge tun :

  1. Template und Fortsetzung definieren, siehe hier.
  2. Sie müssen die Textrahmen auszeichnen, die fortgesetzt werden sollen
  3. Damit die Textrahmen verlinkt werden können, müssen Sie eine Zuordnung zwischen den Rahmen des Templates und der Fortsetzung definieren die sogenannte Rahmenkennung.

Enthält das Template einen fortzusetzenden Rahmen, der nach dem Laden einen Overset hat, wird dieser Rahmen innerhalb des Templates zuerst auf seine maximale Höhe vergrößert.

Prüft das aktuelle Seitenelement die Grösse der Rahmen, die eingefügt werden, wird der Textrahmen so vergössest, dass das Seitenelement maximal ausgefüllt wird. Soll das Seitenelement die Grösse der eingefügten Rahmen nicht prüfen, kann das aktuelle Template bis zum unteren Seitenrand wachsen. In beiden Fällen wird nach der Vergrößerung des Textrahmens erneut der Overset geprüft.

Konnte der Overset beseitigt werden, wird die Rahmengröße an den Inhalt angepasst. Besteht nach der Vergrößerung aber immer noch Overset, wird versucht, das Fortsetzungtemplate zu laden und das Produkt dort weiterzuführen. Der Textrahmen mit dem Overset wird automatisch mit den entsprechenden Rahmen der Fortsetzung verlinkt.

Das neue Template wird im nächsten möglichen Seitenelement des Produktaufbaus platziert. Wird auf der Seite kein passendendes Element mehr gefunden, wird eine neue Seite angelegt. Kurz gesagt, es wird also verfahren, als enthielte die Liste der aufzubauenden Produkte einen weiteren (Zwischen)-Eintrag, der jetzt abgearbeitet werden muss.

Wie andere Templates auch können natürlich auch Fortsetzungs-Templates neue Seite anlegen. Mehr dazu finden Sie hier.

Ob der Overset eines Rahmens beim Seitenaufbau geprüft werden soll, stellen Sie in den Rahmeneigenschaften ein (siehe hier). Sie können jeden beliebigen Textrahmen als Fortsetzugsrahmen markieren. Liegen Textrahmen untereinander, kann aber nur der am höchsten liegende Rahmen auch größer werden. Darunter liegende Rahmen behalten ihre Grösse. Nebeneinander liegende Rahmen können unabhängig von einander wachsen.

Bei der Veränderung der Textrahmengrößen müssen darunterliegende Rahmen nach unten verdrängt werden. Damit die Abstände zwischen den Rahmen erhalten bleiben, müssen Sie zwischen den Rahmen entsprechende Magneten setzen. Vergessen Sie dabei nicht, die Gegenseite der Magnetkette mit einem Nagel zu fixieren!

Die Verknüpfung der Textrahmen zwischen Template und Fortsetzung erfolgt natürlich automatisch. Sie müssen aber kennzeichnen, welche Rahmen mit einander verknüpft werden sollen. Dazu dient die Rahmenkennung, die Sie in den Rahmeneigenschaften einstellen. Werden in Template und Fortsetzung zwei Rahmen mit gleicher Kennung gefunden, werden diese Rahmen mit einander verknüpft.

Als Kennung kann jedes beliebiges Unicode-Zeichen verwendet werden. Abhängig davon, was auf Ihrem Rechner für Schriften installiert sind, kann es aber sein, dass einige Zeichen nicht richtig dargestellt werden.

Der Unicode der Kennungen wird darüberhinaus verwendet, die Reihenfolge festzulegen, in der die Gestaltungsregeln eines Templates ausgeführt werden.

Ist der Rahmen der Fortsetzung kein Textrahmen, wird er zu einem Textrahmen gemacht. Ein eventuelles Bild im Rahmen wird dabei gelöscht.

Textverlinkungen sind immer nur zwischen zwei Rahmen möglich. Sie sollten also darauf achten, die Kennung bei Textrahmen, die verlinkt werden sollen, jeweils nur einmal zu verwenden. Damit Sie nicht mit ständigen Warnungen terrorisiert werden, wird innerhalb der Plugins keine Prüfung der Kennung gemacht.

Templates können Untertemplates für linke und rechte Seiten und für Fortsetzungen enthalten. Um eine Templategruppe anzulegen, gehen Sie wie folgt vor :

[ab Version 3.2.3 R2568] Wird ein Template im Textflussaufbau verwendet, kann neben den Einstellungen zur Reihenfolge und Sichtbarkeit der Rahmen des Templates auch der Trenntext eingestellt werden, den ein Produkt durch das Template im Textfluss bekommt. Sie können dabei jeweils zwei Trenntexte verwenden :

Als Trenntext können vordefinierte Trenner (Leerzeichen, Absatz), feste Texte (auch TaggedText) oder skriptgenerierte Texte eingesetzt werden. Die Einstellungen werden im Template-Dialog im Teile Textfluss-Präfix gemacht.

Für die Verwendung des Features muss das Datenmodul erweitert werden, mehr dazu siehe hier.

Trenntexte können mit Hilfe von Skripten berechnet werden. Trenntexte können so speziell in Abhängigkeit von Seitentemplate und -element, Template, Seite und Produkt bestimmt werden.

Die Skripte werden wie üblich in actions definiert und tragen dort die Klassen-ID 46. Folgenden globalen Variablen sind zusätzlich zu den üblichen Variablen wie gRecordID, ..., gFrame, ... in diesen Skripten definiert:

Variable Typ Beschreibung
gPageNum int aktuelle Seitennummer (1-basiert)
gTemplateID int aktuelles Template
gTemplateName char*
gPageTemplateID int aktuelles Seitentemplate
gPageTemplateName char*
gElement int aktuelles Seitenelement
gElementName char*
gParam1 char* Benutzertext aus dem Dialog "Template-Einstellungen"
gPrefix char* Ergebniss-String, max. 5000 Zeichen. Füllen Sie den String mit dem gewünschten Präfix-Text.

Das erste Produkt bekommt ganz einfach eine 1 vorangestellt. Beachten Sie folgendes : Soll der neue Absatz einen anderen Absatzstil als das aktuelle Textende bekommen, müssen Sie hier explizit einen Absatzstil angeben: Wird nämlich der Trenntext vor dem Produkt eingefügt, ist dessen Absatzstil natürlich noch unbekannt. Wird der Trenntext nach dem Einfügen des Produktes eingeschoben (was ja möglich wäre), hat der neue Produkttext bis zum ersten Absatzende den Absatzstil des jetzigen Textendes.

int main ()
{
	sprintf (gPrefix, "%%!TT<ParaStyle:Titel>1. ");

	return 0;
}

Alle weiteren Produkte beginnen mit einem neuen Absatz und werden gezählt. Zum Zählen wird ein Platzhalter (hier die 11) verwendet, der pro Produkt nur einmal verwendet wird.

int main ()
{
	LinkList 	lli 	= linklist::alloc ();

	linklist::text_collect (lli, gFrame, 0, -1, 1, 11);

	sprintf (gPrefix, 
			"%%!TT<ParaStyle:><ParaStyle:Titel>%d. ", 
			linklist::length (lli)+1);

	return 0;
}

[Ab Version 3.2] In der Palette Template-Verhalten werden die template-relevanten Daten der aktuellen Rahmenauswahl oder Cometgruppe gezeigt.

Die Liste passt sich der aktuellen Dokumentauswahl an. Umgekehrt können über die Einträge der Liste aber auch die Dokumentrahmen ausgewählt werden. Die Sortierung der Liste erfolgt nach der Templateart (links, rechts, Fortsetzunge) und nach der Sequenznummer der Rahmen.

Folgende drei Auswahlmöglichkeiten werden unterschieden:

Zeigt mindestens ein Rahmen der aktuellen Dokumentauswahl sein Templateverhalten, werden alle Rahmen der Seite gezeigt, die zum selben Template gehören. Die Liste bekommt als (orange) Überschrift den Templatenamen.

Die Gruppenzugehörigkeit wird über eine interne Markierung in den Rahmen gemacht. Diese Markierung kann nicht beeinflusst werden. Sie besteht jeweils aus dem Benutzernamen und dem aktuellen Datum mit Uhrzeit. Die Markierung wird beim Sichern eines Templates und beim Anlegen der gespiegelten (und Fortsetzungsrahmen) mit Hilfe des Spielgen-Buttons der Palette () aktualisiert. Wenn Sie Rahmen mit Copy/Paste anlegen, bleibt die Markierung erhalten.

Wird in keinem Rahmen der Auswahl das Templateverhalten gezeigt, aber alle Rahmen der Auswahl gehören zur selben Comet-Gruppe, werden alle Rahmen der Cometgruppe gezeigt. Hinter dem Namen der Cometgruppe (also dessen ID) wird außerdem der Name des Templates gezeigt, über das die Rahmen ins Dokument gekommen sind. Wurden die Rahmen ohne Template eingefügt, bleibt diese Angabe natürlich leer. Wurden mehrere Templates verwendet, werden alle Templatenamen gezeigt.

Die Listenüberschrift zeigt die Cometgruppen-ID und den (oder die) Templatenamen:

Zeigt kein Rahmen der Auswahl sein Templateverhalten und gehören die Rahmen keiner oder verschiedenen Cometgruppen an, wird die aktuelle Rahmenauswahl angezeigt.

Hier die Listenüberschrift für diesen Fall:

Button Beschreibung

Anlegen der gespiegelten Rahmen. Dabei werden die Positionen gespiegelt, nicht die Rahmen selbst.

Alt-Taste : Bei gehaltener Alt-Taste werden auch die Rahmen für die Fortsetzung angelegt. Textrahmen, unter denen keine weiteren Textrahmen liegen, werden dabei automatisch als Fortsetzugsrahmen ausgezeichnet.

Sichtbarmachen und Verstecken der Template-Einstellungen der ausgewählten Dokumentrahmen

Alt-Taste : An allen Rahmen des Dokumentes die Einstellungen unsichtbar machen.

Ändern der Sequenznummer
Ändern der Kennung
Auswahl aller Rahmen der Liste mit gleicher Kennung wie der erste ausgewählte Eintrag

Was zeigen die Einträge der Palette?

Spalte Beschreibung
1 In einem Rechteck, dass den Proportionen der aktuellen Dokumentseite entspricht, wird die ungefähre Lage und Grösse des Rahmens auf der Seite gezeigt.
2

Kennung des Rahmens und Typ des Templates. So ändern Sie die Kennung.

3 oben Rahmentyp und ID
3 unten Bildpfad oder Textbeginn (soweit verfügbar)
4

Weitere Rahmeneigenschaften. Die Eigenschaften werden jeweils durch Mausklick geändert.

Spalte Funktion Beschreibung Werte
1 Seitenwechsel

Seitenwechsel können an einem beliebigen Rahmen des Templates festgelegt werden. Der Seitenwechsel gilt für das gesamte Template.

Mehr dazu siehe hier.

Leer normaler Aufbau
neue linke Seite
neue rechte Seite
neue Seite
ab v4.0.5 R9730 Bei 1:N-Seitenelementen nächstes Seitenelement, sonst ein Seitenelement überspringen
2 Überdeckungen Welche Fläche des Rahmens soll bei der Prüfung von Rahmenüberdeckungen im Produktaufbau beachtet werden?

Mehr dazu siehe hier.

Bounding Box
Rahmen/Bildkanten (ignoriert in 1:N-Elementen)
Rahmen/Bildkanten mit Löchern (ignoriert in 1:N-Elementen)
ignorieren
3 Textfortsetzungen / Inhaltsübernahme Sollen Inhalte aus vorangegangenen Templates fortgesetzt oder übernommen werden?

Mehr zu Textübersatz und Verlinkung siehe hier.

keine Textfortsetzung und keine Inhaltsübernahme
Nur bei Textrahmen : Hat der Rahmen Text einen Textübersatz wird das Nachfolge-Template eingesetzt und der Rahmen mit dem Rahmen gleicher Kennung in der Fortsetzung als Textkette verknüpft. Die Höhe des Rahmens wird dabei nicht verändert.

Nur bei Textrahmen : Hat der Rahmen Text einen Textübersatz wird der Rahmen zuerst an die Höhe des Seitenelementes angepasst. Löst das den Übersatz nicht auf, wird das Nachfolge-Template eingesetzt und der Rahmen mit dem Rahmen gleicher Kennung in der Fortsetzung als Textkette verknüpft.

[ab v4.1 R20224] Bei Rahmen zum Aufbau wiederholender Elemente: Ist das gefüllte Dreieck gesetzt, wird der Rahmen vor dem Laden der wiederholenden Elemente auf die vom Seitenelement festegelegte maximal mögliche Höhe vergrößert und nach dem Laden der Elemente an die Größe aller geladenen Elemente angepasst. Mehr Infos dazu finden Sie hier.

[ab v4.2 R33710] Fortsetzungen übernehmen den Inhalt des Rahmens mit der gleichen Kennung des Haupttemplates. Platzhalter an oder in diesen Rahmen werden ignoriert und nicht geladen.

Texte werden inklusive aller Formatierungen übernommen. Soll der Text in der Fortsetzung anders formatiert sein, kann die Textübernahme nicht verwendet werden.

4 Inhaltsübernahme bei Reorganisation Welche Inhalte befreundeter Rahmen sollen beim Tausch von Templates bestehender Cometgruppen übernommen werden?

Mehr zu befreundeten Rahmen siehe hier.

Leer Inhalte befreundeter Rahmen werden übernommen 
Auch bei befreundeten Rahmen Rahmenplatzhalter neu laden
Auch bei befreundeten Rahmen Textplatzhalter neu laden
Auch bei befreundeten Rahmen alle Platzhalter neu laden
5 Verwendung im Textfluss Verwendung des Rahmens in Seitenelementen mit Textfluss Leer Nicht verwenden
Textinhalt einfügen
Rahmen als Inline einfügen
6 Verwendung im Produktaufbau Verwendung beim Produktaufbau nicht verwenden
verwenden

[Ab v4.0.5 R17030] verwenden, aber von Reorganisationen ausschließen

Damit Cometgruppen von der Reorganisation ausgeschlossen werden, müssen alle Rahmen der Cometgruppe diese Eigenschaft gesetzt haben!

Reihenfolge, Kennung und Fortsetzungstyp der Rahmen können im Dokument gezeigt werden.

So schalten Sie die Anzeige des Template-Verhaltens an den Rahmen ein und aus:

Wird ein Template durch Doppelklick geöffnet, ist das Template-Verhalten aller Rahmen automatisch sichtbar.

Die Reihenfolge der Rahmen in der Palette Template-Verhalten bestimmt die Reihenfolge, in der die Rahmen bei Produktaufbau und Reorganisation bearbeitet werden. Im Textflußaufbau bestimmt die Reihenfolge der Liste, in welcher Reihenfolge die Rahmen (oder ihr Inhalt) in den laufenden Text eingefügt werden. Die Sequenznummer wird (bei sichtbarem Template-Verhalten) schwarz hinterlegt unten rechts an den Rahmen gezeigt:

Um die Reihenfolge zu ändern, verwenden Sie die Buttons und unten links in der Palette.

Bitte beachten Sie: Wenn Sie bestehende Rahmen zu Templates machen, haben die Rahmen mglw. noch keine unterschiedlichen Sequenznummern. Bitte überprüfen Sie daher bei neuen Templates, ob die Sequenznummern der Rahmen festgelegt sind. Sind die Sequenznummern noch nicht festgelegt, klicken Sie mind. einmal eins der Buttons oder unten links in der Palette.

Über die Kennung geben Sie einem Rahmen eine eindeutige und permanente Identifizierung innerhalb des Templates bzw. der Comet-Gruppe. Bitte beachten Sie, dass die Kennungen auch nach dem Produkt-Aufbau eindeutig bleiben müssen. Eventuell während des Aufbaus hinzugefügte Rahmen müssen also jeweils weitere und unterschiedliche Kennungen bekommen. Zum Setzen der Rahmenkennung können Sie die Funktion frame::set_smart_item_data verwenden.

Die Kennung besteht aus einem einzelnen Unicodezeichen und kann im Feld Kennung in der Palette Template-Verhalten festgelegt werden. Die Kennung wird (bei sichtbarem Template-Verhalten) rot hinterlegt oben rechts an den Rahmen gezeigt:

Kennungen werden in folgenden Situationen verwendet:

  1. Forsetzungstemplates : Über die Kennung wird festgelegt, zu welchem Rahmen der Fortsetzung die Textkette gebildet werden soll.
  2. Templatewechsel : Ist bei einer Reorganisation ein Templatewechsel nötig, werden die Inhalte von Rahmen gleicher Kennung aus dem alten Template in das neue Template übernommen (und nicht extra neu geladen!). Beachten Sie aber bitte, dass Fortsetzungen bei Reorgansationen immer neu angelegt werden - Inhalte von Fortsetzungen können also nicht in das neue Template übernommen werden.
  3. Gestaltungsregeln : Der Unicode der Kennung wird verwendet, um festzulegen, in welcher Reihenfolge die Gestaltungsregeln der Templates bei Reorganisationen ausgeführt werden.
  4. Skripte : Mit Hilfe der Funktion frame::get_cometgroup_member können Sie den Rahmen in der Comet-Gruppe des übergebenen Rahmens finden.

Benötigen Sie keine der oben genannten Funktionalitäten, kann die Kennung weggelassen werden. Aber wenn Sie Kennungen vergeben, müssen Sie darauf achten, dass die Kennungen innerhalb einer Cometgruppe eindeutig sind!

Templates können neue Seiten anlegen oder zum nächsten Seitenelement springen. Soll zum nächsten Seitenelement gesprungen werden (Einstellung ) und der Aufbau befindet sich beim letzten Seitenelement, wird automatisch eine Seite angelegt und der Aufbau dort beim ersten Seitenelement fortgesetzt.

Die Eigenschaft kann an einem beliebigen Rahmen der Gruppe vorgenommen werden. Zur besseren Sichtbarkeit wird dann bei ALLEN Rahmen der Gruppe das kleine Bild in der ersten Zeile der Liste Template-Verhalten grün hinterlegt. Mit der gleichen Farbe wird auch das Preview des Template selbst in der Palette Templates hinterlegt.

Für die Eigenschaft "Nächstes Seitenelement" wird mindestens v4.0.5 R9730 benötigt.

Für das Anlegen neuer Seiten muss die Tabelle/Datei framerules im Datenpool definiert sein.

Die Tabelle/Datei framerules wurde zur Unterstützung der Palette Aufbauregeln in Comet 2 eingeführt. Diese Palette ist mit Comet 4 obsolet geworden. Für das Templateverhalten "Neue Seite/Sprung zum nächsten Seitenelement" wird framerules aber weiterhin benötigt.

[seit v3.3 R2688, 28.10.2011]

Seitenaufbau- und reorganisation müssen an verschiedenen Stellen prüfen, ob bestehende Seiteninhalte überschnitten werden. Ist das der Fall, wird der gemäß den Einstellungen in Seitentemplate und -element nächste freie Stellplatz gesucht.

Ein neues Produkt hat aber noch keine Dokumentrahmen, die prüft werden könnten. Zur Prüfung wird deshalb die BoundingBox der Templaterrahmen beim Sichern des Templates verwendet. Die Größe dieser Box sehen Sie in der Palette Templates:

    

Unter Umständen ist der Test der Boundingbox zu grob und Sie wollen die tatsächlichen Rahmenkanten zum Test verwenden. Im Bild soll der Text des Vorgänger-Produktes in die freie Fläche des Sternes ragen dürfen. Der gewöhnliche Test über die Boundingbox des Templates würde hier versagen.

    

Für die Rahmen des Templates kann daher eingestellt werden, welche Fläche bei Überdeckungen tatsächlich geprüft werden soll. Dabei gilt :

und werden in 1:N-Elementen nicht unterstützt - der Aufbau prüft, ob ein Template eine Stelle belegen kann; er prüft nicht, wo es platziert werden kann. Das ist eine sehr selten gestellte Aufgabe von einiger mathematischer Komplexität, die wir aber auf Nachfrage gerne für Sie lösen.

Unter XML und SOAP müssen die Elemente pageitems.pageitem jeweils um das Element hasShapes erweitert werden. Die Einträge bekommen jeweils den Wert 0.

Hier ein Beispiel eines erweiterten pageitem-Elementes:

<pageitem>
    <id>1199</id> 
    ....
    <hasShapes>0</hasShapes>
    </pageitem>
<pageitem>

Die nötigen Informationen über die Rahmenkanten und Löcher werden jeweils neben der Template-Datei mit der Endung shapes abgelegt. Die Shapes-Datei wird automatisch beim Sichern der Templates geschrieben.

Unter SQL muss die Tabelle pageitems um das Attribute shapes vom Typ CLOB/text erweitert werden.

Hier eine SQL-Anweisung für eine mySQL-Datenbank:

alter table pageitems add shapes text;

Beim nächsten Verbinden mit dem erweiterten Datenpool ist das Feature freigeschaltet. Im Logfile sehen Sie nach dem Login folgende Zeile:

# Support page item shapes : yes