Кросспостинг в твиттер — различия между версиями
Davidov (обсуждение | вклад) (Новая страница: «Twitter является очень удобной системой в которой можно постить сообщения о новых новостях н…») |
(нет различий)
|
Версия 19:22, 7 июля 2012
Twitter является очень удобной системой в которой можно постить сообщения о новых новостях на сайте. Напишем кастомную функцию, которая будет производить автоматическое размещение сообщения в twitter при добавлении новости. Для этого в файле ~/classes/modules/news/custom_events.php разместим вызов нашей будущей функции по событию systemCreateElement:
<?php
new umiEventListener('systemCreateElement', 'news', 'twit');
?>
Теперь, необходимо зарегистрировать наш сайт в twitter следующим образом: Зайти на dev.twitter.com под своим логином и паролем, затем нажать на ссылку "Register an app". Заполнить форму. Выбрать в пункте настроек "Default Access type" опцию "Read and Write". Нажать кнопку "Register Application". Теперь нужно 4 ключа для работы данного решения. Открыв своё созданное приложение в twitter нужно получить "Consumer Key" и "Consumer Secret". Потом нажать ссылку "My access token" и скопировать: "Access Token (oauth_token)" и "Access Token Secret (oauth_token_secret)". После этого, нужно скачать 2 файла перейдя по ссылке. Нас интересуют два файла, а именно twitteroauth/twitteroauth.php и twitteroauth/OAuth.php. Помещаем их в директорию ~/classes/modules/news/ В файле ~/classes/modules/news/__custom_adm.php после строки //TODO: Write here your own macroses (admin mode) пишем следующий код:
<?php
public function twit(iUmiEventPoint $oEventPoint){
if ($oEventPoint->getMode() === "after"){
$object = $oEventPoint->getRef("element");
if($object->getValue('twitter')==1){
$id=$object->id;
$title=$object->getValue('h1');
$hierarchy = umiHierarchy::getInstance();
$page=$hierarchy->getElement($id);
$domainId=$page->getDomainId();
$collection = domainsCollection::getInstance();
$domain= $collection->getDomain($domainId);
$host=$domain->getHost();
$url='http://'.$host.'/~/'.$id;
$lngth=strlen($url);
$text=substr($title,0,137-$lngth);
$result= $text."[^]".$url;
require_once 'twitteroauth.php';
define("CONSUMER_KEY", "<Вставить Consumer Key>");
define("CONSUMER_SECRET", "<Вставить Consumer Secret>");
define("OAUTH_TOKEN", "<Вставить Access Token (oauth_token)>");
define("OAUTH_SECRET", "<Вставить Access Token Secret (oauth_token_secret)>");
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
$content = $connection->get('account/verify_credentials');
$connection->post('statuses/update', array('status' => $result));
}
return true;
}
}
?>
В типе данных "Новость" добавляем поле типа "Кнопк-флажок" с идентификатором twitter. Осталось только добавить запись о функции в ~/classes/modules/news/permissions.custom.php и можно использовать описанное решение.