Zum Inhalt springen

Seitentitel wird bei externen Links nicht gesetzt.

Erstellt am 24. Juni 2009 · 10 Antworten · letzte Antwort am 27. Juni 2009

Tags: Frage

alfjan ·

Hallo,

erstmal einiges zur Vorinformation. Ich habe ein eigenes Template erstellt, dass auf Frames aufbaut. (Frames sind verpönt, aber leider unumgänglich) Alles läuft soweit prima, es gibt nur ein Problem bei Verwendung externer Links als Seitentyp (Links auf interne PDF Seiten). Die werden im korrekten Frame dargestellt, nachdem ich herausgefunden habe, das ich als Target nur den Framenamen (page) eingeben muss.

In einem Frame über meinem Contentframe gebe ich den Seitentitel oder wenn vorhanden den Subtitel aus. Das funktioniert bei Seiten die nicht vom Typ "externer Link" sind wunderbar. Bei Seiten die eine externe Seite aufrufen, bleibt der Titel der Vorgängerseite stehen.

Nun hab ich schon 6 Stunden gegoogelt und diverse Foren durchforstet (auch unter Verwendung der SuFu) und bin nicht fündig geworden.

Als Lösungsansatz hatte ich mir vorgestellt, bei Seiten des Typs "externe Links" den Titel nicht mehr aus zu geben. In Ermangelung tieferer Kenntnisse der Scriptsprache bin ich dabei bisher auf der Strecke geblieben.

Hier mal mein TypoScript Template:
Der Titel wird ab Zeile 142 bis 152 gesetzt.
Wie kann ich im Script definieren, dass bei Seiten mit externen Links kein Seitentitel eingetragen wird. Leider ist da ja noch einer abfragbar der zu einer alten Seite gehört.
Zudem wird der zweite Navigationsframe (nav2) nicht aktualisiert und die zuvor gewählte Seitenwahl bleibt aktiv.

MfG Alfred

page.config.language = de

# Default PAGE object:
page = PAGE
nav1 = PAGE
nav2 = PAGE
nav3 = PAGE
pic1 = PAGE
pic2 = PAGE
head = PAGE
logo = PAGE

page.typeNum = 1
nav1.typeNum = 2
nav2.typeNum = 3
nav3.typeNum = 4
pic1.typeNum = 5
pic2.typeNum = 6
head.typeNum = 7
logo.typeNum = 8

# Defining Frame page
page {
   stylesheet = fileadmin/Layout/layout_page.css
   # Admin Panel einschalten #
   config.admPanel = 1
}
page.5 < temp.mainTemplate
page.10 = HTML
page.10.value = <div align="right">
page.20 = IMAGE
page.20.file = fileadmin/Layout/pdf2.png
page.20.stdWrap.postUserFunc = tx_pdfgenerator2->makePdfLink
page.30 = HTML
page.30.value = </div>
page.100 = TEMPLATE
page.100.template = FILE
page.100.template.file = fileadmin/Layout/page.html
page.100.workOnSubpart = DOKUMENT
page.100.subparts.INHALT = CONTENT
page.100.subparts.INHALT {
   table = tt_content
   select.orderBy = sorting
   select.where = colPos=0
}

# Defining Frame nav1
nav1 {
   stylesheet = fileadmin/Layout/layout_nav1.css
}
nav1.10 = TEMPLATE
nav1.10.template = FILE
nav1.10.template.file = fileadmin/Layout/nav1.html
nav1.10.workOnSubpart = DOKUMENT
nav1.10.subparts.INHALT = CONTENT
nav1.10.marks.MENUE = HMENU
nav1.10.marks.MENUE {
   1 = TMENU
   1 {
      noBlur = 1
      target = _parent
      wrap = <ul> | </ul>
      NO {
         linkWrap = <li> | </li>
      }
      CUR < .NO
      CUR.dootLinkIt = 1
   }  
}

# Defining Frame nav2
nav2 {
   stylesheet = fileadmin/Layout/layout_nav2.css
}
nav2.10 = TEMPLATE
nav2.10.template = FILE
nav2.10.template.file = fileadmin/Layout/nav2.html
nav2.10.workOnSubpart = DOKUMENT
nav2.10.subparts.INHALT = CONTENT
nav2.10.marks.MENUE = HMENU
nav2.10.marks.MENUE.entryLevel = 1
nav2.10.marks.MENUE {
   1 = TMENU
   1 {
      noBlur = 1
      target = _parent
      wrap = <ul class="submenu"> | </ul>
      NO = 1
      NO {
         wrapItemAndSub = <li> | </li>
      }
      ACT < .NO
      ACT.warpItemAndSub = <li class="act"> | </li>
      CUR < .NO
      CUR.doNotLinkIt = 1
      CUR.warpItemAndSub = <li class="act"> | </li>
   }

   2 < .1
   3 < .1
}

