We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 8031
    • 70 Posts
    Есть в сниппете, который выводит RSS из ЖЖ, вот такая строка:
    $fp = fopen("http://community.livejournal.com/community_name/data/rss", "r")


    Сниппет выводится просто [[LiveJournal]] и показывает полную RSS-ленту.
    Никак не могу дотумкать как сделать чтобы в итоге при вызове сниппета в виде [[LiveJournal? &tags=`tag_name`]] функция fopen в той строке получала бы значение http://community.livejournal.com/community_name/data/rss?tag=tag_name, то есть выглядела бы так:
    $fp = fopen("http://community.livejournal.com/community_name/data/rss?tag=tag_name", "r")


    Нашел только один способ выводить текст из параметра, но не знаю как его применить в данном случае
    if ($tags != "") {
        $output .= "<p>".$tags."</p>";
    }
    
    return $output;
      • 26744
      • 157 Posts
        • 897
        • 1,620 Posts
        а почему $_GET[] ?

        все банально
        ...
        $source_url = "http://community.livejournal.com/community_name/data/rss";
        if(iiset($tags))
            $source_url .= "?tags=$tags";
        $fp = fopen($source_url, "r");
        ...
        
          "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

          Не используйте Revo для "просто сайтов". Используйте Evo

          Who can defeat the Russian bear?
          • 8031
          • 70 Posts
          Quote from: Aleksey at Jul 15, 2010, 01:13 PM

          а почему $_GET[] ?

          все банально
          ...
          $source_url = "http://community.livejournal.com/community_name/data/rss";
          if(iiset($tags))
              $source_url .= "?tags=$tags";
          $fp = fopen($source_url, "r");
          ...
          


          Вот тут по логике правильно, если тэгов нет то выводится без ?tags=
          Но всё же не работает (( Пишет
          Parse error: syntax error, unexpected T_LOGICAL_OR in /home/a6310310/tripcatcher.ru/docs/manager/includes/document.parser.class.inc.php(770) : eval()'d code on line 85
          


          Привожу полный код:
          <?php
          class RSSParser {
          var $insideItem = false;
          var $tag = "";
          var $title = "";
          var $description = "";
          var $originalLink = "";
          var $dt = "";
          var $author = "";
          var $authorid = "";
          var $replies = "";
          function startElement($parser, $tagName, $attrs)
          {
          if($this->insideItem)
          {
          $this->tag = $tagName;
          }
          elseif($tagName == "ITEM")
          {
          $this->insideItem = true;
          }
          }
          function endElement($parser, $tagName)
          {
          if($tagName == "ITEM")
          {
          echo("<div id='post'>");
          printf("<div id='post_title'><h2>%s</h2></div>", $this->title);
          printf("<div id='post_content'><p>%s</p></div>", $this->description);
          printf("<div id='post_links'>%s", $this->dt);
          printf(" | Автор: <a href=\"http://%s.livejournal.com\" target=\"_blank\">%s</a> | ",
          trim($this->authorid), trim($this->authorid));
          printf("<a href=\"%s\" target=\"_blank\">%s",
          trim($this->originalLink), "Коментарии ");
          printf("( %s )</a>", $this->replies);
          printf("<a href=\"%s?mode=reply\" target=\"_blank\">%s",
          trim($this->originalLink), "Оставить комментарий ");
          printf("</a></div>");
          echo("</div>");
          $this->title = "";
          $this->originalLink = "";
          $this->description = "";
          $this->dt = "";
          $this->authorid = "";
          $this->replies = "";
          $this->insideItem = false;
          }
          }
          function characterData($parser, $data)
          {
          if($this->insideItem)
          {
          switch($this->tag)
          {
          case "TITLE":
          $this->title .= $data;
          break;
          case "DESCRIPTION":
          $this->description .= $data;
          break;
          case "LINK":
          $this->originalLink .= $data;
          break;
          case "LJ:POSTER":
          $this->authorid .= $data;
          break;
          case "LJ:REPLY-COUNT":
          $this->replies .= $data;
          break;
          case "PUBDATE":
          $this->dt .= $data;
          break;
          }
          }
          }
          }
          $xml_parser = xml_parser_create("UTF-8");
          $rss_parser = new RSSParser();
          xml_set_object($xml_parser, &$rss_parser);
          xml_set_element_handler($xml_parser, "startElement", "endElement");
          xml_set_character_data_handler($xml_parser, "characterData");
          $source_url = "http://community.livejournal.com/community_name/data/rss";
          if(isset($tags))
              $source_url .= "?tags=$tags";
          $fp = fopen($source_url, "r");
          or die("Error reading RSS data!");
          while($data = fread($fp, 4096))
          {
          xml_parse($xml_parser, $data, feof($fp))
          or die("Error parsing RSS data!");
          }
          fclose($fp);
          xml_parser_free($xml_parser);
          ?>
          
            • 897
            • 1,620 Posts

            $fp = fopen($source_url, "r"); or die("Error reading RSS data!");
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

              Не используйте Revo для "просто сайтов". Используйте Evo

              Who can defeat the Russian bear?
              • 8031
              • 70 Posts
              РЕШЕНО!!

              if($addText != "") {
                  $source_url = "http://tripcatcher.livejournal.com/data/rss?tag=$addText";
              }
              else {
                  $source_url = "http://tripcatcher.livejournal.com/data/rss";
              }
              $fp = fopen($source_url, "r")
              or die("Error reading RSS data!");