Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
Отображение опросов из LJR (ЛЖР, «Тифаретник», LJ.ROSSIA.ORG) и, возможно, ЖЖ (livejournal) в WP

1. Преамбула

Заметка посвящается тем, кто хочет перенести свой блог из ЖЖ, ЛЖР или другого блогосервиса, работающего на движке ЖЖ (LJ) в блог на Wordpress

2. Суть

В ЖЖ и сайтах, работающих на движке ЖЖ существует определенный тип поста - опрос. И переносящие свой блог пользователи сталкиваются с невозможностью стандартными средствами перенести опрос из ЖЖ или (в моем примере LJR) в свой блог на Wordpress.

3. Стратегия решения проблемы, плюсы и минусы.

А мы и не будем переносить результаты опроса из (в нашем случае) LJR, а будем отображать сам опрос, беря его с сайта.
+ Результаты опроса будут отображаться онлайн в нашем блоге, так же, как они будут и в блоге LJR
+ Пользователи сайта могут проголосовать в опросе, только зарегистрировавшись на старом сайте. Что плюс, если вы просто хотите сохранить результаты опроса на новом сайте/не хотите суммировать результаты из двух опросов.
- При отображении поста необходима связь с сайтом, если ее не будет или опрос будет удален, то это приведет к возникновению ошибки
- В конкретном примере я использовал довольно старую версию движка ЖЖ, которая применяется на сайте LJ.ROSSIA.ORG, посему вам потребуется подкорректировать код, если вы переносите блог с ЖЖ или другого сайта, работающего на том же движке.

4. Описание алгоритма.

1. Получить ID опроса (пользователь должен задать его вручную)
2. Выделить из страницы опроса его результаты и ссылки на участие в опросе.
3. Встроить эту информацию в пост Wordpress и отобразить ее.

5. Тестовый опрос.

Создан здесь: http://lj.rossia.org/users/hex_laden/348192.html
ID: 1307
Страница опроса: http://lj.rossia.org/poll/?id=1307&mode=results

6. Что понадобится

Внешний html-парсер, я использовал этот готовый simple_html_dom.php
7. Готовый код.

Сначала создаем файл с функцией, непосредственно занимающейся парсингом страницы опроса:

<?php	
	include 'simple_html_dom.php';

	function GetPoll($id)
	{
		$url='http://lj.rossia.org/poll/?id='.$id.'&mode=results';
		//создаём новый объект
		$html = new simple_html_dom();
		//загружаем в него данные
		$html = file_get_html($url);
		if ($html===false) //если что-то не загрузилось
		{
			$answer='ERROR: CONNECTION ERROR ['.$url.']';
			//освобождаем ресурсы
			unset($html);
			return $answer;
		}
		//тут будем парсить
		$ret = $html->find('img[src=/img/dot.gif]'); //нашли приметный gif	
		$answer='';
		foreach ($ret as $img)
		{
			//вытаскиваем родительский элемент
			$parent=$img->parent();
			//вытаскиваем его HTML-код
			$answer=$parent->innertext;
		}
		
		//освобождаем ресурсы
		$html->clear(); 
		unset($html);
		
		if ($answer=='') $answer='ERROR: GET DATA ERROR ['.$url.']';
		
		return $answer;
	}
?>

И создаем главный файл плагина с функцией обработки шорткода, который, будучи вставлен в пост отобразит наш опрос:

<?php

/*
Plugin Name: LJR-pollDisplay
Description: Display poll's from lj.rossia.org
Version: 0.0.1
Author: IDT & Tolik Punkoff
Author URI: http://tolik-punkoff.com/
License: any
 */

include ('getpoll.php');

function ljrpoll_shortcode($atts)
{
	//достаем ID опроса
	extract(shortcode_atts(array(
	      'id' => -1,
	), $atts));
	
	//Если id не задан, надо вывести сообщение об ошибке
	if ($id==-1)
	{
		$ans='Poll ID not set!';
	}
	else
	{
		$ans=GetPoll($id);
	}

	return $ans;
}

add_shortcode ('ljrpoll','ljrpoll_shortcode');

?>


Для того, чтобы вставить в свой блог на Wordpress опрос с LJ.ROSSIA.ORG, останется добавить в пост следующий шорткод:
[ljrpoll id="<poll_id>"]
Где <poll_id> идентификатор опроса, например 1307

Тестовый пост с отображенным опросом здесь:
http://tolik-punkoff.com/2016/07/26/opros-s-lj-rossia-org-otobrazhaemyj-v-wordpress/

Код плагина доступен на PasteBin:
getpoll.php
Основной файл плагина
Или можно скачать архив с плагином с mega.nz
Папку из архива надо поместить в директорию wp-content/plugins вашего сайта, после чего зайти в консоль на страницу плагинов (или обновить ее) и активировать плагин LJR-pollDisplay

Это репост заметки из моего блога на сайте http://tolik-punkoff.com
Оригинал заметки находится здесь: http://tolik-punkoff.com/2016/07/26/otobrazhenie-oprosov-iz-ljr-lzhr-tifaretnik-lj-rossia-org-i-vozmozhno-zhzh-livejournal-v-bloge-wordpress/

Tags: , ,
Comments
не по теме

скажи как мне..я когда бывал в финке..там цены были чуть меньше израильских..а израильские цены на порядок выше европы..как можно покупать молочку и в лаппенранте приезжая для этого специально из питера...стоило сделать жене шенген на год.

Re: не по теме

я хз какие цены и качество нонче в питерах, может и впрямь актуально, а может у нее куры денег не клюют.