Jump to content
Sign in to follow this  
torz

[Решено] Лента блога xml

Recommended Posts

Помогите решить вопрос!

нашел некий xml файл еа форуме он реализует RSS ленту товаров

я решил сделать ленту блога

и в общем уже несколько дней не могу решить пару вопросов

вот код который был взят за основу

<modification>
  <id>latest, pavbloglatest, and special products rss feed</id>
  <version>0.2.2</version>
  <vqmver>2.1.7</vqmver>
  <author>Tri Le trile7 at gmail dot com</author>

  <file name="catalog/view/theme/*/template/module/pavbloglatest.tpl">
    <operation>
      <search position="replace"><![CDATA[<?php echo $heading_title; ?>]]></search>
      <add><![CDATA[<?php echo "$heading_title <a href='".HTTP_SERVER."?rss=pavbloglatest' title='Subscribe to pavbloglatest Products'><img src='http://cdn1.iconfinder.com/data/icons/socialnetworking/16/rss.png' alt='Subscribe' /></a>"; ?>]]></add>
    </operation>
  </file>

 
  <file name="catalog/controller/common/header.php">
    <operation>
      <search position="after">protected function index</search>
      <add><![CDATA[
        $rss = isset($this->request->get["rss"]) ? $this->request->get["rss"] : "";
        if ($rss=="latest" || $rss=="pavbloglatest" || $rss=="special" || $rss=="bestseller") {
          $this->load->model("pavblog/blog");
          $this->load->model("catalog/product");
          $this->load->model("localisation/currency");
          $this->load->model("tool/image");
          $this->data["products"] = array();

          $limit = 10;
          $image_width = 100;
          $image_height = 100;
          $currency = $this->currency->getCode();

          if ($rss == "latest") {
            $data = array("sort"  => "p.date_added", "order" => "DESC", "start" => 0, "limit" => $limit);
            $products = $this->model_catalog_product->getProducts($data);
          }
          elseif ($rss == "pavbloglatest") {
            $blogs = $this->model_pavblog_blog->getListBlogs( $data );
            $this->data['heading_title'] = $this->language->get('text_latest');
          }
          elseif ($rss == "special") {
            $data = array("sort"  => "pd.name", "order" => "ASC", "start" => 0, "limit" => $limit);
            $products = $this->model_catalog_product->getProductSpecials($data);
          }
          elseif ($rss == "bestseller") {
            $data = array("sort"  => "pd.name", "order" => "ASC", "start" => 0, "limit" => $limit);
            $products = $this->model_catalog_product->getBestSellerProducts($limit);
          }

          $output = "<?xml version='1.0' encoding='UTF-8' ?>";
          $output .= "<rss version='2.0'>";
          $output .= "<channel>";
          $output .= "<title><![CDATA[" . $this->config->get("config_name") . " - Новостная лента]]]]><![CDATA[></title>";
          $output .= "<description><![CDATA[" . $this->config->get("config_meta_description") . "]]]]><![CDATA[></description>";
          $output .= "<link><![CDATA[" . HTTP_SERVER . "]]]]><![CDATA[></link>";
          $output .= "<pubDate>" . date('D, j F Y H:i:s e', strtotime($blog['created'])) . "</pubDate>";
          foreach ($blogs as $key => $blog) {
            $title = $blog['meta_title'] ? $blog['meta_title']:$blog['title'];
            $link = $this->url->link('pavblog/blog','blog_id='.$blog['blog_id']);                 

            $description = $blog[''] = html_entity_decode( $blog['description'] );
            
            $date = $blog['created'] = html_entity_decode( $blog['created'] );
            
            $image_url = $this->model_tool_image->resize($blog['image'], $setting['width'], $setting['height'] );
                    
            if ($image_url) $description .= "<p><a href='$link'><img src='$image_url' alt=''></a></p>";
          

            if ($rss != "special" || $special) {
              $output .= "<item>";
              $output .= "<title><![CDATA[" . html_entity_decode($title, ENT_QUOTES, "UTF-8") . "]]]]><![CDATA[></title>";
              $output .= "<link><![CDATA[" . html_entity_decode($link, ENT_QUOTES, "UTF-8") . "]]]]><![CDATA[></link>";
              $output .= "<description><![CDATA[" . html_entity_decode($description, ENT_QUOTES, "UTF-8") . "]]]]><![CDATA[></description>";
              $output .= "<guid><![CDATA[" . html_entity_decode($link, ENT_QUOTES, "UTF-8") . "]]]]><![CDATA[></guid>";
              $output .= "<pubDate>" . date('D, j F Y H:i:s e', strtotime($blog['created'])) . "</pubDate>";
              $output .= "</item>";
            }
          }
          $output .= "</channel>";
          $output .= "</rss>";

          header("Content-Type: application/rss+xml");
          echo "$output";
          die();
        }
      ]]></add>
    </operation>
  </file>

