jean-luc Posted March 9, 2015 Share Posted March 9, 2015 About handling the display of images from a twitter feed, I did this today by adding code inside MarkupTwitterFeed.module. I post it here in case it could help other pw users having the same needs. // To be added in public function renderItem, before: $out = $options['listItemOpen']; if (isset($item['entities']['media'])) { $mediaUrlField = wire('config')->https ? 'media_url_https' : 'media_url'; foreach($item['entities']['media'] as $m) { if($options['listItemPhoto']) { $photoHtml = str_replace(array('{src}', '{title}'), array(wire('sanitizer')->entities($m[$mediaUrlField]), wire('sanitizer')->entities($m['display_url'])), $options['listItemPhoto']); $text = preg_replace('!' . preg_quote($m['url'], '!') . '(\b|$)!i', $photoHtml, $text); } else { // Hide the media reference in the text $text = preg_replace('!' . preg_quote($m['url'], '!') . '(\b|$)!i', '', $text); } } } where $options['listItemPhoto'] contains the html for a Twitter photo. For example, if you simply want to display the image, you can set it to: $options['listItemPhoto'] = "<img src='{src}' title='{title}'>"; This will be rendered like in this screenshot: 4 Link to comment Share on other sites More sharing options...
rgaikema Posted April 21, 2015 Share Posted April 21, 2015 Doesn't work here either. Also @ Mentions and # Hashtags. Can anybody help me to get the hashtags and mentions to work? They're shown, but not 'linked' as mentioned before. Any help would be appreciated! Link to comment Share on other sites More sharing options...
cb2004 Posted May 17, 2015 Share Posted May 17, 2015 No links for me either in Tweets. I will post the issue to Git. Link to comment Share on other sites More sharing options...
cb2004 Posted May 17, 2015 Share Posted May 17, 2015 Had some time to look at the module and it looks like links were not in the original plan. Would require some editing of the module to allow links, especially as entities are converted. Will look at this when i have some time. Link to comment Share on other sites More sharing options...
thmsnhl Posted September 5, 2015 Share Posted September 5, 2015 Has anyone solved the problem with links, mentions and hashtags yet? Link to comment Share on other sites More sharing options...
elabx Posted September 6, 2015 Share Posted September 6, 2015 I tested adding this function to the module: <?php function convert_twitter_links($tweet) { //converts URLs to active links $tweet = preg_replace('/((http)+(s)?:\/\/[^<>\s]+)/i', '<a href="$0" target="_blank">$0</a>', $tweet ); //converts mentions (e.g. @stathisg) to active links, pointing to the user's twitter profile $tweet = preg_replace('/[@]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/$1" target="_blank">$1</a>', $tweet ); //converts hashtags (e.g. #test) to active links, pointing to a twitter's search URL $tweet = preg_replace('/[#]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/search?q=%23$1" target="_blank">$0</a>', $tweet ); return $tweet; } and then called it like this: $text = $this->convert_twitter_links($text); Though, I had to put this line just below this line (this is within renderItem() definition ): $text = wire('sanitizer')->entities($text); I will guess I must be doing something wrong here not sanitizing this string before rendering it, but I can't really tell, I don't know much about this "entities" methods, so I will recommend taking this solution as unsafe or something like that until someone else gives a hand 1 Link to comment Share on other sites More sharing options...
Arcturus Posted October 22, 2015 Share Posted October 22, 2015 Here's a working code example that doesn't use render and implements elabx's function mentioned above: <ul> <?php $i = 0; $limit = 4; $t = $modules->get('MarkupTwitterFeed'); function convert_links($tweet) { $tweet = preg_replace('/((http)+(s)?:\/\/[^<>\s]+)/i', '<a href="$0" target="_blank">$0</a>', $tweet ); $tweet = preg_replace('/[@]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/$1" target="_blank">$1</a>', $tweet ); $tweet = preg_replace('/[#]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/search?q=%23$1" target="_blank">$0</a>', $tweet ); return $tweet; } foreach ($t as $tweet){ if ($i < $limit){ $text = convert_links($tweet['text']); $timestamp = date('F j g:i a', strtotime($tweet['created_at'])); echo '<li>'.$text.'<br><small>'.$timestamp.'</small></li>'; } $i++; } ?> </ul> 1 Link to comment Share on other sites More sharing options...
Arcturus Posted October 22, 2015 Share Posted October 22, 2015 A variant of the IF statement section from the above example that checks whether a Tweet is a retweet, and displays the appropriate author information. if ($i < $limit){ $text = convert_links($tweet['text']); $timestamp = date('F j g:i a', strtotime($tweet['created_at'])); echo '<li>'; if ($tweet['retweeted']){ $author = $tweet['retweeted_status']['user']['name']; // Other Person $handle = $tweet['retweeted_status']['user']['screen_name']; // @otherPerson $text = substr($text, 3); // Removes 'RT ' from the beginning of the Tweet } else { $author = $tweet['user']['name']; // You $handle = $tweet['user']['screen_name']; // @you } echo $author.' @'.$handle.'<br>'.$text.'<br>'.$timestamp.'</li>'; } Note that the above requires the following change to MarkupTwitterFeed.module (line 138) to work : 'trim_user' => false, // include user details, because user details are useful 2 Link to comment Share on other sites More sharing options...
thmsnhl Posted December 6, 2015 Share Posted December 6, 2015 Thank you Acturus, got this code working now! But I'm experiencing another problem: I can't show more than 3 Tweets, even though I've set the limit in the module to 4... Link to comment Share on other sites More sharing options...
Tom. Posted January 31, 2016 Share Posted January 31, 2016 Thank you Acturus, got this code working now! But I'm experiencing another problem: I can't show more than 3 Tweets, even though I've set the limit in the module to 4... I'm also experiencing this in 3.0, I set the limit to 5 but it's showing 13. I guess it's ignoring the limit in 3.0? Link to comment Share on other sites More sharing options...
gebeer Posted April 22, 2016 Share Posted April 22, 2016 Hello, I installed this module on a 3.0.12 devns site despite the fact that it is officially not compatible (yet?). And it broke my backend theme which is a custom admin theme based on the default theme with only very slight changes to the theme header and the content width. I needed to manually delete my custom admin theme from the modules table in the DB to get a working backend again. Finally, I downgraded the site to 2.7.2 so I can use the twitter markup module. Site is still under development and I don't really need all the new features from devns branch. Has anyone else experienced problems with this module on 3.0.x? Link to comment Share on other sites More sharing options...
alexm Posted June 13, 2016 Share Posted June 13, 2016 I'm also experiencing this in 3.0, I set the limit to 5 but it's showing 13. I guess it's ignoring the limit in 3.0? @Tom. Yea I'm getting the same issue my side! Link to comment Share on other sites More sharing options...
benbyf Posted September 6, 2016 Share Posted September 6, 2016 probably a stupid question but can this module be used to search hastags instead of outputting profile tweets? Link to comment Share on other sites More sharing options...
flydev Posted September 7, 2016 Share Posted September 7, 2016 10 hours ago, benbyf said: probably a stupid question but can this module be used to search hastags instead of outputting profile tweets? actually, no. Link to comment Share on other sites More sharing options...
flydev Posted September 7, 2016 Share Posted September 7, 2016 @benbyf I forked the module and added the functionality, you can find the module at github: https://github.com/flydev-fr/MarkupTwitterFeed To search hashtag use it as the following : $options = array( 'searchQuery' => 'ProcessWire', 'limit' => 3 ); $t = $modules->get('MarkupTwitterFeed'); $out = $t->search($options); echo $out; The function search() act like render(). Thanks again for the suggestion (searching for hashtag). I think we can improve it a bit, let me know for any needs. 6 Link to comment Share on other sites More sharing options...
benbyf Posted September 12, 2016 Share Posted September 12, 2016 thanks @flydev works well! Link to comment Share on other sites More sharing options...
jean-luc Posted November 13, 2016 Share Posted November 13, 2016 Hello, If you use this module, you may be interested by my fork https://github.com/jlj/MarkupTwitterFeed, that adds the following features to the official MarkupTweeterFeed module: support of the recent Twitter extended tweet format (tweets longer than 140 chars); support of emoji characters in tweets; display of image in a tweet (only the first image is displayed in the curent version); display of video in a tweet (with a html5 video markup); for retweets, display of the original author and avatar in the tweet. Also, it allows a more flexible per-item rendering, as in the following example: $t = $modules->get('MarkupTwitterFeed'); $t->limit = 10; $renderOptions = array( 'showDate' => 'before, after', 'dateFormat' => __("M j, Y"), // Tweet block date format 'listItemOpen' => "\n\t<div class='tweet-item'>", 'listItemClose' => "</div>", 'listItemText' => "<i class='fa fa-twitter'></i> <span class='tweet-text'>{text}</span>", 'listItemDate' => " <div class='date'><i class='fa fa-calendar'></i> {date}</div>", 'listItemLink' => "<a rel='nofollow' href='{href}'>{url}</a>", 'videoAttributes' => "autoplay loop muted", 'preserveLineBreaks' => 'coalesce', ); foreach($t as $tweet) { echo $t->renderItem($tweet, $renderOptions); } Examples from my website: This module has been tested with pw 2.7.2 only, so I cannot guarantee the proper working with 3.0… Hope this will be useful for others here. 8 Link to comment Share on other sites More sharing options...
netcarver Posted November 13, 2016 Share Posted November 13, 2016 @jean-luc Nice. Any chance of issuing your updates as a pull request to the original repo? Link to comment Share on other sites More sharing options...
jean-luc Posted November 13, 2016 Share Posted November 13, 2016 22 minutes ago, netcarver said: @jean-luc Nice. Any chance of issuing your updates as a pull request to the original repo? Already done that (https://github.com/ryancramerdesign/MarkupTwitterFeed/pull/5), but the previous pull request I did for this same module in January 2015 has stayed unanswered, so I don't know if this one will be integrated… 2 Link to comment Share on other sites More sharing options...
elabx Posted March 8, 2017 Share Posted March 8, 2017 On 11/13/2016 at 10:16 AM, jean-luc said: Already done that (https://github.com/ryancramerdesign/MarkupTwitterFeed/pull/5), but the previous pull request I did for this same module in January 2015 has stayed unanswered, so I don't know if this one will be integrated… Thanks for this very useful fork! It would be rad if it integrated @flydev 's fork too for hashtag search! 3 Link to comment Share on other sites More sharing options...
erikvanberkum Posted April 22, 2017 Share Posted April 22, 2017 Jean Luc, I have installed your fork on Processwire 3.0.42 and get the following error: Parse error: syntax error, unexpected 'site' (T_STRING), expecting ',' or ')' File: .../modules/MarkupTwitterFeed/tmhOAuth/tmhOAuth.php:14 * 5: * An OAuth library written in PHP. 6: * The library supports file uploading using multipart/form as well as general 7: * REST requests. OAuth authentication is sent using an Authorization Header. 8: * 9: * @author themattharris 10: * @version 0.8.4 11: * 12: * 06 Aug 2014 13: */ 14: defined('\ProcessWire\wire("config")->paths->root . 'site/modules/MarkupTwitterFeed/tmhOAuth'') or define('\ProcessWire\wire("config")->paths->root . 'site/modules/MarkupTwitterFeed/tmhOAuth'', dirname(\ProcessWire\wire("config")->paths->root . 'site/modules/MarkupTwitterFeed/tmhOAuth/tmhOAuth.php')); 15: 16: class tmhOAuth { 17: const VERSION = '0.8.4'; 18: var $response = array(); Any ideas how to get around this? I upgrade your module over the one from Ryan. Thanks Link to comment Share on other sites More sharing options...
jean-luc Posted April 22, 2017 Share Posted April 22, 2017 3 hours ago, erikvanberkum said: I have installed your fork on Processwire 3.0.42 and get the following error: Parse error: syntax error, unexpected 'site' (T_STRING), expecting ',' or ')' File: .../modules/MarkupTwitterFeed/tmhOAuth/tmhOAuth.php:14 Any ideas how to get around this? I upgrade your module over the one from Ryan. 14: defined('\ProcessWire\wire("config")->paths->root . 'site/modules/MarkupTwitterFeed/tmhOAuth'') or define('\ProcessWire\wire("config")->paths->root . 'site/modules/MarkupTwitterFeed/tmhOAuth'', dirname(\ProcessWire\wire("config")->paths->root . 'site/modules/MarkupTwitterFeed/tmhOAuth/tmhOAuth.php')); Hi @erikvanberkum I have not tried the MarkupTwitterFeed module with Processwire 3, but I can tell what caused the error here: Actually the original tmhOAuth.php:14 is: defined('__DIR__') or define('__DIR__', dirname(__FILE__)); This code makes the (visibly wrong here) assumption that PHP magic constant __DIR__ is not expanded when placed between single quotes. Here, __DIR__ was replaced by its value (a PHP expression) at compile time, and the surrounding quotes around it cause a syntax error. To solve this, you can simply comment or remove line 14 in tmhOAuth.php. Doing so which should be perfectly safe because __DIR__ is defined (probably by processwire), and so the check is not needed. [Edit] __DIR__ is available since PHP 5.3.0, so with Processwire 3.x requiring PHP version 5.3.8 or higher, it is actually safe to delete line 14 of tmhOAuth.php. Hope this helps. Link to comment Share on other sites More sharing options...
erikvanberkum Posted April 23, 2017 Share Posted April 23, 2017 Jean Luc, Thank you for the prompt reply, commenting out line 14 did the trick, removed the error and the module is now fully functional in Processwire 3.0.42. Kind regards, Erik van Berkum 1 Link to comment Share on other sites More sharing options...
thibaultvdb Posted April 25, 2017 Share Posted April 25, 2017 Hi @ryan I've been implementing the module in a project and first of all, it's a really nice module! I have just 1 consideration, you have text for the most basic items (date, link, etc) but the text from the tweet is formatted without an HTML tag for example <p></p>. Maybe it is possible to implement this? Then it would be possible to style the text itself better. Link to comment Share on other sites More sharing options...
ridgedale Posted October 8, 2017 Share Posted October 8, 2017 Could anyone confirm whether or not they have this module working in PW3.0.62? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now