Link auf Überschrift mit Offset

fuerteventura-2007 schrieb am 23.06.2017 um 23:15 Uhr

Hallo Forum,

in einem Projekt nutze ich seiteninterne Verlinkungen mit der neuen Funktion "Link auf Überschrift", die ich sehr komfortabel finde.

Nun möchte ich aber jedem Link einen vertikalen Offset mitgeben, da die Seiten ein am oberen Seitenrand fixiertes Menü-Objekt besitzen - und dieses verdeckt dann natürlich die Überschrift, auf die gesprungen wird. Blöd...

Im WD12 Premium kann ich unter "Link auf Überschrift" nur die Überschrift auswählen, aber kein Offset hinzufügen. Gibt es doch noch einen Kniff, mein Ziel zu erreichen? Oder muss ich doch wieder zu der umständlichen Methode mit "Link auf Anker" zurückkehren?

Vielen Dank im Voraus für eure Hilfe
Michael

Kommentare

BeRo schrieb am 24.06.2017 um 00:38 Uhr

[...] Im WD12 Premium kann ich unter "Link auf Überschrift" nur die Überschrift auswählen, aber kein Offset hinzufügen. [...]

Doch, Du kannst. 😎
Allerdings ist das nicht ganz trivial, weil Du dazu in eine JS Steuerdatei eingreifen musst.

Öffne mal die JS Bibliothek "roe.js", die Du nach einem Export im Verzeichnis "index_htm_files" findest, mit einem einfachen Texteditor.
Such' Dir in der Datei die Funktion "
function xr_to()" und ergänze die Wertzuweisung für die Variable "y" um den Wert des gewünschten Offsets in Pixeln. Der Wert muss negativ sein, damit die Scrolloption vor der entsprechenden Überschrift stoppt.

So kann das in der Praxis aussehen:

Da der WD beim Export/Veröffentlichen die Original Bibliothek wieder herstellt, gehen Deine Änderungen bei jedem Export verloren. Du solltest daher ein Hilfsverzeichnis zu Deinem Projekt anlegen und dort die geänderte Bibliothek speichern. Der WD sorgt dann automatisch dafür, dass nach einem Export/Upload die Originalbibliothek wieder mit der geänderte Bibliothek überschrieben wird. 😉

Probier's mal

Zuletzt geändert von BeRo am 24.06.2017, 00:41, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

fuerteventura-2007 schrieb am 24.06.2017 um 15:08 Uhr

Hallo BeRo,

herzlichen Dank, das funkioniert wunderbar und soweit ich bisher sehen kann ohne unerwünschte Nebenwirkungen!

Da der WD beim Export/Veröffentlichen die Original Bibliothek wieder herstellt, gehen Deine Änderungen bei jedem Export verloren. Du solltest daher ein Hilfsverzeichnis zu Deinem Projekt anlegen und dort die geänderte Bibliothek speichern. Der WD sorgt dann automatisch dafür, dass nach einem Export/Upload die Originalbibliothek wieder mit der geänderte Bibliothek überschrieben wird. 😉

Probier's mal


Hab ich probiert:

  • Ordner "mod" (für: Modifikation) im Projektordner angelegt
  • Modifizierte "roe.js" darin gespeichert
  • Neu exportiert
  • Ergebnis: roe.js ist wieder die alte nicht-modifizierte Datei
  • roe.js manuell ins Verzeichnis index_htm_files kopiert
  • Ergebnis: alles gut, funktioniert.

Ein Bildschirmfoto der Verzeichnisstruktur lege ich bei. Mache bzw. verstehe ich etwas falsch? Was ist das für eine geheimnisvolle Funktion im WD, die Du da beschreibst? Die kannte ich noch nicht...

Viele Grüße
Michael

marboe schrieb am 24.06.2017 um 15:43 Uhr

Der Name des Hilfsordners darf nicht 'mod' heißen, sondern zwingend 'deinProjektnane_web_files'. Dann klappt das auch 😉. Es ist gut möglich, dass der WD diesen Ordner bereits angelegt hat. Dort hinein kommt deine . jsDatei. Gruß marboe

BeRo schrieb am 24.06.2017 um 17:27 Uhr

[...] Was ist das für eine geheimnisvolle Funktion im WD, die Du da beschreibst? [...]

