diff --git a/index.php b/index.php index 4c2ca95..c1fe010 100644 --- a/index.php +++ b/index.php @@ -33,11 +33,12 @@ ], [ 'pattern' => ['(:all)/og-image', 'og-image'], - 'action' => function ($slug) { + 'language' => '*', + 'action' => function ($lang, $slug) { $languages = kirby()->languages(); $language = null; if (count($languages) > 1) { - $language = kirby()->language()->code(); + $language = null; $slugParts = explode('/', $slug); if (in_array($slugParts[0], $languages->codes())) { @@ -57,12 +58,12 @@ return new Response($page->getOgImage()->read(), 'image/png'); } - if ($page->hasGeneratedOgImage()) { + if ($page->hasGeneratedOgImage($languageString)) { return new Response($page->image('generated-og-image.' . $languageString . '.png')->read(), 'image/png'); } try { - $page->createOgImage(); + $page->createOgImage($languageString); return new Response($page->image('generated-og-image.' . $languageString . '.png')->read(), 'image/png'); } catch (\Exception $e) { return new Response($e->getMessage(), 'text/plain', 500); diff --git a/lib/page-methods.php b/lib/page-methods.php index 98711bb..92ad9f6 100644 --- a/lib/page-methods.php +++ b/lib/page-methods.php @@ -7,11 +7,8 @@ $ogImageField = option('mauricerenck.ogimage.field', 'ogImage'); return (!is_null($this->{$ogImageField}()) && $this->{$ogImageField}()->isNotEmpty()); }, - 'hasGeneratedOgImage' => function () { - $language = $this->kirby()->language(); - $languageString = is_null($language) ? 'default' : $language->code(); - $filename = 'generated-og-image.' . $languageString . '.png'; - + 'hasGeneratedOgImage' => function (string $language) { + $filename = 'generated-og-image.' . $language . '.png'; $savedOgImage = !is_null($this->image($filename)) && $this->image($filename)->exists(); return $savedOgImage; @@ -25,7 +22,7 @@ ? $this->{$ogImageField}()->toFile()->crop($imageWidth, $imageHeight) : null; }, - 'createOgImage' => function () { + 'createOgImage' => function (string $language) { $imageWidth = option('mauricerenck.ogimage.width', 1600); $imageHeight = option('mauricerenck.ogimage.height', 900); @@ -135,9 +132,7 @@ $tempFile = tempnam(sys_get_temp_dir(), 'png'); imagepng($canvas, $tempFile); - $language = $this->kirby()->language(); - $languageString = is_null($language) ? 'default' : $language->code(); - $filename = 'generated-og-image.' . $languageString . '.png'; + $filename = 'generated-og-image.' . $language . '.png'; kirby()->impersonate('kirby'); if (!is_null($this->file($filename)) && $this->file($filename)->exist()) {