Hacking ghost - ref-Parameter unterdrücken
Bei externen Links übergibt ghost einen Parameter ref=<site-name> in der URL. Damit wird Analytic-Tools auf dem Zielsystem das Leben leichter gemacht. Es gibt aber auch Seiten, die Parameter, wie z.B. die ID eines Posts enthalten und gleichezitig weitere Ihnen unbekannte Parameter als Fehler betrachten und diesen als Meldung zurück geben (s. Referenz unten). Das ist unschön und sollte nicht so sein. ghost bietet keine Möglichkeit, dieses Feature abzuschalten. Es wäre auch nicht so gut, das Feature global abzuschalten, denn es ist ja durchaus sinnvoll.
Das Problem kann aber leicht durch ein Skript in der Code-Injection für den site-footer behoben werden. Das Skript kann dort natürlich einfach in ein Skript-Tag eingebettet werden. Ich habe dafür aber lieber unter /content/public ein Skript limitref.js angelegt:
document.addEventListener('DOMContentLoaded', function() {
// Liste der URLs, die mit ref-Parameter nicht funktionieren
const exceptions = [
'https://de.linux-console.net',
];
const links = document.querySelectorAll('a');
links.forEach(link => {
// Prüfen, ob der Link einen angehängten ref-Parameter enthält
// (also nicht an erster Stelle mit ?ref= eingefügt)
if (link.href.includes('&ref=')) {
// Extrahiere die Basis-URL ohne Parameter
const baseUrl = link.href.split('?')[0];
// Prüfen, ob die Basis-URL in der Ausnahmeliste enthalten ist
if (exceptions.some(exception => baseUrl.startsWith(exception))) {
// entferne ab dem angehängten Parameter
link.href = link.href.split('&ref')[0];
}
}
});
});
Damit muss in der Code-Injection für den site-footer nur noch ein kurzer Eintrag vorgenommen werden und die Ansicht bleibt besser überschaubar.
<script href="/content/public/limitref.js></script>
Mit diesem Eintrag werden dann keine ref-Parameter mehr angehängt, wenn die Basis-URL in der Liste der Ausnahmen eingetragen ist. Als Beispiel kann jetzt der Link unten korrekt aufgerufen werden. Eine Fehlermeldung gibt es jetzt nicht mehr.
Referenzen