| | |
| | | private function __construct() |
| | | { |
| | | $this->cache = Cache::for('breadcrumbs', MONTH_IN_SECONDS)->connect('post')->connect('taxonomy')->connect('user'); |
| | | $this->cache->flush(); |
| | | if (JVB_TESTING) { |
| | | $this->cache->flush(); |
| | | } |
| | |
| | | return []; |
| | | } |
| | | |
| | | |
| | | switch (true) { |
| | | |
| | | case is_singular(): |
| | | $key = get_queried_object_id(); |
| | | break; |
| | |
| | | $obj = get_queried_object(); |
| | | $key = $obj->taxonomy; |
| | | break; |
| | | case is_home(): |
| | | $obj = get_queried_object(); |
| | | $key = $obj->post_type; |
| | | break; |
| | | default: |
| | | $key = 'home'; |
| | | break; |
| | |
| | | $obj = get_queried_object(); |
| | | if (is_tax()) { |
| | | $crumbs = $this->addTaxonomyCrumbs($crumbs, $obj); |
| | | } elseif (is_singular()) { |
| | | } elseif (is_singular() || is_home()) { |
| | | $crumbs = $this->addArchiveCrumbs($crumbs, $obj); |
| | | $hierarchy = $this->addSingularCrumbs($crumbs, $obj); |
| | | $crumbs = $crumbs + $hierarchy; |
| | |
| | | $crumbConfig = $registrar->getConfig('breadcrumbs'); |
| | | } |
| | | |
| | | if($registrar && $registrar->hasFeature('show_directory')) { |
| | | $directory = JVB()->directories(); |
| | | if ($directory && !empty($directory->directories($content)??[])){ |
| | | $crumbs[] = [ |
| | | 'name' => $directory->directories($content)['title'], |
| | | 'url' =>$directory->directories($content)['url'] |
| | | ]; |
| | | } |
| | | } |
| | | |
| | | // Handle directory posts specially |
| | | if (JVB()->directories() && JVB()->directories()->isDirectory()) { |
| | | $pos = jvbGetDirectoryInfo(); |
| | |
| | | */ |
| | | private function addArchiveCrumbs(array $crumbs, object $obj): array |
| | | { |
| | | if (is_singular('page') || is_home()) { |
| | | return $crumbs; |
| | | } |
| | | $type = is_singular() ? $obj->post_type : $obj->name; |
| | | $name = jvbNoBase($type); |
| | | |
| | | $registrar = Registrar::getInstance($name); |
| | | if($registrar && $registrar->hasFeature('show_directory')) { |
| | | |
| | | if($registrar && $registrar->hasFeature('show_directory') && JVB()->directories()) { |
| | | $directory = JVB()->directories(); |
| | | |
| | | if ($directory && !empty($directory->directories($name)??[])){ |
| | | $crumbs[] = [ |
| | | 'name' => $directory->directories($name)['title'], |
| | |
| | | ]; |
| | | } |
| | | } elseif (Site::has('is_directory') && $name === 'directory') { |
| | | |
| | | $crumbs[] = [ |
| | | 'name' => JVB()->directories()->referAs(true), |
| | | 'url' => get_post_type_archive_link($type) |
| | | ]; |
| | | } elseif (is_post_type_archive() && $registrar && $registrar->hasFeature('show_directory')) { |
| | | |
| | | } elseif ($registrar) { |
| | | $crumbs[] = [ |
| | | 'name' => $registrar->getConfig('breadcrumbs')['title'] ?? $registrar->getPlural(), |
| | | 'url' => get_post_type_archive_link($type) |
| | | 'name' => $registrar->getConfig('breadcrumbs')['title'] ?? $registrar->getPlural(), |
| | | 'url' => get_post_type_archive_link($type) |
| | | ]; |
| | | } else { |
| | | $postTypeObject = get_post_type_object($type); |
| | | $crumbs[] = [ |
| | | 'name' => $postTypeObject->label, |
| | | 'url' => get_post_type_archive_link($type) |
| | | ]; |
| | | } |
| | | |