Jump to content

Recommended Posts

Уважаемые Форумчане!

Как же все таки создать RSS-канал на Simpla 2.1.0 ?
Все перепробовал. Не генерируется автоматически.

Может знает кто?
Спасибо за любую информацию.

Link to post
Share on other sites
  • 9 months later...

Вот здесь человек автор в комментариях выложил скрипт rss для simpla.
http://androoha.com/web-design-articles/81-update-rss-automatically

И вот его инструкция про то как настроить cron на хостинге, для автоматической генерации rss:

"На самом деле через cPanel ничего сложного cron job добавлять, но на всякий случай опишу :) Частоту выполнения настроить там совсем просто, а чтобы выполнить именно php-скрипт, там нужно по-особому команду писать:
/usr/bin/php -f /home/something/public_html/test.php
т.е. первая часть это путь к пхп и параметр один, а вторая это и есть адрес к скрипту (у вас он будет свой)

Если вы не знаете, какой он должен быть, можете сделать как я обычно делаю - закидываете на хостинг какой-нибудь php-файл со следующим содержанием:
<?php echo $_SERVER['DOCUMENT_ROOT']; ?>
и запускаете его в браузере. Он вам как раз и напишет этот рут, а относительно его уже и допишите, где конкретно лежит ваш скрипт.

С уважением, Androoha."

Link to post
Share on other sites
  • 5 years later...

Погуглил и ничего нормально не нашел, пришлось самому сделать.

 

И так: RSS файл товаров для Simpla

 

1. В корне сайта создаем файл rss.php

2. В этот файл вставляем этот код:


require_once('api/Simpla.php');
$simpla = new Simpla();


$base_url = $simpla->config->root_url;

$lastmod = date("Y-m-d");


            $filter['limit']=100;
            $filter['visible']=1;
            
		$products = array();
		foreach($simpla->products->get_products($filter) as $p)
			$products[$p->id] = $p;


		if(!empty($products))
		{
			$products_ids = array_keys($products);
			foreach($products as &$product)
			{
				//$product->variants = array();
				$product->images = array();
			//	$product->properties = array();
			}
	
			//$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
			
			//foreach($variants as &$variant)
			//{
				//$variant->price *= (100-$discount)/100;
			//	$products[$variant->product_id]->variants[] = $variant;
			//}
            
            //print_r($products_ids);
	
			$images = $simpla->products->get_images(array('product_id'=>$products_ids));
			foreach($images as $image)
				$products[$image->product_id]->images[] = $image;
                
        }

    header("Content-Type: application/rss+xml; charset=UTF-8"); 


     $p = $products[0];
     
     $rssfeed = '<?xml version="1.0" encoding="UTF-8"?>';
     $rssfeed .= '<rss version="2.0">';
     $rssfeed .= '<channel>';
     $rssfeed .= '<title>'.$simpla->settings->site_name.'</title>';
     //$rssfeed .= '<link>'.$cat_url.'</link>';
     $rssfeed .= '<description>'.$simpla->settings->company_name.'</description>';
     $rssfeed .= '<language>ru-ru</language>';
     //$rssfeed .= '<category>' . $category . '</category>';
     $rssfeed .= '<copyright>Copyright '.date('Y').' '.$simpla->settings->company_name.'</copyright>';
     $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
     $rssfeed .= '<lastBuildDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</lastBuildDate>';

  
      
     foreach($products as $p)
     {

        $rssfeed .= '<item>';
        
        
        $rssfeed .= '<guid isPermaLink="true">'. $base_url .'/products/'. $p->url . '</guid>';
        $rssfeed .= '<link>'. $base_url .'/products/'. $p->url . '</link>';
        $rssfeed .= '<title>' . $p->name . '</title>';
        $rssfeed .= '<description><![CDATA[<center><img src="' . $p->images[0]->filename . '"/></center><br>' 
        . ($p->body) . ']]></description>';
        //$rssfeed .= '<comments>'. $base_url . $p->url . '#comments</comments>';
        
        $rssfeed .= '<image>';
        $rssfeed .= '<url>' . $p->images[0]->filename . '</url>';
        $rssfeed .= '<title>' . $p->name . '</title>';
        $rssfeed .= '<link>'. $base_url .'/products/'. $p->url . '</link>';
        $rssfeed .= '</image>';
        $rssfeed .= '<enclosure url="' . $p->images[0]->filename . '" type="image/jpeg" length="123" />';
        
        
        $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
        
        
        $rssfeed .= '</item>';
     }
  
     $rssfeed .= '</channel>';
     $rssfeed .= '</rss>';    

     print $rssfeed;



Я делал без вывода цен, мне оно ненужно, если вам надо я там оставил вызов метода $variants с помощью него вы сможете сделать вывод цен.

И там есть массив filter где указываете например значение limit это сколько выводить товаров в rss я поставил 100 если вам надо ставьте больше, лично когда я поставил 10000 то реально стало подвисать так как у меня в магазе почти 5тыс товаров.

 

 

3. Открываем файл в корне сайта .htaccess , там находите

# Google sitemap
RewriteRule ^sitemap.xml?$	sitemap.php  [L,QSA]

