Skip to content

Commit 1f8afc4

Browse files
authored
Merge pull request #1110 from hydephp/update-dynamic-title-generation-for-index-pages-to-use-the-titled-parent-basename
Update dynamic title generation for index pages to use parent basename
2 parents 12fba80 + 6735181 commit 1f8afc4

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

packages/framework/src/Framework/Factories/HydePageDataFactory.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ private function findTitleForPage(): string
7878
{
7979
return $this->matter('title')
8080
?? $this->findTitleFromMarkdownHeadings()
81+
?? $this->findTitleFromParentIdentifier()
8182
?? Hyde::makeTitle(basename($this->identifier));
8283
}
8384

@@ -94,6 +95,15 @@ private function findTitleFromMarkdownHeadings(): ?string
9495
return null;
9596
}
9697

98+
private function findTitleFromParentIdentifier(): ?string
99+
{
100+
if (str_contains($this->identifier, '/') && str_ends_with($this->identifier, '/index')) {
101+
return Hyde::makeTitle(basename(dirname($this->identifier)));
102+
}
103+
104+
return null;
105+
}
106+
97107
private function getCanonicalUrl(): ?string
98108
{
99109
if (! empty($this->matter('canonicalUrl'))) {

packages/framework/tests/Unit/HydePageDataFactoryTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@ public function testTitleFallsBackToIdentifierBasename()
6666
$this->assertSame('Bar', $this->factoryFromPage(new MarkdownPage('foo/bar'))->toArray()['title']);
6767
}
6868

69+
public function testIndexPageTitlesCanBeCreatedFromParentIdentifierBasename()
70+
{
71+
$this->assertSame('Foo', $this->factoryFromPage(new MarkdownPage('foo/index'))->toArray()['title']);
72+
}
73+
74+
public function testIndexPageTitlesCanBeCreatedFromNestedParentIdentifierBasename()
75+
{
76+
$this->assertSame('Bar', $this->factoryFromPage(new MarkdownPage('foo/bar/index'))->toArray()['title']);
77+
}
78+
6979
public function testCanCreateCanonicalUrlUsingBaseUrlFromConfig()
7080
{
7181
self::mockConfig(['hyde' => [

0 commit comments

Comments
 (0)