Titel einer URL auslesen

  • Hallo Leute,


    ich möchte für die Breadcrumbs meiner Seite den Titel einer URL auslesen. Die URL wird per php erzeugt bzw. wird die momentane URL per php gekürzt - von dieser neuen URL brauche ich den Titel als Name für den Link (und auch als title-tag). Hier der Code:


    PHP
    1. <a href=" <?php $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    2. $newPath = implode('/', array_slice(explode('/', $path), 0, 2));
    3. echo $newPath; ?>/" // löscht das letzte Verzeichnis der URL für den Pfad der "Kategorie"
    4. title="???">
    5. <span> ??? </span></a>

    Hat jemand Tipps, wie ich das machen kann? 8)

  • Da hat wildmieze mit dem Link recht, so einfach ist das in php nicht, da Du die verlinkte Seite per php abrufen musst um den Titel auszulesen und ihn dann erst verwenden kannst. Wenn Du eine Liste von 10(0...) Links hast, dann lädt Dein php-Skript erstmal alle Seite vor und dementsprechend lange dauert der Aufbau der Seite mit den Links.


    Ich würde da eher anders dran gehen:

    Wenn Du eh intern Seiten verlinkst, dann "weiß" Dein Server ja eigentlich wie der Titel generiert wird. Wenn der also aus der DB kommt, dann würde ich auch direkt in die DB gucken und mir den Titel da rausholen.

    Grüße vom Griechen,
    Cybergreek!

  • Der Code aus dem Link funktioniert auch leider nicht und das Ganze muss schon echt schnell sein. Die Seite darf nicht wegen der Breadcrumbs an Geschwindigkeit verlieren. Cybergreek du würdest also eher per js auf die db zugreifen? Hast du dazu eine konkrete Idee? :)

  • Cybergreek du würdest also eher per js auf die db zugreifen? Hast du dazu eine konkrete Idee? :)

    Sorry, das war etwas missverständlich geschrieben.


    Ich würde nicht per js auf die db zugreifen, sondern per php.

    An der Stelle, wo die Breadcrumbs in php generierst würde ich ansetzen:

    - Du hast ja den Link

    - und Du weißt was für ein Titel angezeigt wird, wenn dieser Link geöffnet wird (ist ja eine interne Seite, deswegen kannst Du da nachgucken, wie der Titel generiert wird)

    Grüße vom Griechen,
    Cybergreek!

  • Basiert Deine Seite auf einem bestimmten Tool (Wordpress, Joomla usw.) oder ist die selbst programmiert?


    Ich will Dir aber keine allzu großen Hoffnung machen, für meinen Weg solltest Du den Aufbau der Seite kennen und auch wissen, wie der Titel für den meta-Daten-Eintrag generiert wird.

    Evtl. hat ja jemand anders hier eine einfachere Lösung.

    Grüße vom Griechen,
    Cybergreek!

  • In diesem Fall müsstest Du den Baustein raussuchen, der die Breadcrumps erstellt und nachgucken, warum der Titel falsch ist.


    Hier ist im letzten Kommentar Beispielcode für eine Breadcrumb-Zeile, die auch die Titel per get_the_title() bestimmt und als alt-Attribut ausgibt.

    Grüße vom Griechen,
    Cybergreek!

  • .. für Wordpress würde ich vermutlich auf ein fertiges Plugin zurückgreifen, da gibt es bestimmt was Passendes.

    Ansonsten sieht die Lösung aus Cybergreeks Link spontan gut aus - Wordpress hat ja schon alles nötige irgendwie, irgendwo in Variablen gespeichert.

  • mit get_the_title() bekomme ich nur den aktuellen Seitentitel oder hast du dazu eine Anpassung?


    Ein Plugin wäre natürlich die einfachste Lösung, funktioniert in meinem Fall aber nicht, da ich keine "category"-Basis auf der Seite benutzen will.

  • Schau nochmal nach Plugins - so wie ich das gerade überblicke, können die meisten auch einen normalen Seitenbaum anzeigen, ohne Kategorien zu nutzen.


    Die "Anpassung" für get_the_title steht bereits in Cybercreeks Link. Die Sachen mit dem "parent" sollten den Titel der jeweils übergeordneten Seite ergeben. Da müsste man jetzt vermutlich noch eine Prüfung einbauen, ob es über dem parent noch weitere übergeordnete Seiten gibt, das Beispiel geht leider nur über 2 Ebenen. Wie gesagt, dafür gibt es mit Sicherheit ein Plugin. Zur Not Yoast SEO, da habe ich die Funktion auf jeden Fall schonmal gesehen. Ich würde das nur selbst bauen, wenn ich damit php lernen möchte oder sowas.

  • Ich muss das selber coden. Mit Plugins geht es einfach nicht. Yoast habe ich auch probiert..


    Mit Parents gehts auch nicht


    PHP
    1. <?php echo '<div class="breadcrumb">';
    2. // If there is a parent, display the link.
    3. $parent_title = get_the_title( $post->post_parent ); ?>
  • Hast Du nur den Teil kopiert? Du musst schon das ganze Script nehmen, sonst fehlt ja die Ausgabe ... was passiert denn, wenn Du es komplett übernimmst?


    ... aber daß das mit Plugins nicht gehen soll .. hmm .. Du musst da vermutlich auch einen Shortcode vom Plugin ins Theme einfügen, sonst weiß die Seite ja nicht, wo sie das Breadcrump anzeigen soll (falls Du kein Theme hast, bei dem das schon drin ist). Steht normalerweise in der Anleitung zum Plugin. Hast Du das gemacht?

  • Hab alles kopiert und damit wird trotzdem nur der aktuelle Titel ausgegeben!


    Und ja natürlich habe ich den Shortcode eingefügt, sonst hätte er ja gar nichts und nicht das falsche angezeigt! ;)


    Wenn du es ganz genau wissen willst: Ich benutze einfach keine Kategorie-Basis auf der Website - die übergeordnete Ebene ist eine einfache Seite mit einem Beitrags-Loop, das per Plugin erzeugt wird. Sieht viel besser aus und hat kein dämliches "category" im Link. Deswegen kann ich Plugins vergessen, weil die ja nicht automatisch die Seite als Kategorie-Basis annehmen!


    Hier noch einmal der gesamte Code:


  • Ich hatte angenommen, daß Du statt Kategorien einfach Seiten verwendest. Mehrere Seiten, und manche Seiten haben halt noch Seiten darunter. So wie eine normale Webseite.
    Benutzt Du nur Artikel? Völlig unsortiert? Weil Dich das "category" im Link stört? Die Links kann man doch in den Einstellungen anpassen, ich hatte noch nie irgendwo ein "category" im Link, und ich mach das nun auch schon ein paar Jahre ...

    Das hat auch nichts mit "Wenn Du es ganz genau wissen willst" zu tun - Deine Herangehensweise ist dann doch eher exotisch, da werden so einige Sachen nicht funktionieren .. genau genommen haben Deine Seiten/Artikel? (vermutlich) gar keine übergeordnete Seite, zumindest nicht aus Wordpress-Sicht.
    Ich hab keine Ahnung, wie Dein Plugin diese übergeordnete "Pseudo-Seite" anlegt, und woher sie weiß, was angezeigt werden soll, und was da in der Datenbank erzeugt wird. Und ob man da überhaupt einen Titel rausziehen kann. Wie wird denn das normale Seitenmenü erzeugt? Brauchst Du da nicht auch die Titel dieser Seiten? Wie viele Ebenen gibt es? ... Vielleicht kann der Ersteller des Plugins Dir helfen? Cybergreek , hast Du noch eine Idee?

  • Ich denke auch, dass der Ersteller des Plugins, das Du für die Seitenstruktur verwendest, am besten was dazu sagen kann.


    Die einzige Idee, die ich habe, ist der Hinweis auf die Definition von get_the_title().

    Als Parameter kann man der Funktion die ID eines Posts mitgeben, d.h. wenn Du die ID der übergeordneten Seite hast, dann kommst Du mit der Funktion auch weiter.

    Grüße vom Griechen,
    Cybergreek!

    Einmal editiert, zuletzt von Cybergreek ()

  • Cybergreek netter Ansatz, muss aber dynamisch sein - sonst muss ich ja bei jedem Artikel im Quelltext die ID fürs Breadcrumb anpassen. Aber zur Not..


    wildmieze Also, ich habe eine normale Seite in WP erstellt und per "Posts in Page" Plugin einfach einen Artikel-Loop mit Beiträgen bestimmter Kategorien eingefügt - alles ist gleich, nur dass meine Variante viel schöner aussieht als diese blöden TwentyTwelve Kategorie-Archive, die auch nicht einmal zusätzliche Textfelder über UND unter dem Artikel-Loop anbieten. Klar, vielleicht etwas exotisch und von WP nicht so vorgesehen - allerdings sind das ja auch Entwickler und keine OM-Profis. ;) Aus Sicht von Google, und das ist das entscheidende, ist diese Variante sauber - es gibt einfach keine Kategorie-Archive auf meiner Website, sämtliche Archive sind per 301 auf die entsprechende Seite mit Loop geleitet und ohnehin nicht intern verlinkt (es sei denn ich würde die Yoast Breadcrumbs aktivieren - sollte ich dort die category-Basis entfernen lassen, werden automatisch alle Seiten durch die Kategorie-Archive ersetzt (wg. selber slug), die ich ja nicht haben will!)

  • Posts in page .. dann nutzt du schon Kategorien, aber sie nutzen dir wohl wirklich nichts .. ich hab auch zwei oder drei Seiten, bei denen ich Artikel auf Seiten anzeigen lasse (Marke Eigenbau), aber da habe ich nie ein Breadcrump-Menü benutzt. Sind das denn überhaupt mehr als 2 Ebenen?

    Jut, also gibt es tatsächlich keine wirkliche Wordpress-Hierarchie, die man nutzen könnte.


    Im Ausgangspost schreibst Du, daß die Url der Artikelübersicht quasi eine verkürzte Version der Artikel-Url ist. Die URL der Übersichtsseite hast Du schon, Dir fehlt nur der Titel? .. mit url_to_postid() solltest du dann die ID und darüber dann den page_title holen können.

    .. ansonsten .. hm .. wenn es nur zwei Ebenen sind, könntest Du bei den Artikeln ein benutzerdefiniertes Feld anlegen und dort jeweils den Titel reinschreiben ;)

    Einmal editiert, zuletzt von wildmieze ()