Skip to content

Commit

Permalink
Merge pull request #122 from outl1ne/feature/seo-field-support-improv…
Browse files Browse the repository at this point in the history
…ements

SEO changes & improvements
  • Loading branch information
KasparRosin authored Aug 18, 2022
2 parents d8fef86 + 54ca54a commit aed6989
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 16 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [5.3.1] - 17-08-2022

### Added

- Now returns `seo` data from formatPage function.

### Removed

- Removed SEO fields from regions.

## [5.3.0] - 17-08-2022

### Added
Expand Down
5 changes: 3 additions & 2 deletions src/Helpers/NPMHelpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,10 @@ public static function formatPage($page, $params = [])
$template = NPM::getPageTemplateBySlug($page->template);
if (empty($template)) return null;

$seoConfig = config('nova-page-manager.page_seo_fields', null);
$templateClass = new $template['class'];

return [
return array_merge([
'id' => $page->id,
'created_at' => $page->created_at,
'updated_at' => $page->updated_at,
Expand All @@ -119,7 +120,7 @@ public static function formatPage($page, $params = [])
'parent_id' => $page->parent_id,
'data' => $templateClass->resolve($page, $params),
'template' => $page->template ?: null,
];
], $seoConfig ? ['seo' => $page->seo] : []);
}

public static function formatRegion($region)
Expand Down
34 changes: 20 additions & 14 deletions src/Http/Controllers/PageManagerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public function getFields(Request $request, $type, $resourceId, $isSyncRequest =

// Resolve with values
$templateClass = new $template['class'];
$templateType = NPM::getTemplateClassType($templateClass::class);

$fieldsData = [];
$seoFieldsData = [];
Expand All @@ -58,15 +59,18 @@ public function getFields(Request $request, $type, $resourceId, $isSyncRequest =
$fieldCollection->assignDefaultPanel(__('novaPageManager.defaultPanelName'));
$fieldsData[$key] = $fieldCollection;

// SEO fields
$seoFields = NPM::getSeoFields();
if ($seoFields) {
$dataObject = (object) ($model->seo[$key] ?? []);
$seoFieldCollection = FieldCollection::make($seoFields);
$seoFieldCollection->each(fn ($field) => $field->template = $templateClass);
$seoFieldCollection->resolve($dataObject);
$seoFieldCollection->assignDefaultPanel(__('novaPageManager.seoPanelName'));
$seoFieldsData[$key] = $seoFieldCollection;

if ($templateType === Template::TYPE_PAGE) {
// SEO fields
$seoFields = NPM::getSeoFields();
if ($seoFields) {
$dataObject = (object) ($model->seo[$key] ?? []);
$seoFieldCollection = FieldCollection::make($seoFields);
$seoFieldCollection->each(fn ($field) => $field->template = $templateClass);
$seoFieldCollection->resolve($dataObject);
$seoFieldCollection->assignDefaultPanel(__('novaPageManager.seoPanelName'));
$seoFieldsData[$key] = $seoFieldCollection;
}
}
}

Expand All @@ -79,11 +83,13 @@ public function getFields(Request $request, $type, $resourceId, $isSyncRequest =
__('novaPageManager.defaultPanelName'),
);

$seoPanelsData[$key] = $this->resolvePanelsFromFields(
app()->make(NovaRequest::class),
$seoFieldsData[$key],
__('novaPageManager.seoPanelName'),
);
if ($templateType === Template::TYPE_PAGE) {
$seoPanelsData[$key] = $this->resolvePanelsFromFields(
app()->make(NovaRequest::class),
$seoFieldsData[$key],
__('novaPageManager.seoPanelName'),
);
}
}

return [
Expand Down

0 comments on commit aed6989

Please sign in to comment.