Laravel Share
, (*1)
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., (*2)
Available services
- Facebook
- Twitter
- Linkedin
- WhatsApp
- Reddit
- Telegram
Installation
You can install the package via composer:, (*3)
``` bash
composer require jorenvanhocht/laravel-share, (*4)
If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php
```php
// config/app.php
'providers' => [
Jorenvh\Share\Providers\ShareServiceProvider::class,
];
And optionally add the facade in config/app.php, (*5)
// config/app.php
'aliases' => [
'Share' => Jorenvh\Share\ShareFacade::class,
];
Publish the package config & resource files., (*6)
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, (*7)
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., (*8)
Fontawesome
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., (*9)
Laravel share supports Font Awesome v5. For Font Awsome 4 support use version 3 of this package., (*10)
Javascript
Load jquery.min.js & share.js by adding the following lines to your template files., (*11)
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>
<script src="{{ asset('js/share.js') }}"></script>
Usage
Creating one share link
Facebook
``` php
Share::page('http://jorenvanhocht.be')->facebook();, (*12)
#### Twitter
``` php
Share::page('http://jorenvanhocht.be', 'Your share text can be placed here')->twitter();
Reddit
``` php
Share::page('http://jorenvanhocht.be', 'Your share text can be placed here')->reddit();, (*13)
#### Linkedin
``` php
Share::page('http://jorenvanhocht.be', 'Share title')->linkedin('Extra linkedin summary can be passed here')
Whatsapp
``` php
Share::page('http://jorenvanhocht.be')->whatsapp(), (*14)
#### Telegram
``` php
Share::page('http://jorenvanhocht.be', 'Your share text can be placed here')->telegram();
Sharing the current url
Instead of manually passing an url, you can opt to use the currentPage
function., (*15)
Share::currentPage()->facebook();
Creating multiple share Links
If want multiple share links for (multiple) providers you can just chain the methods like this., (*16)
Share::page('http://jorenvanhocht.be', 'Share title')
->facebook()
->twitter()
->linkedin('Extra linkedin summary can be passed here')
->whatsapp();
This will generate the following html, (*17)
<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>
Getting the raw links
In some cases you may only need the raw links without any html, you can get these by calling the getRawLinks
method., (*18)
A single link, (*19)
Share::page('http://jorenvanhocht.be', 'Share title')
->facebook()
->getRawLinks();
Outputs:, (*20)
https://www.facebook.com/sharer/sharer.php?u=http://jorenvanhocht.be
Multiple links, (*21)
Share::page('http://jorenvanhocht.be', 'Share title')
->facebook()
->twitter()
->linkedin('Extra linkedin summary can be passed here')
->whatsapp()
->getRawLinks();
Outputs:, (*22)
[
"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",
]
Optional parameters
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., (*23)
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, (*24)
<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>
Custom wrapping
By default social links will be wrapped in the following html, (*25)
<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., (*26)
Share::page('http://jorenvanhocht.be', null, [], '<ul>', '</ul>')
->facebook();
This will output the following html., (*27)
<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>
Changelog
Please see CHANGELOG for more information what has changed recently., (*28)
Testing
bash
$ composer test
, (*29)
Contributing
Please see CONTRIBUTING for details., (*30)
Security
If you discover any security related issues, please email jorenvh@gmail.com instead of using the issue tracker., (*31)
Credits
License
The MIT License (MIT). Please see License File for more information., (*32)