5202

ein Blog über technische Fragen zu Blogger

Spezifische Posts auf Übersichtsseite nicht anzeigen

von
Mehrere Leute haben mich unabhängig voneinander gefragt, wie man es schafft, bestimmte Posts auf der Startseite auszublenden. Im Grunde habe ich das schon mal beschrieben ... vielleicht ist es aber nicht sofort klar, wie ihr das auf das konkrete Problem anwenden könnt.

Das Script

Okay, wir wollen also eine bestimmten Post ausblenden - dann machen wir das doch kurz und schmerzlos mit jQuery:
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function() {
$(".post-labels a").filter(":contains('hidden')").parents('.date-outer').hide();
});
//]]>
</script>
Das funktioniert analog zu Post für einzelne Label personalisieren, nur das ich der Klasse .date-outer keine neue Klasse gebe, sondern ausblende. That's it!

Der konditionale Tag

Kurz mal nachdenken - jetzt haben wir alle Posts mit dem Label 'hidden' komplett auf allen Seiten ausgeblendet ... wollen wir aber eigentlich gar nicht, sondern auf der Post-Seite soll der Post natürlich schon zu sehen sein.

Also packen wir das Script in einen konditionalen Tag, das lediglich für alle Seitentypen _außer_ der Postseite gültig ist:
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function() {
$(".post-labels a").filter(":contains('hidden')").parents('.date-outer').hide();
});
//]]>
</script>
</b:if>
Ihr könnt's ausprobieren - alle Posts mit dem Label hidden werden ab jetzt weder auf Startseite, Labelseite, Archivseite whatever angezeigt, sondern nur noch auf der Postseite - mission accomplished!

jQuery Framework

Als Nachtrag:

Das Script ist mit einer Javascript Bibliothek geschrieben, nämlich dem jQuery Framework. Wer das noch _nicht_ im Blog hat und das Script zuerst einmal in seinem Test-Blog testen will, sucht im HTML seines Blogs diesen _schließenden_ Tag (schaut genau und verwechselt ihn nicht!):
</head>
und kopiert direkt _darüber_ Script plus jQuery-Framework:
<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'/>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function() {
$(".post-labels a").filter(":contains('hidden')").parents('.date-outer').hide();
});
//]]>
</script>
</b:if>
Das ist alles. Ab jetzt wird jeder Post mit dem Label hidden nur noch auf der Postseite angezeigt, nirgendwo sonst.

Allerdings bleibt der Post im 'Blogger-Archiv' und im Feed - falls ihr also eure geheimen Pläne für die Weltherrschaft geheim halten wollt, ist die Methode nichts. Das Script blendet den Post lediglich auf allen Seiten außer der Postseite aus, mehr macht es nicht.

Anmerkungen

Ich denke das ist-nichts-für-jeden-Tag, kann aber für bestimmte Probleme sehr nützlich sein. Fragen, Anmerkungen oder sonstige Anliegen zum Post gehören hier in die Kommentaren. Für andere Fragen habe ich inzwischen ein Forum.