We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 8031
    • 70 Posts
    Итак, сниппет выводит заголовок, содержимое поста (к сожалению еще не разобрался как делать cut`ы), имя автора, ссылку на его страницу, ссылку на страницу поста вместе с количеством комментариев, ссылку на добавление комментария.

    Можно вставлять посты только с определенным тэгом, использовав вызов сниппета [[LiveJournal? &addText=`тэг`]]
    Чтобы вывести все посты пишется просто [[LiveJournal]]

    <?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");
    if($addText != "") {
        $source_url = "http://username_или_community.livejournal.com/data/rss?tag=$addText";
    }
    else {
        $source_url = "http://username_или_community.livejournal.com/data/rss";
    }
    $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);
    ?>
    


    Буду признателен если найдутся люди, которые присоединятся к развитию этого простенького, но наверняка, многим полезного сниппета ))

    Пользуйтесь на здоровье )