Das ist eine Funktion des WD, die von den Programmierern ursprünglich angelegt wurde, um importierte Dateien (z. B. Media Dateien) zusammen mit dem Projekt zu organisieren.
Alle Dateien, die sich in einem korrekt angelegten Hilfsverzeichnis befinden, werden beim Export/Upload in das Verzeichnis "index_htm_files" des zugehörigen Projekts kopiert. Befinden sich im Zielverzeichnis schon gleichnamige Dateien, werden sie ohne Rückfrage überschrieben.
Da die Funktion beim Export/Upload erst gestartet wird, wenn der normale Export/Upload abgeschlossen ist, liegen die originalen Steuerdateien (CSS, JS) schon im Zielverzeichnis, sie werden also, wie in unserem Fall gewünscht, mit den manipulierten Steuerdateien überschrieben... 😊

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

fuerteventura-2007 schrieb am 24.06.2017 um 19:44 Uhr

JAAA! 😍

Martina und BeRo, wieder einmal herzlichen Dank für eure Unterstützung und eure unendliche Geduld, wenn der Groschen nicht gleich beim ersten Mal fallen will...

Und in der Doku habe ich die Funktion unter dem Stickwort "Hilfsverzeichnisse" jetzt auch gefunden.

Jetzt muss ich künftig nur noch aufpassen, wenn sich bei einem Update des WD die roe.js ändert.

Viele Grüße
Michael

vikkiv schrieb am 08.03.2019 um 19:31 Uhr

...hmmm ich habe den Wert an exakt der selben Stelle verändert aber bei mir funkt die Offset Option nicht. Warum?

BeRo schrieb am 13.03.2019 um 18:44 Uhr

@vikkiv

[...] bei mir funkt die Offset Option nicht [...]

Beschreibe doch mal genauer wie/wo Du die geänderte Datei gespeichert hast und was genau nicht funktioniert... 😋

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

vikkiv schrieb am 13.03.2019 um 19:43 Uhr

Also ich habe die roe.js geöffnet und die Zeile 2261 geändert auf -300 gesetzt damit der Offset beim Anker nicht unter den fixierten Header stecken bleibt. Das wurde schon in diesem Beitrag gut beschrieben nur leider funkt. das bei mir nicht.

https://www.magix.info/de/forum/link-auf-berschrift-mit-offset--1192364/

Für ein paar Tipps danke ich Euch im Voraus.

Gruß

Vik

BeRo schrieb am 13.03.2019 um 19:57 Uhr

@vikkiv

Gerne nochmal meine Frage dazu: 😡

Beschreibe doch mal genauer wie/wo Du die geänderte Datei gespeichert hast und was genau nicht funktioniert... 😋

Zuletzt geändert von BeRo am 13.03.2019, 20:13, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

vikkiv schrieb am 13.03.2019 um 20:17 Uhr

ich habe die Datei roe.js im Note++ geöffnet, geändert und dann wieder im gleichen Format gespeichert. Anschließend auf dem Server geladen bzw. überschrieben.

Ich möchte gerne, dass der Anker einfach unterhalb des fixierten Header anhält und nicht darunter. In dem Beitrag wurde das schon beschrieben und laut deiner Anleitung sollte man eine bestimmte Zeile (s. oben) mit einem negativen Wert ändern. Das habe ich auch getan nur es funkt. nicht. Der Anker hält immer noch unter dem fixierten Header.

BeRo schrieb am 13.03.2019 um 20:31 Uhr

@vikkiv

[...] laut deiner Anleitung sollte man eine bestimmte Zeile (s. oben) mit einem negativen Wert ändern. [...]

Das trifft für das im Ursprungsthread genannte Szenario zu. Ob das für Deine Seite auch so ist, musst Du selbst entscheiden. Eventuell musst Du sogar positive Werte eintragen, also z. B. "var y=window.pageYOffset +50;"...

[...] Ich möchte gerne, dass der Anker einfach unterhalb des fixierten Header anhält [...]

Der von Dir benutzte Wert "-300" dürfte in jedem Fall deutlich zu groß sein. Ein Wert von 300 Pixel Versatz ist vermutlich schon 30% der Höhe der Website. 😕
Experimentiere mal mit sehr viel kleineren Werten (s. o.)...

Zuletzt geändert von BeRo am 13.03.2019, 20:32, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

vikkiv schrieb am 14.03.2019 um 08:59 Uhr

Also ich habe etwas damit rum experimentiert und ich glaube ich habe endlich verstanden wie das funktioniert. Also wenn ich die Option Offset auf -20 setze dann hält eben die Seite 20px vor der tatsächlichen Ankerposition an. Das habe ich ausprobiert und es funkt. Leider aber nur auf der jeweiligen Seite wo die Ankerposition angestuert wird. Wenn ich aber jetzt eine Ankerposition auf einer andern Unterseite ansteuern möchte dann funkt. das nicht.