и под ним вставляете

# RSS
RewriteRule ^rss.xml?$  rss.php  [L,QSA]

Вуаля! Все готово!

 

Теперь проверьте работу rss. http://ваш-сайт/rss.xml

 

Ваше спасибо присылайте сюда R853468763307 всем удачи.

Link to post
Share on other sites
  • 1 year later...

Погуглил и ничего нормально не нашел, пришлось самому сделать.

 

И так: RSS файл товаров для Simpla

 

1. В корне сайта создаем файл rss.php

2. В этот файл вставляем этот код:


require_once('api/Simpla.php');
$simpla = new Simpla();


$base_url = $simpla->config->root_url;

$lastmod = date("Y-m-d");


            $filter['limit']=100;
            $filter['visible']=1;
            
		$products = array();
		foreach($simpla->products->get_products($filter) as $p)
			$products[$p->id] = $p;


		if(!empty($products))
		{
			$products_ids = array_keys($products);
			foreach($products as &$product)
			{
				//$product->variants = array();
				$product->images = array();
			//	$product->properties = array();
			}
	
			//$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
			
			//foreach($variants as &$variant)
			//{
				//$variant->price *= (100-$discount)/100;
			//	$products[$variant->product_id]->variants[] = $variant;
			//}
            
            //print_r($products_ids);
	
			$images = $simpla->products->get_images(array('product_id'=>$products_ids));
			foreach($images as $image)
				$products[$image->product_id]->images[] = $image;
                
        }

    header("Content-Type: application/rss+xml; charset=UTF-8"); 


     $p = $products[0];
     
     $rssfeed = '<?xml version="1.0" encoding="UTF-8"?>';
     $rssfeed .= '<rss version="2.0">';
     $rssfeed .= '<channel>';
     $rssfeed .= '<title>'.$simpla->settings->site_name.'</title>';
     //$rssfeed .= '<link>'.$cat_url.'</link>';
     $rssfeed .= '<description>'.$simpla->settings->company_name.'</description>';
     $rssfeed .= '<language>ru-ru</language>';
     //$rssfeed .= '<category>' . $category . '</category>';
     $rssfeed .= '<copyright>Copyright '.date('Y').' '.$simpla->settings->company_name.'</copyright>';
     $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
     $rssfeed .= '<lastBuildDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</lastBuildDate>';

  
      
     foreach($products as $p)
     {

        $rssfeed .= '<item>';
        
        
        $rssfeed .= '<guid isPermaLink="true">'. $base_url .'/products/'. $p->url . '</guid>';
        $rssfeed .= '<link>'. $base_url .'/products/'. $p->url . '</link>';
        $rssfeed .= '<title>' . $p->name . '</title>';
        $rssfeed .= '<description><![CDATA[<center><img src="' . $p->images[0]->filename . '"/></center><br>' 
        . ($p->body) . ']]></description>';
        //$rssfeed .= '<comments>'. $base_url . $p->url . '#comments</comments>';
        
        $rssfeed .= '<image>';
        $rssfeed .= '<url>' . $p->images[0]->filename . '</url>';
        $rssfeed .= '<title>' . $p->name . '</title>';
        $rssfeed .= '<link>'. $base_url .'/products/'. $p->url . '</link>';
        $rssfeed .= '</image>';
        $rssfeed .= '<enclosure url="' . $p->images[0]->filename . '" type="image/jpeg" length="123" />';
        
        
        $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
        
        
        $rssfeed .= '</item>';
     }
  
     $rssfeed .= '</channel>';
     $rssfeed .= '</rss>';    

     print $rssfeed;



Я делал без вывода цен, мне оно ненужно, если вам надо я там оставил вызов метода $variants с помощью него вы сможете сделать вывод цен.

И там есть массив filter где указываете например значение limit это сколько выводить товаров в rss я поставил 100 если вам надо ставьте больше, лично когда я поставил 10000 то реально стало подвисать так как у меня в магазе почти 5тыс товаров.

 

 

3. Открываем файл в корне сайта .htaccess , там находите

# Google sitemap
RewriteRule ^sitemap.xml?$	sitemap.php  [L,QSA]

и под ним вставляете

# RSS
RewriteRule ^rss.xml?$  rss.php  [L,QSA]

Вуаля! Все готово!

 

Теперь проверьте работу rss. http://ваш-сайт/rss.xml

 

Ваше спасибо присылайте сюда R853468763307 всем удачи.

 

Здравствуйте! По выше представленной инструкции не работает на версии 2.3.7, по адресу http://мой-сайт/rss.xml выходит просто пустая страница! Может кто-то поможет поправить? 

Edited by Sergeo
Link to post
Share on other sites

Здравствуйте! По выше представленной инструкции не работает на версии 2.3.7, по адресу http://мой-сайт/rss.xml выходит просто пустая страница! Если смотреть код этой пустой страницы, то вот что в коде:

<!--   memory peak usage: 1734416 bytes   page generation time: 0.012261867523193 seconds   -->

 

Может кто-то поможет поправить?  

Edited by Sergeo
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
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.

Loading...
×
×
  • Create New...