Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/myhome-core/src/Widgets/Helpers/HasBreadcrumbs.php |
<?php
namespace Tangibledesign\MyHome\Widgets\Helpers;
use Tangibledesign\Framework\Models\Field\TaxonomyField;
use Tangibledesign\Framework\Models\Template\TemplateType\ModelArchiveTemplateType;
use Tangibledesign\Framework\Models\Template\TemplateType\ModelSingleTemplateType;
use Tangibledesign\Framework\Models\Template\TemplateType\TemplateType;
use Tangibledesign\Framework\Widgets\Helpers\HasModel;
trait HasBreadcrumbs
{
use \Tangibledesign\Framework\Widgets\Helpers\HasBreadcrumbs;
use HasModel;
public function getCustomBreadcrumbs(?TemplateType $templateType): array
{
if ($templateType instanceof ModelSingleTemplateType || is_singular(tdf_model_post_type())) {
return $this->getListingBreadcrumbs();
}
if ($templateType instanceof ModelArchiveTemplateType || is_post_type_archive(tdf_model_post_type())) {
return $this->getListingArchiveBreadcrumbs();
}
return [];
}
private function getListingBreadcrumbs(): array
{
$breadcrumbs = $this->getBaseBreadcrumbs();
$listing = $this->getModel();
if ( ! $listing) {
return $breadcrumbs;
}
$baseUrl = get_post_type_archive_link(tdf_model_post_type());
$breadcrumbs[] = [
'key' => 'search_results',
'name' => tdf_string('search_results'),
'url' => $baseUrl,
];
$currentTerms = tdf_collect();
foreach (tdf_app('breadcrumbs_taxonomies') as $taxonomy) {
if ($taxonomy->isMultilevel()) {
$terms = $taxonomy->getMultilevelValue($listing);
} else {
$terms = $taxonomy->getValue($listing);
if ($terms->isNotEmpty()) {
$terms = tdf_collect([$terms->first()]);
}
}
if ($terms->isEmpty()) {
continue;
}
foreach ($terms as $term) {
$currentTerms[] = $term;
$breadcrumbs[] = [
'key' => $term->getKey(),
'name' => $term->getName(),
'url' => apply_filters(
'myhome/breadcrumbs/listing/url',
$baseUrl,
$currentTerms
),
];
}
}
$breadcrumbs[] = [
'key' => $listing->getKey(),
'name' => $listing->getName(),
'url' => $listing->getUrl(),
];
return $breadcrumbs;
}
private function getListingArchiveBreadcrumbs(): array
{
$args = $_GET;
foreach (tdf_app('breadcrumbs_taxonomies') as $taxonomy) {
/* @var TaxonomyField $taxonomy */
$value = get_query_var($taxonomy->getKey());
if ( ! empty($value)) {
$args[$taxonomy->getSlug()] = $value;
}
}
return apply_filters('myhome/breadcrumbs/listings', $args);
}
}