Nieuws koppelen aan Twitter via UDT en Events [update]

Een board om T&T's te plaatsen m.b.t. CMSMS, PHP of Smarty

Moderator: velden

pasmaskas
Power Poster
Power Poster
Posts: 509
Joined: Tue Nov 29, 2011 10:42 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by pasmaskas »

Hoe laat ik pretty urls werken als het cms in een submap staat?En welke Gebeurtenissen Beheer is dan voor nieuws update waar ik hem moet toevoegen?

groetjes pascal
pasmaskas
Power Poster
Power Poster
Posts: 509
Joined: Tue Nov 29, 2011 10:42 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by pasmaskas »

Oke pretty urls werkt nu aleen nogsteeds het zelfde probleem hij tweet hem niet. als ik ee bericht aanmaak in de nieuws module en versuur word het wit en verder nix pas als ik in het menu weer naar de nieuws module ga staat het bericht er wel aleen de tweet niet

gr pascal
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Gregor »

Wil me een account en link per pm sturen, dan wil ik wel met je meekijken.

Grtz. Gregor
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Gregor »

Solved :)

Wat heb ik gedaan:
- de eerste regel in de UDT eruit gehaald
- de functie voor het sturen van een tweet stond onderaan. Die heb ik boven het 'programadeel' gezet (zie ook eerdere post van mij)
- de boolean 'debug' op false gezet; anders komt er geen tweet uit.

Grtz., Gregor
pasmaskas
Power Poster
Power Poster
Posts: 509
Joined: Tue Nov 29, 2011 10:42 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by pasmaskas »

bedankt voor je hulp Gregor.

Als ik deze Gebruikergedefinieerde tags op een andere website plaats en toevegt aan de NewsArticleAdded dan moet hij gewoon werken?

En in loggen op twitter natuurlijk

Gr pascal
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Gregor »

Ja, en pretty urls aanzet ;)
Oja, in je events heb ik nog staan dat bij het wijzigen van een artikel ook een tweet wordt verstuurd. Zie NewsEditArticle. Deze kun je eventueel weghalen.

Succes, Gregor
pasmaskas
Power Poster
Power Poster
Posts: 509
Joined: Tue Nov 29, 2011 10:42 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by pasmaskas »

Thnx Gregor,

Nog 1 vraagje als je een bericht als concept aan maakt tweet hij deze dan ook?

gr pascal
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Gregor »

Nee, daar wordt in de code op gecontroleerd.

Grtz. Gregor
Patmans
New Member
New Member
Posts: 2
Joined: Thu Mar 29, 2012 8:21 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Patmans »

Hey Gregor,

kan je die code met aanpassingen voor pasmaskas misschien hier delen of iets specifieker aangeven wat je hebt aangepast?

Ik zit met exact hetzelfde probleem, alleen voer jouw aanpassingen denk ik niet correct door ;)
Patmans
New Member
New Member
Posts: 2
Joined: Thu Mar 29, 2012 8:21 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Patmans »

iemand die hiermee kan helpen? Want ik kom er echt niet uit.
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by Gregor »

Patmans wrote:iemand die hiermee kan helpen? Want ik kom er echt niet uit.
Kan je beschrijven waar je niet uitkomt? Wil je het in CGBlog gebruiken?

Grtz., Gregor
pasmaskas
Power Poster
Power Poster
Posts: 509
Joined: Tue Nov 29, 2011 10:42 am

Re: Nieuws koppelen aan Twitter via UDT en Events [update]

Post by pasmaskas »

Hier de code die Gregor voor mij heeft aangepast:

Code: Select all

/* if(!is_object(cmsms())) exit; */

/******************************************************************************
* about
******************************************************************************/

