Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 9 месяцев спустя...

Вот здесь человек автор в комментариях выложил скрипт 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."

Ссылка на сообщение
Поделиться на другие сайты
  • 5 лет спустя...

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

 

И так: 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 всем удачи.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

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

 

И так: 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 выходит просто пустая страница! Может кто-то поможет поправить? 

Изменено пользователем Sergeo
Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Изменено пользователем Sergeo
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...