mirror of
https://github.com/archtechx/laravel-seo.git
synced 2025-12-12 01:44:03 +00:00
Add previewify prefix (#24)
* add required previewify prefix * Fix code style (php-cs-fixer) * only add prefix when not already available * Fix code style (php-cs-fixer) Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
This commit is contained in:
parent
cf8ec8d3ae
commit
a737879baf
3 changed files with 15 additions and 7 deletions
|
|
@ -253,6 +253,9 @@ The `previewify()` method also returns a signed URL to the image, which lets you
|
||||||
<img alt="@seo('title')" src="@seo('previewify', 'blog')">
|
<img alt="@seo('title')" src="@seo('previewify', 'blog')">
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> **Note**
|
||||||
|
> The `previewify:` prefix will be automatically prepended to all provided data keys.
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
### Service Provider
|
### Service Provider
|
||||||
|
|
|
||||||
|
|
@ -192,9 +192,14 @@ class SEOManager
|
||||||
|
|
||||||
if ($data === null) {
|
if ($data === null) {
|
||||||
$data = [
|
$data = [
|
||||||
'title' => $this->raw('title'),
|
'previewify:title' => $this->raw('title'),
|
||||||
'description' => $this->raw('description'),
|
'previewify:description' => $this->raw('description'),
|
||||||
];
|
];
|
||||||
|
} else {
|
||||||
|
$data = array_combine(
|
||||||
|
array_map(fn ($key) => str_starts_with($key, 'previewify:') ? $key : "previewify:{$key}", array_keys($data)),
|
||||||
|
$data,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = base64_encode(json_encode($data, JSON_THROW_ON_ERROR));
|
$query = base64_encode(json_encode($data, JSON_THROW_ON_ERROR));
|
||||||
|
|
|
||||||
|
|
@ -18,16 +18,16 @@ test('previewify makes a request to the template not the alias', function () {
|
||||||
|
|
||||||
test('previewify templates can be given data', function () {
|
test('previewify templates can be given data', function () {
|
||||||
seo()->previewify('blog', 1);
|
seo()->previewify('blog', 1);
|
||||||
expect(seo()->previewify('blog', ['title' => 'abc', 'excerpt' => 'def']))
|
expect(seo()->previewify('blog', ['title' => 'abc', 'previewify:excerpt' => 'def']))
|
||||||
->toContain('previewify.app/generate/templates/1')
|
->toContain('previewify.app/generate/templates/1')
|
||||||
->toContain(base64_encode(json_encode(['title' => 'abc', 'excerpt' => 'def'])));
|
->toContain(base64_encode(json_encode(['previewify:title' => 'abc', 'previewify:excerpt' => 'def'])));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('the previewify method returns a link to a signed url', function () {
|
test('the previewify method returns a link to a signed url', function () {
|
||||||
seo()->previewify('blog', 1);
|
seo()->previewify('blog', 1);
|
||||||
|
|
||||||
expect(seo()->previewify('blog', ['title' => 'abc']))
|
expect(seo()->previewify('blog', ['title' => 'abc']))
|
||||||
->toContain('?signature=' . hash_hmac('sha256', base64_encode(json_encode(['title' => 'abc'])), config('services.previewify.key')));
|
->toContain('?signature=' . hash_hmac('sha256', base64_encode(json_encode(['previewify:title' => 'abc'])), config('services.previewify.key')));
|
||||||
});
|
});
|
||||||
|
|
||||||
test("previewify templates use default data when they're not passed any data explicitly", function () {
|
test("previewify templates use default data when they're not passed any data explicitly", function () {
|
||||||
|
|
@ -37,7 +37,7 @@ test("previewify templates use default data when they're not passed any data exp
|
||||||
|
|
||||||
expect(seo()->previewify('blog'))
|
expect(seo()->previewify('blog'))
|
||||||
->toContain('previewify.app/generate/templates/1')
|
->toContain('previewify.app/generate/templates/1')
|
||||||
->toContain(base64_encode(json_encode(['title' => 'foo', 'description' => 'bar'])));
|
->toContain(base64_encode(json_encode(['previewify:title' => 'foo', 'previewify:description' => 'bar'])));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('previewify images are used as the cover images', function () {
|
test('previewify images are used as the cover images', function () {
|
||||||
|
|
@ -66,7 +66,7 @@ test('previewify uses the raw title and description', function () {
|
||||||
|
|
||||||
expect(seo()->previewify('blog'))
|
expect(seo()->previewify('blog'))
|
||||||
->toContain('previewify.app/generate/templates/1')
|
->toContain('previewify.app/generate/templates/1')
|
||||||
->toContain(base64_encode(json_encode(['title' => 'foo', 'description' => 'bar'])));
|
->toContain(base64_encode(json_encode(['previewify:title' => 'foo', 'previewify:description' => 'bar'])));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('the @seo helper can be used for setting a previewify image', function () {
|
test('the @seo helper can be used for setting a previewify image', function () {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue