Downloads
Stars
Version
Share links exist on almost every page in every project, creating the code for these share links over and over again can be a difficult at times. With Laravel Share you can generate these links in just seconds in a way tailored for Laravel.
You can install the package via composer:
composer require faribe/social-share
If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php
// config/app.php
'providers' => [
Faribe\SocialShare\SocialShareServiceProvider::class,
];
And optionally add the facade in config/app.php
// config/app.php
'aliases' => [
'SocialShare' => Faribe\SocialShare\SocialShareFacade::class,
];
Publish the package config & resource files.
php artisan vendor:publish --provider="Faribe\SocialShare\SocialShareServiceProvider"
You might need to republish the config file when updating to a newer version of Laravel Share
This will publish the laravel-share.php
config file to your config folder, share.js
in public/js/
folder.
Since this package relies on Fontawesome, you will have to require it's css, js & fonts in your app. You can do that by requesting a embed code via their website or by installing it locally in your project.
Laravel share supports Font Awesome v5. For Font Awsome 4 support use version 3 of this package.
Load jquery.min.js & share.js by adding the following lines to your template files.
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>
<script src="{{ asset('js/social-share.js') }}"></script>
SocialShare::page('http://faribe.be')->facebook();
SocialShare::page('http://faribe.be', 'Your share text can be placed here')->twitter();
SocialShare::page('http://faribe.be', 'Your share text can be placed here')->reddit();
SocialShare::page('http://faribe.be', 'Share title')->linkedin('Extra linkedin summary can be passed here')
SocialShare::page('http://faribe.be')->whatsapp()
SocialShare::page('http://faribe.be', 'Your share text can be placed here')->telegram();
SocialShare::page('http://faribe.be', 'Your share text can be placed here')->viber();
Instead of manually passing an url, you can opt to use the currentPage
function.
SocialShare::currentPage()->facebook();
If want multiple share links for (multiple) providers you can just chain the methods like this.
SocialShare::page('http://faribe.be', 'Share title')
->facebook()
->twitter()
->linkedin('Extra linkedin summary can be passed here')
->viber()
->whatsapp();
This will generate the following html
<div id="social-links">
<ul>
<li><a href="https://www.facebook.com/sharer/sharer.php?u=http://faribe.be" class="social-button " id=""><span class="fa fa-facebook-official"></span></a></li>
<li><a href="https://twitter.com/intent/tweet?text=my share text&url=http://faribe.be" class="social-button " id=""><span class="fa fa-twitter"></span></a></li>
<li><a href="http://www.linkedin.com/shareArticle?mini=true&url=http://faribe.be&title=my share text&summary=dit is de linkedin summary" class="social-button " id=""><span class="fa fa-linkedin"></span></a></li>
<li><a href="viber://forward?text=http://faribe.be" class="social-button " id=""><span class="fa fa-viber"></span></a></li>
<li><a href="https://wa.me/?text=http://faribe.be" class="social-button " id=""><span class="fa fa-whatsapp"></span></a></li>
</ul>
</div>
In some cases you may only need the raw links without any html, you can get these by calling the getRawLinks
method.
A single link
SocialShare::page('http://faribe.be', 'Share title')
->facebook()
->getRawLinks();
Outputs:
https://www.facebook.com/sharer/sharer.php?u=http://faribe.be
Multiple links
SocialShare::page('http://faribe.be', 'Share title')
->facebook()
->twitter()
->linkedin('Extra linkedin summary can be passed here')
->whatsapp()
->getRawLinks();
Outputs:
[
"facebook" => "https://www.facebook.com/sharer/sharer.php?u=http://faribe.be",
"twitter" => "https://twitter.com/intent/tweet?text=Share+title&url=http://faribe.be",
"linkedin" => "http://www.linkedin.com/shareArticle?mini=true&url=http://faribe.be&title=Share+title&summary=Extra+linkedin+summary+can+be+passed+here",
"whatsapp" => "https://wa.me/?text=http://faribe.be",
]
You can simply add extra class(es), id('s), title(s) or relationship(s) by passing an array as the third parameter on the page method.
SocialShare::page('http://faribe.be', null, ['class' => 'my-class', 'id' => 'my-id', 'title' => 'my-title', 'rel' => 'nofollow noopener noreferrer'])
->facebook();
Which will result in the following html
<div id="social-links">
<ul>
<li><a href="https://www.facebook.com/sharer/sharer.php?u=http://faribe.be" class="social-button my-class" id="my-id" rel="nofollow noopener noreferrer"><span class="fa fa-facebook-official"></span></a></li>
</ul>
</div>
By default social links will be wrapped in the following html
<div id="social-links">
<ul>
<!-- social links will be added here -->
</ul>
</div>
This can be customised by passing the prefix & suffix as a parameter.
SocialShare::page('http://faribe.be', null, [], '<ul>', '</ul>')
->facebook();
This will output the following html.
<ul>
<li><a href="https://www.facebook.com/sharer/sharer.php?u=http://faribe.be" class="social-button " id=""><span class="fa fa-facebook-official"></span></a></li>
</ul>
Please see CHANGELOG for more information what has changed recently.
$ composer test
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.