</modification>

а вот сам адрес ленты http://светля4ок.com.ua/?rss=pavbloglatest

что не получается:

не могу выводить последние добавленные блоги

почему то выводится первые блоги раздела советы, а потом новости вроде по порядку

я думал изменить ID блогов так как первый 24 а второй 25 но может есть другой выход

не могу установить лимит выводимых новостей

не могу все фотки резать чтоб одинаковые были

не могу вывести дату

и может есть возможность каждую новость как кто выделить, тобишь отсоединить друг от друга, чтобы не сливалось все, как вариант Дату отображать )))

использую блог Pav Blog

спасибо всем откликнувшимся!

Share this post


Link to post
Share on other sites

Да вьетнамские  павлики идиоты полные :) :ugeek:

Они для RSS сделали отдельный vqmod (Карл, vqmod!)  код, хотя он отличается от вывода списка записей или продуктов всего то шаблоном

Share this post


Link to post
Share on other sites

Проблема здесь

 

if ($rss == "latest") {
            $data = array("sort"  => "p.date_added", "order" => "DESC", "start" => 0, "limit" => $limit);
            $products = $this->model_catalog_product->getProducts($data);
          }

 

Скорее всего (99%) в вызове самого метода павликов - там если нет этого параметра то берется по умолчанию opencart

 

$blogs = $this->model_pavblog_blog->getListBlogs( $data );

 

Здесь нет $limit

 

Сделайте так

$data = array("sort"  => "p.date_added", "order" => "DESC", "start" => 0, "limit" => '111111');
$blogs = $this->model_pavblog_blog->getListBlogs( $data );

Share this post


Link to post
Share on other sites

Спасибо большое только я чуток изменил может куму пригодится

$data = array("sort"  => "b.created", "order" => "DESC", "start" => 0, "limit" => '10');
$blogs = $this->model_pavblog_blog->getListBlogs( $data );
а как же дату вывести? Edited by afwollis

Share this post


Link to post
Share on other sites

Дату вывел кому интересно

заменил

<pubDate>" . date('D, j F Y H:i:s e', strtotime($blog['created'])) . "</pubDate>";

на

$output .= "<pubDate>" . date("Y, n d ",strtotime($blog['created'])) . "</pubDate>";

только одно смущает что время показывает на всех блогах 0:00

Так остался еще вопрос по размеру фотки как бы это решить чтоб она обрезалась под нужный размер?

Share this post


Link to post
Share on other sites

Дату вывел кому интересно

заменил

<pubDate>" . date('D, j F Y H:i:s e', strtotime($blog['created'])) . "</pubDate>";

на

$output .= "<pubDate>" . date("Y, n d ",strtotime($blog['created'])) . "</pubDate>";

только одно смущает что время показывает на всех блогах 0:00

Так остался еще вопрос по размеру фотки как бы это решить чтоб она обрезалась под нужный размер?

не это все фигня не проходит так валидацию

так что оставляем вот так

$output .= "<pubDate>" . date("D, d M Y H:i:s O",strtotime($blog['created'])) . "</pubDate>";

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.