Ankündigung

Einklappen
Keine Ankündigung bisher.

SimpleXML Hyperlink

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SimpleXML Hyperlink

    Guten Tag,
    mittels SimpleXML habe ich es geschafft, XML-Datein einzulesen und wiederzugeben. Meine Ziel war es, einen Nachrichten Ticker zu basteln, welches auch Erfolgreich war. Allerdings bin ich auf ein Problem gestoßen.
    Zitat von der Tagesschau Webseite (RSS-Feed wird von dort bezogen):
    Die einzelnen Schlagzeilen müssen auf die hinterlegten Meldungen verlinkt werden (ohne Frames).
    Quasi weiß ich nicht, wie ich das verwirklichen kann. Also wie ich die einzelnen Inhalte verlinken kann.
    Die Seite "PHP - Grundlegende SimpleXML Verwendung" habe ich mir auch schon angeschaut, allerdings konnte ich dort diesbezüglich nichts finden.

    Mein bisheriger Code sieht wie folgt aus:
    PHP-Code:
    <div id="rss">
                <marquee behavior="alternate" direction="left" scrolldelay="1" scrollamount="2"><font face="Arial" size="4">
                    <?php
                        $xmlFile 
    'http://www.tagesschau.de/xml/rss2/';
                        
    $plan simplexml_load_file($xmlFile);
                        foreach (
    $plan->channel as $row) {
                            
    printf("Quelle: %s&emsp;",
                                
    $row->copyright
                            
    );
                        }
                        foreach (
    $plan->channel->item as $row) {
                            
    printf("&emsp;+++ %s +++&emsp;",
                                
    $row->title
                            
    );
                        }
                    
    ?>
                </font></marquee>
            </div>
    (Falls es auch Tipps für die Laufleiste gibt, würde ich diese auch annehmen.)

    VG

  • #2
    ddie tagesschau rss (die nicht über https ausgeliefert wird)
    hat nur ein copyright notice bei mir.
    lohnt da ein script ?

    Kommentar


    • #3
      Die Copyright Notiz zeigt der ja am Anfang an.
      Naja so wie ich es verstanden habe, muss der Text, welcher dort angezeigt wird, auf die Webseite verlinkt werden.
      Beispielt: wenn in dem Lauftext steht "Zeuge in Handschellen: Ex-Wirecard-Chef sagt aus" und ich darauf drücke, muss er mich auf die "https://www.tagesschau.de/wirtschaft/wirecard-braun-aussage-untersuchungsausschuss-101.html" Seite bringen.
      So habe ich es verstanden. Und in der XML-Datei (view-source:http://www.tagesschau.de/xml/rss2/) kann ich auf den Link zugreifen, also ich kann den beziehen, aber ich weiß nicht wie ich diese Verlinkung machen kann. (Hyperlink quasi)

      Kommentar


      • #4
        Na indem du ein HTML-Link mit der url aus <link> an den Titel ranhängst. Als Linktext im einfachsten Fall ein "mehr..." .

        Kommentar


        • #5
          Das habe ich auch schon probiert. Hat auch nicht funktioniert.

          Code:
          printf("&emsp;<a href="$link">+++ %s +++</a>&emsp;",
               $row->title
          );
          Der soll sich ja für jede Überschrift den Link ziehen und diesen als Hyperlink setzen.

          Kommentar


          • #6
            In deinem obigen Code ist so so ziemlich alles falsch.
            • HTML veraltet, kein CSS verwendet, wie heute üblich
            • EVA-Prinzip nicht eingehalten
            • Kontextwechsel nicht beachtet
            • http anstatt wie auf der Webseite angegeben https Link verwendet

            Da ich aus einem älterem Thread mir den Ticker damals abgespeichert habe, habe ich dir mal diesen angepasst und hier hast du das Beispiel
            PHP-Code:
            <?php
            // Fehler abschalten
            libxml_use_internal_errors(true);

            $xmlFile 'https://www.tagesschau.de/xml/rss2_https/';
            $showtime 10// seconds each item is showed in the ticker
            /* init some variables */
            $animetime null;
            $ticker null;

            $plan simplexml_load_file($xmlFile);
            if (
            false !== $plan) {

                foreach (
            $plan->channel as $row) {
                    
            $quelle =  htmlspecialchars($row->copyright);
                }

                foreach (
            $plan->channel->item as $row) {
                    
            $ticker .= '+++ <a href="' htmlspecialchars($row->link) . '">'htmlspecialchars($row->title) . '</a> +++ ';
                    
            $animetime += $showtime;
                }
            }else{

                
            $quelle 'Zur Zeit keine Verbindung zu den Nachrichten!';
                for (
            $i=1$i<11$i++){
                    
            $ticker .= '+++ Zur Zeit keine Verbindung zu den Nachrichten! +++ ';
                    
            $animetime += $showtime;
                }
            }
            ?>

            <!DOCTYPE html>
            <html lang="de">
            <head>
            <meta charset="utf-8">
            <title>TICKER Beispiel</title>
              <style>
                #ticker    {
                    background-color: silver;
                    border-top: 2px solid blue;
                    border-bottom: 2px solid blue;
                    padding: 3px 0;
                    overflow: hidden;
                }
                #ticker > span {
                    position: relative;
                    left: 5px;
                    font: 2em Arial;
                    white-space: nowrap;
                    animation: moveTicker <?=$animetime;?>s linear infinite;
                    display: inline-block;
                }
                @keyframes moveTicker{
                    from{ transform: translate3d(0%, 0%, 0px);
                          left: 100%; }
                    to  { transform: translate3d(-100%, 0%, 0px);
                          left: 0%; }
                }    
                #ticker > span a {
                    text-decoration: none;
                }    
              </style>
            </head>
            <body>
              <h1>Ticker Beispiel</h1>
              <p>Quelle: <?=$quelle;?> </p>
              <p id="ticker"><span><?=$ticker;?></span></p>
            </body>
            </html>
            Für die Animation wird im CSS die Laufzeit dynamisch an die Anzahl der Nachrichten angepasst, dies muss beachtet werden, wenn das CSS als Datei ausgelagert wird.

            Kommentar


            • #7
              Zitat von protestix Beitrag anzeigen
              In deinem obigen Code ist so so ziemlich alles falsch.
              • HTML veraltet, kein CSS verwendet, wie heute üblich
              • EVA-Prinzip nicht eingehalten
              • Kontextwechsel nicht beachtet
              • http anstatt wie auf der Webseite angegeben https Link verwendet
              Tut mir leid, bin noch ein Neuling und versuche das zu verstehen, was mir im Internet angeboten wird.
              Ich bedanke mich aufjedenfall bei dir. Ich muss nur noch schauen, wie ich das ganze in meinem Programm implementieren kann.

              VG!

              Kommentar


              • #8
                Zitat von silent53 Beitrag anzeigen
                (Falls es auch Tipps für die Laufleiste gibt, würde ich diese auch annehmen.
                Es gibt nur eines was man mit der Laufleiste sinnvoll machen kann: weglassen. Ersatzlos. Die Nachrichten können schon hin (aber mit Cache, nicht bei jedem Seitenaufruf neu laden), aber als statischer Text, keine Laufschrift!

                Kommentar


                • #9
                  Das Internet vergisst nicht, und das ist auch oft das Dilemma, wenn man nach Code sucht. In Google hast du die Möglichkeit die Suche zeitlich einzugrenzen also zum Beispiel nur Seiten deren Aktualisierung im letzten Jahr stattfand anzeigen zu lassen. Das solltest du bei deiner Recherche nutzen um nicht immer wieder veralteten Code angezeigt zu bekommen.

                  Darüber hinaus ist das Kopieren von Code zwar eine Möglichkeit um sich umzusehen wie andere das gelöst haben, aber der Lerneffekt hält sich in Grenzen wenn man nicht zumindest versucht den Code auch mal zu zergliedern und vor allem zu verstehen.

                  Du hast jetzt eine Vorlage und Stichworte erhalten, suche dir dazu mal die Themen raus und lese auch nach wie sich das verhält und schaue auch in unsere Wissenssammlung(Link oben), darin findest du hilfreiche Informationen, die von Anfängern gerne falsch gemacht werden.

                  Die Smileys bitte sparsam einsetzen dies ist nicht Fratzenbuch hier.

                  Kommentar


                  • #10
                    Zitat von protestix Beitrag anzeigen
                    PHP-Code:
                    $ticker .= '+++ <a href="' htmlspecialchars($row->link) . '">'
                    Für den vorliegenden Fall mag das ausreichend sein, allgemein muss da mehr getan werden. Dies hier 'How-to Urlencode & Htmlspecialchars Links' ist leider auch nicht ganz vollständig.
                    Habe auf die schnelle nichts besseres gefunden.


                    Kommentar


                    • #11
                      Zitat von jspit Beitrag anzeigen
                      Für den vorliegenden Fall mag das ausreichend sein, allgemein muss da mehr getan werden.
                      Da hast du recht wollte den Neuling aber nicht überfordern und da die Links(URLs) aus dem XML RSS Feed ja schon korrekt aufbereitet sind, habe ich es sein gelassen.
                      Will aber gern noch die Stellen im Handbuch nachreichen
                      https://www.php.net/manual/de/function.rawurlencode.php
                      und
                      https://www.php.net/manual/de/function.urlencode.php




                      Kommentar


                      • #12
                        Hay,
                        protestix
                        ich kopiere nicht einfach aus dem Internet, ohne das selber zu verstehen. Desweiteren versuche ich es immer auf mein Thema umzuschreiben.

                        tk1234 soweit ich es verstanden habe, darf die ganze Geschichte nicht gespeichert werden. (https://www.tagesschau.de/download/xml/)

                        Kommentar


                        • #13
                          Zitat von silent53 Beitrag anzeigen
                          soweit ich es verstanden habe, darf die ganze Geschichte nicht gespeichert werden. (https://www.tagesschau.de/download/xml/)
                          Da steht nur dass die Inhalte nicht archiviert werden dürfen, einen Cache würde ich aber nicht als Archivierung ansehen.

                          Kommentar


                          • #14
                            Guten Tag,
                            wie läuft das ganze eigentlich zwecks Kompatibilität? Mir ist aufgefallen, dass die Laufleiste bei Mozilla richtig angezeigt wird, allerdings bei Chromium nicht. Das selbe ist mit der Schrift.
                            Hat diesbezüglich jemand Tipps?
                            (Wollte dafür nicht noch einmal einen neuen Thread öffnen.)

                            Kommentar


                            • #15
                              Du musst schon Code dazu zeigen.

                              Mein Beispiel in #6 läuft in beiden Browsern exakt gleich ab.

                              Kommentar

                              Lädt...
                              X