Hier ist eine Beispielseite: https://www.swissforging.com/gesenkschmieden_1.htm

Die Punkte 11, 12, 13, 14 sind mit Ankern verlinkt und befinden sich auf einer anderen Unterseite (Seite 2). Wenn ich jetzt z.B. die Position Nr. 12 ansteuern möchte dann springt zwar die Verlinkung auf die richtige Unterseite aber nicht exakt an die Ankerposition. Es ist immer verdeckt vom Header.

Wie kann ich das Lösen?

BeRo schrieb am 14.03.2019 um 15:12 Uhr

[...] dann springt zwar die Verlinkung auf die richtige Unterseite aber nicht exakt an die Ankerposition [...]

In dem Fall bietet sich die "klassische" Methode an, die ich Anfang letzten Jahres hier beschrieben habe.

Dann kannst Du komplett auf die Code Manipulation verzichten und Du hast jederzeit die Möglichkeit, mit ein paar Mausklicks die Anker Position bei Bedarf zu verändern... 😊

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

vikkiv schrieb am 14.03.2019 um 17:02 Uhr

Ja, das wäre auch eine Alternative nur bei diesem Projekt ist das für mich extrem umständlich. Ich müsste dann um die 25-30 solcher Anker anlegen und dann beim jeden Update (dort werden ständig Maschinen getauscht und neu angeboten) achten, dass die "unsichtbaren" Anker nicht verloren gehen. Selbst wenn ich ich sie immer finden würde, müssen sie nach jedem Update neu eingestellt werden denn die Struktur der Seiten ändert sich dauerhaft. Deswegen war meine Hoffnung, dass das einfach per Code Änderung zu bewältigen wäre. Scheinbar aber gibt es dazu kein einfachere Lösung....

Trotzdem danke für den Tipp. Werde ich bestimmt bei anderen kleineren Homepages verwenden.

BeRo schrieb am 14.03.2019 um 19:52 Uhr

[...] wäre auch eine Alternative nur bei diesem Projekt ist das für mich extrem umständlich [...]

Richtig, mit der Methode hast Du etwas mehr Aufwand. Aber...

Auch ohne die Hilfsanker (Rechtecke) musst Du für jede Beschreibung einer Maschine einen Anker anlegen und den verlinken. Dieser Arbeitsschritt bleibt erhalten, auch wenn er jetzt für ein zusätzliches Objekt (Rechteck) angelegt wird.
Der Mehraufwand beschränkt sich also auf das Anlegen eines Rechtecks (max. 2 Mausklicks). 😉

[...] Ich müsste dann [...] beim jeden Update [...] achten, dass die "unsichtbaren" Anker nicht verloren gehen. [...]

Das kannst Du ganz einfach vermeiden, wenn Du bei der Anlage der Rechtecke dafür sorgst, dass sie mit der zugehörigen Beschreibung der Maschine (weich) gruppiert werden (3 Mausklicks!).

Probier's einfach mal. Ich bin sicher, dass Du sehr schnell "den Bogen" raus hast und dann genau den Effekt bekommst, den du gesucht hast...

Viel Erfolg 👍

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

BeRo schrieb am 15.03.2019 um 17:10 Uhr

Nachtrag zum Posting vom 14. 03.

Es gibt doch noch eine andere Möglichkeit, vorher definierte Scrollpositionen einer Seite/Unterseite anzuspringen.
Dazu ist es nur nötig, die gewünschte Scrollposition in Pixeln im WD Editor zu ermitteln. Anker müssen nicht angelegt werden!

Dann kann das Ergebnis direkt in den Link zu dem Objekt übernommen werden.
Der Link bekommt 2 Argumente.
1. den Namen der zu öffnenden Unterseite in Anführungsstrichen (hier 'Raeume.htm')
2. die Scrollposition in Pixeln (hier 620)

javascript: jump('Raeume.htm', 620);

Genauso werden alle anderen Objekte "ausgemessen" und in die entsprechenden Links übernommen, die später in den Sichtbereich gescrollt werden sollen.

Damit das wie gewünscht funktioniert, müssen jetzt nur noch 2 kleine JS Funktionen in den HTML Head der Website eingebaut werden...

<script>
function jump(site, v_distance)
{
window.sessionStorage.setItem('pixel',v_distance);
window.open(site,'_self');
}
</script>

<script>
function scrollen() {
var pix=window.sessionStorage.getItem('pixel');
if (pix > 1) {
window.scroll(0,pix);
sessionStorage.removeItem('pixel');
pix = 0; }
}
</script>

