Share links exist on almost every page in every project, creating the code for these share links over and over again can be a pain in the ass. 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 jorenvanhocht/laravel-share
If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php
// config/app.php
'providers' => [
Jorenvh\Share\Providers\ShareServiceProvider::class,
];
And optionally add the facade in config/app.php
// config/app.php
'aliases' => [
'Share' => Jorenvh\Share\ShareFacade::class,
];
Publish the package config & resource files.
php artisan vendor:publish --provider="Jorenvh\Share\Providers\ShareServiceProvider"
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/
and laravel-share.php
in your resources/lang/vendor/en/
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="https://github.com/jorenvh/laravel-share/raw/master/{{ asset('js/share.js') }}"></script>
Share::page('http://jorenvanhocht.be')->facebook();
Share::page('http://jorenvanhocht.be', 'Your share text can be placed here')->twitter();
Share::page('http://jorenvanhocht.be', 'Your share text can be placed here')->reddit();
Share::page('http://jorenvanhocht.be', 'Share title')->linkedin('Extra linkedin summary can be passed here')
Share::page('http://jorenvanhocht.be')->whatsapp()
Share::page('http://jorenvanhocht.be', 'Your share text can be placed here')->telegram();
Instead of manually passing an url, you can opt to use the currentPage
function.
Share::currentPage()->facebook();
If want multiple share links for (multiple) providers you can just chain the methods like this.
Share::page('http://jorenvanhocht.be', 'Share title')
->facebook()
->twitter()
->linkedin('Extra linkedin summary can be passed here')
->whatsapp();
This will generate the following html
<div id="social-links">
<ul>
<li><a href="https://www.facebook.com/sharer/sharer.php?u=http://jorenvanhocht.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://jorenvanhocht.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://jorenvanhocht.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="https://wa.me/?text=http://jorenvanhocht.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
Share::page('http://jorenvanhocht.be', 'Share title')
->facebook()
->getRawLinks();
Outputs:
https://www.facebook.com/sharer/sharer.php?u=http://jorenvanhocht.be
Multiple links
Share::page('http://jorenvanhocht.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://jorenvanhocht.be",
"twitter" => "https://twitter.com/intent/tweet?text=Share+title&url=http://jorenvanhocht.be",
"linkedin" => "http://www.linkedin.com/shareArticle?mini=true&url=http://jorenvanhocht.be&title=Share+title&summary=Extra+linkedin+summary+can+be+passed+here",
"whatsapp" => "https://wa.me/?text=http://jorenvanhocht.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.
Share::page('http://jorenvanhocht.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://jorenvanhocht.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.
Share::page('http://jorenvanhocht.be', null, [], '<ul>', '</ul>')
->facebook();
This will output the following html.
<ul>
<li><a href="https://www.facebook.com/sharer/sharer.php?u=http://jorenvanhocht.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 jorenvh@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.