/*

This UDT can be used to automatically post a Twitter message when a news article is added.
The functionality is based on the Twitter and News module.

- First you need to install and setup the News and Twitter module.
- After you need to create a UDT with this code, for example you can call it: 'news_twitter_update_status'
- At last you need to connect this UDT to the 'NewsArticleAdded' event.
   This can be done via Extensions -> Event Manager.

! Currently this UDT only works when pretty urls are enabled.
It seems that the bit.ly url shortner ($twitter->shortenUrls($link)) has some problems with unfriendly urls.
Querystring parameters &var=1 are converted to &=1 which will break the link.

==
UPDATE: 16 Dec 2011
==

- This UDT is now compatible with cmsms 1.10
- Works with and without pretty urls
- Added the ability to shortenurl's bit.ly problem seems solved
- Added support for the news_url field, if you use these it's best to turnshortenurl's off

==
UPDATE: 4 Jan 2011
==

- Added the $hashtags configuration option


config:

- specify: $detailpage (page_id) of the news detail view if left blank ('') $detailpage will not be used in the url
- specify: $shortenurl (true|false) will use the bit.ly url shortner or not.
- specify: $hashtags (array) to modify the $params['title'] into a title with #hashtags, if $hashtags = array(); no replacement will take place
             : for example: $hashtags = array('cup', 'foo', 'bar');
             : "We have won the cup I repeat worldcup, well that is not my cupoftea" -> "We have won the #cup I repeat #worldcup that is not my #cupoftea"
*/

/******************************************************************************
* globals / objects
******************************************************************************/

$modops = cmsms()->GetModuleOperations();
$twitter = $modops->get_module_instance('Twitter');
$news = $modops->get_module_instance('News');

/******************************************************************************
* config
******************************************************************************/

/* debug (bool) */
$debug = false;
/*s stond op true

/* custom (string) */
$detailpage = '72';

/* shortenurl (bool) */
$shortenurl = true;

/* $hashtags (array) */
$hashtags = array('cup', 'foo', 'bar');

/******************************************************************************
* variables
******************************************************************************/

/* news article related  (string) */
$news_id = $params['news_id'];
$title = $params['title'];

/* added to link (array) */
$link['articleid']  = $params['news_id'];

/*********************************************************************************
* subroutines
*********************************************************************************/

/**
*  fetch the $news_url by $news_id
*
* @param string $news_id
* @return string $news_url
*
*/

function fetch_news_url($news_id) {
   
   $db = cmsms()->GetDb();

   $query = "SELECT news_url
                  FROM ". cms_db_prefix(). "module_news
                  WHERE news_id = ?";

   $news_url = $db->GetOne($query, array($news_id));

   return $news_url;

}


/******************************************************************************
* program
******************************************************************************/

$aliased_title = munge_string_to_url($title);
$aliased_title = strtolower($aliased_title);
$news_url = fetch_news_url($news_id);

if ($news_url != '') {
   $prettyurl = $news_url;
} else {
   if ($detailpage) {
      $prettyurl = 'news/' . $news_id.'/'.$detailpage.'/'.$aliased_title;
   } else {
      $prettyurl = 'news/' . $news_id.'/'.$aliased_title;   
   }
}

$link = $news->CreateLink($news_id, 'detail', $detailpage, '', $link,'', true, false, '', true, $prettyurl);   

// title to hashed_title

      $hashed_title = $title;
      
      if (count($hashtags)) {
      
         $hashtags_pattern = implode('|', $hashtags);
         $words = explode(' ', $title);
         $seen = array();
         
         foreach ($words as $key => $word) {
         
            if (preg_match("/$hashtags_pattern/i", $word) ) {
         
               $stripped_word = preg_replace('/[^A-Za-z-]/','', $word);
         
               if (strlen($word) == strlen($stripped_word)) {
                  if (! in_array($word, $seen) ) {
                     $seen[] = $word;
                     $hashed_title = preg_replace('~\b' . preg_quote($word, '~') . '\b~', '#$0', $hashed_title);
                  }
               }
         
            }
         
         }
      
      }

// strlen check of hashed_title 
// math(140 - 22) = 118 ([max_twitter_length] -  [: space $shortlink])

if (strlen($hashed_title) <= 118) {
   $title = $hashed_title;
}

// shortenurl

if ($shortenurl) {
   $shortlink = $twitter->shortenUrls($link);
   $message = $title. ': '. $shortlink;
} else {
   $message = $title. ': '. $link;   
}

// print debug information or  Tweet

if ($debug) {
   print "<pre>twitter: $message status: $params[status] link: $link title: $title prettyurl: $prettyurl \n</pre>";
   exit;
} else {
   if ($params['status'] == 'published') {
      $twitter->updateStatus($message, false);
   }
}
Post Reply

Return to “Tips en Trucs”