mpalourdio/twitter-widget-bundle

Simple bundle to easily display twitter timelines widgets in twig views

0.2.0 2017-04-08 19:55 UTC

This package is not auto-updated.

Last update: 2024-04-13 13:30:58 UTC


README

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight PHP 7.0+ MIT Licensed

TwitterWidgetBundle

Twig extension to easily display twitter embedded timelines widgets in Symfony project. Based on this library : https://github.com/mpalourdio/TwitterWidgets

Requirements

PHP 7.0+ - Only Composer installation supported

Installation

Run the command below to install via Composer

composer require mpalourdio/twitter-widget-bundle

Add new TwitterWidgetBundle\TwitterWidgetBundle() to your AppKernel.php

Usage

    1. Create a timeline widget here : https://twitter.com/settings/widgets/new
    1. In the javascript generated code, get the URL and the data-widget-id (minimum information required)
    1. Finally, in a twig template, use as following:
{{ 
  tw({
         'dataWidgetId' : '1245687955000', => the id must be a string (quotes), because of long integer converted to float
         'href'         : 'https://twitter.com/NickName',
         'hrefText'     : 'Here type a title'
     },
     true/false
}}

All the following options are handled : https://dev.twitter.com/web/embedded-timelines#options

Their PHP equivalent as array keys to use in the twig function are :

'class'           => 'A css class, by default it will be twitter-timeline',
'href'            => 'The link to the timeline',
'hrefText'        => 'A title for your timeline to display',
'dataWidgetId'    => 'Your data widget ID : must be a string (!)',
'dataTheme'       => 'ex: dark',
'dataLinkColor'   => 'ex: #cc0000',
'width'           => 300 (integer),
'height'          => 400 (integer),
'dataChrome'      => 'noheader nofooter noborders noscrollbar transparent', => a string with options separated by a single space
'dataBorderColor' => 'border color used by the widget',
'language'        => 'The widget language detected from the page, based on the HTML lang attribute of your content. You can also set the HTML lang attribute on the embed code itself.',
'dataTweetLimit'  => 20,
'dataRelated'     => 'benward,endform',
'dataAriaPolite'  => 'polite or assertive',

You can give an instance of TwitterWidgets\Options\WidgetOptions instead of an array (or any implementation of TwitterWidgets\Timeline\WidgetOptionsInterface).

$options = new TwitterWidgets\Options\WidgetOptions();
$options->setDataWidgetId('1245687955000');
$options->setHref('https://twitter.com/NickName');
$options->setHrefText('Here type a title');

{{ tw(options) }}

The function second parameter is a boolean (true by default), that indicates if you must render the javascript code for your widget. If you have more that one widget on your page, use the OneTimeJs extension to only add once the javascript code, just before your </body>. This will avoid some overhead. See https://dev.twitter.com/web/javascript/loading

{% block javascripts %}
        <script>{{ twJs() }}</script>
{% endblock %}