Auf meiner Seite sind Structured Data (Rich Snippets) als JSON-LD per eigenem Plugin integriert, da mir das Microdata-Format Joomlas zu unflexibel ist. JSON-LD wird im HEAD per SCRIPT-Tags eingefügt. Darin auch der gesamte Artikeltext. Bevor Mobilgeräte explodieren, weil sie den unsichtbaren Text doppelt laden müssen, brauchte ich Code, um die Structured Datas nur Robots zu zeigen.

Hinweis: Seit 2016 benötigt Google in den Structured Datas den Artikeltext (Eigenschaft articleBody) nicht mehr, der die größte Datenmenge in meinem JSON-LD darstellte. Trotzdem ist die Anzeige der SCRTPTS nur für Bots sinnvoll. Jedes Bit zählt.

Die Prüfung ist nicht sehr spezifisch, aber vollkommen ausreichend. Alle "Normalbesucher" sollten von unnötig verlängerten Ladezeiten verschont bleiben. Um mehr ging es mir nicht.

Geprüft wird, ob im UserAgent ($_SERVER['HTTP_USER_AGENT']) vorkommt

  • http
  • bot
  • robot
  • spider
  • crawler
  • curl

oder der UserAgent leer ist.

Via Joomla-Application

$isRobot = JFactory::getApplication()->client->robot;

Rückgabewert ist true oder false.

So einfach kann es sein. Nur rausfinden musste ich das erst mal, dass es so einfach sein kann.

Eine Alternative

Oft jedoch redundant, da die Joomla-Application im Hintergrund nichts anderes macht, schon gemacht hat.

$client = new JApplicationWebClient;
$isRobot = $client->robot;