Skip to content

$page->permalink() may return an incorrect URL on multilingual websites. #7450

@tobiasfabian

Description

@tobiasfabian

Description

$page->permalink() returns false URL, when url in language setting is set.

$page->permalink() should return https://example.com/@/page/yEWQBkKPvrwBQfBw but returns https://example.com/en/@/page/yEWQBkKPvrwBQfBw which results in a 404 error.

// languages/en.php
<?php

return [
  'code' => 'en',
  'default' => true,
  …
  'name' => 'English',
  'url' => '', // ← this is ignored by $page->permalink()  
];
// languages/de.php
<?php

return [
  'code' => 'de',
  …
  'name' => 'Deutsch',
  'url' => 'de'
];

Suggested Solution

$url .= '/' . $language->code();

Replace

if ($language = $kirby->language('current')) {
	 $url .= '/' . $language->code(); 
 }

with

if ($language = $kirby->language('current')) {
	$url = $language->url();
 }

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions