Тема: Социальная закладка ЖЖ (LiveJournal) - решение проблемы с кодировкой

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

Я хотел сделать кнопку "Запостить в ЖЖ". Сам скрипт для этого очень простой:

<a target="_blank" rel="nofollow" href="http://www.livejournal.com/update.bml?event=<?=$tpl['post']['short-story']; ?>&subject=<?=$tpl['post']['title']; ?>" ><img src="/images/livejournal.png" title="Добавить в свой блог на livejournal.com"></a>

Но проблема в том, что ЖЖ поддерживает только UTF-8.

Решил через конвертацию в отдельном шаблоне.
Создал шаблон uft с full.tpl

<?  
$story=iconv("WINDOWS-1251","UTF-8", $tpl['post']['short-story']);
$title=iconv("WINDOWS-1251","UTF-8", $tpl['post']['title']);
?>

В дефолтный шаблон написал:

<a target="_blank" rel="nofollow" href="<?=$tpl['post']['link']['home/utf.php/post']; ?>"><img src="/images/livejournal.png" title="Добавить в свой блог на livejournal.com"></a>

В url.ini в конце дописал:

[home/utf.php]
post = "?id={id}"

Создал файл utf.php с кодом:

<? include 'news/head.php'; ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>



<body>



<?
                    $number = 3;
                    $sort = array('date', 'DESC');
                    $template = 'utf8';
                    include rootpath.'/show_news.php';
    
    $URL = "http://www.livejournal.com/update.bml?subject=$title&event=$story";

header ("Location: $URL");    
?>



</body>
</html>

Re: Социальная закладка ЖЖ (LiveJournal) - решение проблемы с кодировкой

Поскольку

$template = 'utf8';

, то и шаблон нужно создавать с этим именем, так ведь?

Re: Социальная закладка ЖЖ (LiveJournal) - решение проблемы с кодировкой

zakharov пишет:

Поскольку

$template = 'utf8';

, то и шаблон нужно создавать с этим именем, так ведь?

Да-да... Конечно. Не забывайте, что регистр букв в названии шаблона должен быть таким же.

--------

Кстати, если подумать, то моё решение весьма кривое и требует улучшений...

Отредактировано cmd (09 Aug 2010 15:00:34)

Re: Социальная закладка ЖЖ (LiveJournal) - решение проблемы с кодировкой

cmd, много времени прошло с момента публикации вашего поста, но я только что столкнулся с экспортом в ЖЖ и сразу увидел пару проблем в вашем скрипте:

1. Скрипт с переменной $title не работает, то есть subject= передаёт пустым.

Победил: Поменял во всех упоминаниях $title на $my_title, а заодно $story на $my_story, и всё заработало.

2. Параметр переменной &event=$story в командной строке имеет ограничение по длине. Как только превышает где-то 450 символов, сразу перестаёт пересылать на страницу с livejournal, а саму страницу utf.php выводит с ошибкой.

Не сталкивались? Может быть проблема в IE?

Кстати, а зачем вам код:

$number = 3;

, если вы открываете новость с определённым id= (то есть полную)? Неужели сразу 3 новости постятся? У меня, как ни старался, только одна.

Re: Социальная закладка ЖЖ (LiveJournal) - решение проблемы с кодировкой

Кстати, а зачем вам код:
$number = 3;
, если вы открываете новость с определённым id= (то есть полную)? Неужели сразу 3 новости постятся? У меня, как ни старался, только одна.

Нет, случайно проскочила)

2. Параметр переменной &event=$story в командной строке имеет ограничение по длине. Как только превышает где-то 450 символов, сразу перестаёт пересылать на страницу с livejournal, а саму страницу utf.php выводит с ошибкой.

Ну, ясно, что максимальная длинна url небольшая. В IE ~2000 знаков. Учитывая, что одна кириллическая буква в url может состоять из нескольких символов, то вполне возможно на выходе получиться ~400 знаков. Тут только "резать" и ставить ссыль на сайт "читайте дальше".

Подпись: Капитан О.