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": {
|
"require": {
|
||||||
"php": "^8.0",
|
"php": "^8.0",
|
||||||
"illuminate/support": "^8.24",
|
"illuminate/support": "^8.24",
|
||||||
"imliam/laravel-blade-helper": "^1.0"
|
"imliam/laravel-blade-helper": "^1.0",
|
||||||
|
"intervention/image": "^2.7"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"orchestra/testbench": "^6.9",
|
"orchestra/testbench": "^6.9",
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ declare(strict_types=1);
|
||||||
namespace ArchTech\SEO;
|
namespace ArchTech\SEO;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
|
use Exception;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
use Intervention\Image\ImageManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @method $this title(string $title = null, ...$args) Set the title.
|
* @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}");
|
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. */
|
/** Append canonical URL tags to the document head. */
|
||||||
public function withUrl(): static
|
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