# Defining Frame nav3
nav3 {
   stylesheet = fileadmin/Layout/layout.css
}
nav3.10 = TEMPLATE
nav3.10.template = FILE
nav3.10.template.file = fileadmin/Layout/nav3.html
nav3.10.workOnSubpart = DOKUMENT

# Defining Frame pic1
pic1 {
   stylesheet = fileadmin/Layout/layout.css
}
pic1.10 = TEMPLATE
pic1.10.template = FILE
pic1.10.template.file = fileadmin/Layout/pic1.html
pic1.10.workOnSubpart = DOKUMENT
#pic1.20 = HTML
#pic1.20.value = <span style="font-family:Arial">
#pic1.30 = TEXT
#pic1.30.field = title
#pic1.40 = HTML
#pic1.40.value = </span>

# Defining Frame pic2
pic2 {
   stylesheet = fileadmin/Layout/layout_pic2.css
   # Admin Panel ausschalten #
   config.admPanel = 0
}
pic2.10 = TEMPLATE
pic2.10.template = FILE
pic2.10.template.file = fileadmin/Layout/pic2.html
pic2.10.workOnSubpart = DOKUMENT
pic2.10.subparts {
   INHALT < styles.content.getRight
}

# Defining Frame head
head {
   stylesheet = fileadmin/Layout/layout.css
}
head.10 = HTML
head.10.value = <span style="font-family:Arial"><i>
head.20 = TEXT
head.20.field = subtitle // title
#head.20.field = title
head.30 = HTML
head.30.value = </i></span>

# Defining Frame logo
logo {
   stylesheet = fileadmin/Layout/layout.css
}
logo.10 = TEMPLATE
logo.10.template = FILE
logo.10.template.file = fileadmin/Layout/logo.html
logo.10.workOnSubpart = DOKUMENT

outer_frameset = PAGE
outer_frameset.typeNum = 0
outer_frameset {
   stylesheet = fileadmin/Layout/layout.css
}
outer_frameset.meta.robots = INDEX,FOLLOW
outer_frameset.meta.keywords.field = keywords
outer_frameset.meta.description.field = description
outer_frameset.frameSet {
   params = boder="0" framespacing="0" frameborder="NO"
   cols = 220,*,150
   1 = FRAMESET
   1.rows = *,*
   1 {
      12 = FRAME
      12.obj = nav1
      12.params = scrolling="NO" noresize frameborder="NO" marginwidth="0" marginheight="10"
      13 = FRAME
      13.obj = nav2
      13.params = scrolling="NO" noresize frameborder="NO" marginwidth="0" marginheight="10"
   }
   2 = FRAMESET
   2.rows = 110,50,*
   2 {
       21 = FRAME
       21.obj = pic1
       21.params = scrolling="NO" noresize frameborder="NO" marginwidth="10" marginheight="10"
       22 = FRAME
       22.obj = head
       22.params = scrolling="NO" noresize frameborder="NO" marginwidth="10" marginheight="10"
       23 = FRAME
       23.obj = page
       23.params = scrolling="AUTO" noresize frameborder="NO" marginwidth="10" marginheight="0"
   }
   3 = FRAMESET
   3.rows = 110,140,*
   3 {
       31 = FRAME
       31.obj = logo
       31.params = scrolling="NO" noresize frameborder="NO" marginwidth="0" marginheight="20"
       32 = FRAME
       32.obj = nav3
       32.params = scrolling="NO" noresize frameborder="NO" marginwidth="10" marginheight="10"
       33 = FRAME
       33.obj = pic2
       33.params = scrolling="NO" noresize frameborder="NO" marginwidth="0" marginheight="0"
   }
}
Michaelh74 ·

Hab ich das richtig verstanden. Du willst per externem Link ein PDF in deinem Frameset Frame laden ohne Seiten-Title?

Was kann man denn ohne Frame nicht bewerkstelligen - außer vielleicht ne durchlaufende Musik in einem SWF?

Gruß
Michael

alfjan ·

Ich würde das PDF auch mit Seitentitel anzeigen nur bleibt eben der Vorherige Titel stehen und es wird nicht der Titel wie auf der externe URL Seite eingegeben angezeigt.

Möglicherweise läßt sich dass auch ohne Frames lösen, aber ich bin Neuling was Typo3 angeht und war schon glücklich die Vorgaben des Hauses erfüllen zu können.

Solange ich das PDF mit Target _blank verlinke geht es ja noch, aber der Wunsch geht dahin, die Seite im Content Bereich an zu zeigen und eben keine neue Seite zu öffnen.

MfG

Alfred

Michaelh74 ·

Hab schon länger nichts mehr mit Frames gemacht, aber wenn ich ne Seite in einem Inhaltsframe aufrufe ändert sich doch der Seitentitel (da was oben dann auch im der Browser steht) nicht. Da bleibt meines Wissens immer nur der Seitentitel der Frameset Datei, oder?

