mirror of
https://github.com/archtechx/laravel-seo.git
synced 2025-12-12 09:54:03 +00:00
wip
This commit is contained in:
parent
157318e61b
commit
789e3688a0
5 changed files with 50 additions and 1 deletions
2
assets/views/components/extensions/favicon.blade.php
Normal file
2
assets/views/components/extensions/favicon.blade.php
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link rel="icon" type="image/png" href="{{ asset('favicon.png') }}">
|
||||
|
|
@ -25,7 +25,8 @@
|
|||
"require": {
|
||||
"php": "^8.0",
|
||||
"illuminate/support": "^8.24",
|
||||
"imliam/laravel-blade-helper": "^1.0"
|
||||
"imliam/laravel-blade-helper": "^1.0",
|
||||
"intervention/image": "^2.7"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": "^6.9",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,9 @@ declare(strict_types=1);
|
|||
namespace ArchTech\SEO;
|
||||
|
||||
use Closure;
|
||||
use Exception;
|
||||
use Illuminate\Support\Str;
|
||||
use Intervention\Image\ImageManager;
|
||||
|
||||
/**
|
||||
* @method $this title(string $title = null, ...$args) Set the title.
|
||||
|
|
@ -176,6 +178,36 @@ class SEOManager
|
|||
return $this->set('image', "https://s.useflipp.com/{$template}.png?s={$signature}&v={$query}");
|
||||
}
|
||||
|
||||
/** Enable favicon extension. */
|
||||
public function favicon(string $path): static
|
||||
{
|
||||
$this->extensions['favicon'] = true;
|
||||
|
||||
$doesntHaveFavicon = ! file_exists(public_path('favicon.ico'));
|
||||
$sourceIconDoesntExist = ! file_exists($path);
|
||||
|
||||
if ($sourceIconDoesntExist) {
|
||||
throw new Exception("Given icon path `{$path}` does not exist.");
|
||||
}
|
||||
|
||||
if ($doesntHaveFavicon) {
|
||||
// GD driver doesn't support .ico, that's why we use ImageMagick.
|
||||
$manager = new ImageManager(['driver' => 'imagick']);
|
||||
|
||||
$manager
|
||||
->make($path)
|
||||
->resize(32, 32)
|
||||
->save(public_path('favicon.ico'));
|
||||
|
||||
$manager
|
||||
->make($path)
|
||||
->resize(32, 32)
|
||||
->save(public_path('favicon.png'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/** Append canonical URL tags to the document head. */
|
||||
public function withUrl(): static
|
||||
{
|
||||
|
|
|
|||
14
tests/Pest/FaviconTest.php
Normal file
14
tests/Pest/FaviconTest.php
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
use function PHPUnit\Framework\assertFileExists;
|
||||
|
||||
test('it should throw an exception if the given source icon doesn\'t exist', function() {
|
||||
seo()->favicon('i-dont-exist.png');
|
||||
})->throws(Exception::class, 'Given icon path `i-dont-exist.png` does not exist.');
|
||||
|
||||
test('it should generate two favicons', function() {
|
||||
seo()->favicon(__DIR__ . '/../stubs/logo.png');
|
||||
|
||||
assertFileExists(public_path('favicon.ico'));
|
||||
assertFileExists(public_path('favicon.png'));
|
||||
});
|
||||
BIN
tests/stubs/logo.png
Normal file
BIN
tests/stubs/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
Loading…
Add table
Add a link
Reference in a new issue