...und der HTML Body der Website bekommt noch einen HTML Tag...

<body onload = scrollen()>

...der dafür sorgt, dass die Scrollfunktion schon beim Öffnen einer Seite aktiviert wird.

Das war's dann auch schon 😊

Die online Demo zeigt das Ergebnis, wenn man in der Navigation einen der Räume klickt.
Die zur Demo gehörende Projektdatei kann hier (inkl. aller Scriptlets) heruntergeladen werden.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

marboe schrieb am 16.03.2019 um 07:30 Uhr

Hallo BeRo,

da hast du ja was Feines ausgegraben. Sehr interessant.

Leider habe ich noch nicht die Neueste Version des Programms mit der du wohl die Projektdatei erstellt hast.
Deswegen gern die Frage:
((Hast du in den Body der Website den Code eingebunden wie angegeben, oder hast du ihn weg gelassen? Ich sehe ihn nämlich mit der 12 u 15 er Version des WD nicht. Die Vorschau funktioniert leider nicht wie gewollt.))
Ergänzung: Ich kann es mir selbst beantworten. Sorry.
In der Zip Projektdatei sind die Scriplets noch nicht eingebaut. Habe es selbst gemacht, und damit funktioniert die Datei auch mit der 12 u 15 Premium-Version. TOP!

 

Zweite Frage: wenn man Varianten anlegen will, muss dann nur hier:

javascript: jump('Raeume.htm', 620);

die Seitenbenennung auf die bspw. mobile Variante angepasst werden? Oder sind noch andere Eingriffe für die korrekte Anzeige der weiteren Varianten nötig? Diese hätten ja völlig andere Jump-Positionen.

 

In der Hoffnung, dass du das auch schon getestet hast 😊 Viele Grüße Marboe

BeRo schrieb am 16.03.2019 um 15:42 Uhr

@marboe

[...] mit der 12 u 15 er Version des WD [...] Die Vorschau funktioniert leider nicht wie gewollt [...]

Das liegt an der unnötigen Maskierung von Anführungszeichen, die der "alte" WD bei der Übergabe von Werten im String Format vornimmt, wenn sie in Anführungszeichen stehen... 😫

So sieht das dann im Quellcode aus:

Mit dem so verunstalteten Dateinamen kann dann natürlich kein Link funktionieren:

Abhilfe schafft ein kleines Zusatz Script, das den String Wert als Variable übergibt, dann klappt's wieder:

<script>
raeume='Raeume.htm';
// Übernahme des Seitennamens in eine globale Variable
// damit können dann auch ältere WD Versionen das JScript ausführen
// in Versionen ab 16 muss das Hamburger Menü i. d. Smartphone Variante
// angepasst werden (Bilder Gruppierung) http://bit.ly/hamburger_rep
</script>

Natürlich müssen jetzt auch alle Links auf die Funktion "jump()" angepasst werden. Da muss nun anstelle des Dateinamens der Name der stellvertretenden Variable eingtragen werden.
Der Einfachheit halber habe ich die Variable "raeume" genannt.

Ein passender Link sieht jetzt z. B. so aus:

javascript: jump(raeume, 600);

Die Variable "raeume" bekommt in dem o. a. Zusatzscript den vollständigen Dateinamen "Raeume.htm".

[...] In der Zip Projektdatei sind die Scriplets noch nicht eingebaut. [...]

Doch, sie sind. 😊
Im o. a. Screenshot siehst Du, dass sie im HTML Head der Website (nicht Seite) liegen...

Damit auch alle, die noch einen älteren WD benutzen, in den "Genuss" der simulierten Anker Funktion kommen, habe ich hier eine angepasste Projektdatei zum Download gespeichert. Darin ist das o. a. Korrekturscript bereits enthalten.

wenn man Varianten anlegen will, muss dann nur hier:
javascript: jump('Raeume.htm', 620);
die Seitenbenennung auf die bspw. mobile Variante angepasst werden?

Ja, da muss etwas geändert werden.
Die Seitennamen bleiben erhalten, aber in der Smartphone Variante müssen die Sprungmarken neu "ausgemessen" werden...

Gerne viel Erfolg beim Probieren und einen schönen Rest vom WE 👍

---------------------------
Edit 22:33
Info zu Änderungen in der Smartphone Variante korrigiert.
Eine Änderung der Seitnnamen ist nicht erforderlich; nur die Sprungziele müssen angepasst werden. 🙃

Zuletzt geändert von BeRo am 16.03.2019, 22:33, insgesamt 2-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