Welchen Seitentitel des PDFs sollte die Seite denn haben, den Dateinamen?

Gruß
Michael

alfjan ·

War wohl nicht ganz so gut ausformuliert was ich erreichen will. Als Überschrift soll der Titel in der Typo3 pages Tabelle oder der Subtitel angezeigt werden. Mittlerweile ist mir klar geworden, das ich die Typo3 Umgebung ja über den externen Link verlasse und vermutlich deshalb keine Aktualisierung mehr stattfinden kann. Das System hat die Information in der Tabelle pages aber sie wir nie gelesen, weil der externe Link keine Infos drüber hat.

Nun Fakt ist, überall wird geraten, ein PDF direkt über das Menue mittels dieses Verfahrens (externe URL) zu integrieren, weil es offenbar keine andere Möglichkeit gibt.

Ich könnte zwar eine Seite (content) mit einem Link erstellen und den dann auf das PDF zeigen lassen, das ist aber nicht gerade schön oder elegant. Zwei Links die letztlich zum öffnen eines Dokuments nötig sind, ist nicht gerade bedienerfreundlich.

In unserem Hause, werden viele Dokumente als PDF abgelegt, weil diese druckerneutral, nicht manipulierbar (QM) und anderweitig schon verwendet werden. Gibt es denn keine elegantere Methode ein PDF direkt aus dem Menue auf zu rufen und trotzdem die Systemumgebung nicht zu verlassen. Ich habe mittlerweile viele ähnliche Problemfälle ergoogelt, bei denen eben in Ermangelung eines besseren Verfahrens die Verlinkung mit fester URL geraten wird.

MfG

Alfred

Michaelh74 ·

Meines Wissens kann man de facto kein PDF "einbinden". Da übernimmt beim Aufruf des Files immer das PDF Browser Plugin die Kontrolle. In einige Fällen wird wohl sogar das Dokument außerhalb des Browsers direkt in Acrobat geöffnet werden. Das kann man selbst wohl nicht 100% beeinflussen.

Die einzige Lösung die mir hier einfällt wäre das PDF in einem IFRAME zu öffen. Über dem IFRAME packst Du dann die Seitenüberschrift.

Gruß
Michael

alfjan ·

Ich hab das für ein großes Intranet erstellt. Die PC sind alle so installiert, das das Browserplugin das PDF in der Seite darstellt. Dennoch hast du völlig Recht. Ist schon eine große Schwachstelle in Typo3 wenn ich das mal so sagen darf. Grade PDF sind heute in Firmen sehr weit verbreitet und werden immer mehr verwendet.

Wie gesagt, wenn man einen Link in einer Seite auf das PDF zeigen lässt ist alles ok aber das direkte verlinken mit einem Menüpunkt geht nicht.

MfG

Alfred

Damit hat sich die Sache für mich erstmal geklärt.

alfjan ·

So ich hab einen guten Workaround gefunden!

Auf der Zielseite im Inhaltselement (Text) einen kurzen Text ablegen.
Als zweites Element (HTML) folgendes eintragen.

<meta http-equiv="refresh" content="1; URL=URI to PDF">

Wichtig ist die Pause auf 1 Sekunde zu stellen, so das Typo3 die Seite anzeigt und so auch den Seitentitel aktualisiert. Dann wird auf das PDF weitergeleitet.

So passt alles.

MfG

Alfred

Michaelh74 ·

Ist schon eine große Schwachstelle in Typo3 wenn ich das mal so sagen darf.

Das ist kein Typo3 sondern ein generelle HTML PDF Problem.

Bin leider immer noch nicht ganz schlau was Du eigentlich wolltst. Du kannst mir doch nicht erzählen, dass Du mit dieser Lösung über Deinem PDF einer Überschrift als HTML aus dem Seitentitel stehen hast, oder ;-)

Naja, jedenfalls ist Dein Problem ja anscheinend gelöst.

Gruß
Michael

alfjan ·

Doch genau das!

Der Titeltext der in Typo3 als Seitentitel verwendet wurde (oder alternativ der Subtitel) stehen nun in dem Frame über dem PDF. Die Seite wurde als "Normal" angelegt und der Link auf das PDF erst automatisch nach 1 Sekunde weitergeleitet, nachdem Typo3 die Möglichkeit hatte den vor diesem Inhaltselement angelegten Text zu publizieren, was Typo3 dazu veranlasste eben den Titel, der in Typo3 gespeichert war auch zu übernehmen. Zudem wird nun auch das Menue aktualisiert und steht nicht mehr (selectet/noch weis und nicht mehr anwählbar) auf einer falschen Position.

Bild: ntse.de/…/bild.jpg

Michaelh74 ·

ok klar, wenn der Seitentitel in einem eigenen Frame steht ist das klar. Dachte es wäre im gleich die das PDF...

Gruß
Michael