CoolCMS API

Breadcrumb extends BaseBreadcrumb
in package
uses CategoryTrailTrait, ProductSetTrailTrait

FinalYes

Renders eshop breadcrumbs: the page trail from {@see BaseBreadcrumb} plus a module trail (nested-set category, product set name).

The visual variants (Arrow, Pills, PillsPlain, Back) are shared in BaseBreadcrumb; the eshop has no template of its own so that breadcrumbs look the same across the website.

Usage:

{control frontEshopBreadcrumb}

Table of Contents

Constants

LIST_PAGE_SLUG  : mixed = \App\Core\Routers\PageId::ESHOP_PRODUCT_LIST
Fixed id of the front list page (`Front:Eshop ProductSet::list`); the same constant is used by {@see \App\UI\Front\Eshop\Components\ProductCategoryListComponent\ProductCategoryList}.

Properties

$container  : Container
$routerDispatcher  : RouterDispatcher
$translator  : ITranslator
$appContext  : AppContext
$categoryManager  : ProductCategoryManager
$componentParameters  : array<string, mixed>
$currencyContext  : CurrencyContext|null
$deviceDetector  : DeviceDetector|null
$languageContext  : LanguageContext|null
$localizationContext  : LocalizationContext|null
$pageManager  : PageManager
$settingContext  : SettingContext
$themeContext  : ThemeContext|null
$translatorDomain  : string|null

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
createComponent()  : IComponent|null
getAppContext()  : AppContext
getComponentParameter()  : mixed
Returns a component parameter, or null when it is not set.
getContainer()  : Container
getCurrencyContext()  : CurrencyContext|null
getLanguageContext()  : LanguageContext|null
getLocalizationContext()  : LocalizationContext|null
getRouterDispatcher()  : RouterDispatcher
getSettingContext()  : SettingContext
getSettings()  : array<int, array<string, mixed>>
getThemeContext()  : ThemeContext|null
hasServiceByType()  : bool
Returns whether the container has a service of the given type.
initializeAllContexts()  : void
injectDeviceDetector()  : void
onCreate()  : void
render()  : void
Renders the breadcrumb in the given visual style.
setAppContext()  : $this
setComponentParameter()  : void
Sets a component parameter.
setCurrencyContext()  : $this
setLanguageContext()  : $this
setLocalizationContext()  : $this
setSettingContext()  : $this
setThemeContext()  : $this
setup()  : void
setupAppContext()  : void
typedComponent()  : T
Returns a subcomponent with a verified type.
buildCategoryTrail()  : array<string|int, BreadcrumbItemDTO>
Builds the trail of a category from the nested set (`lft`/`rgt`), root to current.
buildCategoryUrl()  : string|null
Returns the list URL of a category.
buildItems()  : array<string|int, BreadcrumbItemDTO>
Extends the parent page trail with the eshop module trail.
buildPageTrail()  : array<string|int, BreadcrumbItemDTO>
Builds the trail for the current page from the nested set (`lft`/`rgt`).
buildPageUrl()  : string|null
Builds the page URL from its first route, `slug` set to the page id and the other URL parameters taken from `getDefaultUrlParams()`.
buildProductSetTrail()  : array<string|int, BreadcrumbItemDTO>
Builds the product set detail trail: the category trail plus the set name as the current item.
frontPresenter()  : BasePresenter|null
Returns the front presenter the component is attached to (null outside the front end or when detached).
getTemplateDir()  : string
Returns the root directory for template lookup (the theme is then resolved by `BaseComponent::setTemplateFile()`).
getTranslator()  : ITranslator
popCurrentPage()  : array<string|int, BreadcrumbItemDTO>
Removes the last trail item (the current page).
setTemplateFile()  : void
setTranslator()  : self
createMultiplierComponent()  : Multiplier<string|int, IComponent>
Creates a multiplier for the component.
createNewComponentInstance()  : IComponent|null
Creates a new component instance without adding it to the presenter; used by the multiplier.
createStandardComponent()  : IComponent|null
Creates a standard component (not a multiplier).

Constants

LIST_PAGE_SLUG

Fixed id of the front list page (`Front:Eshop ProductSet::list`); the same constant is used by {@see \App\UI\Front\Eshop\Components\ProductCategoryListComponent\ProductCategoryList}.

private mixed LIST_PAGE_SLUG = \App\Core\Routers\PageId::ESHOP_PRODUCT_LIST

Properties

$componentParameters

protected array<string, mixed> $componentParameters = []

component parameters set by setComponentParameter()

$translatorDomain

protected string|null $translatorDomain = 'front.system.components.breadcrumb'

Methods

__call()

Dispatches `renderXyz()` to `render('Xyz', ...$args)`.

public __call(string $name, array<string|int, mixed> $args) : mixed

Called only when the component has no renderXyz() method of its own.

Parameters
$name : string
$args : array<string|int, mixed>

createComponent()

public createComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

getComponentParameter()

Returns a component parameter, or null when it is not set.

public getComponentParameter(string $name) : mixed
Parameters
$name : string

getContainer()

public getContainer() : Container
Return values
Container

getSettings()

public getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>

hasServiceByType()

Returns whether the container has a service of the given type.

public hasServiceByType(string $className) : bool

The name is composed dynamically (module plus component), so class_exists() runs first, and a true result guarantees a valid type.

Parameters
$className : string
Tags
phpstan-assert-if-true

class-string $className

Return values
bool

render()

Renders the breadcrumb in the given visual style.

public render([string $style = 'Arrow' ]) : void

The style templates (Templates/Default/) are shared by all modules so that the breadcrumb looks the same across the website:

  • Arrow: quiet path with chevrons (default).
  • Pills: segmented strip with a chevron between the pills.
  • PillsPlain: pill only for the current page, the rest are plain links.
  • Back: "back to ..." link plus the rest of the path as secondary text.

Usage: {control frontBazaarBreadcrumb} or {control frontBazaarBreadcrumb:pills}.

Parameters
$style : string = 'Arrow'

setComponentParameter()

Sets a component parameter.

public setComponentParameter(string $name, mixed $value) : void
Parameters
$name : string
$value : mixed

typedComponent()

Returns a subcomponent with a verified type.

public typedComponent(string $name, T> $type) : T

Use it instead of an inline @var above $this['x'] (which does not narrow the type) and instead of the generic IComponent that $this['x'] returns. See Form::typedComponent().

Parameters
$name : string
$type : T>
Tags
template
Return values
T

buildCategoryUrl()

Returns the list URL of a category.

protected buildCategoryUrl(ProductCategory $category) : string|null

page and order are sent explicitly (the mask defaults 1 and 0, as in the sidebar tree); without them Nette fails on the optional p-<page>o-<order> segment with "Invalid link: Missing parameter". order = 0 is the "no sort chosen" sentinel, so the link does not preselect a manual sort order.

Parameters
$category : ProductCategory
Return values
string|null

buildItems()

Extends the parent page trail with the eshop module trail.

protected buildItems() : array<string|int, BreadcrumbItemDTO>
  • ProductSetPresenter::list: page trail + category trail.
  • ProductSetPresenter::detail: page trail + category trail + product set name.
  • Any other action keeps the parent page trail.

IMPORTANT: popCurrentPage() is called only when there is something to replace the page with. On a list without a category (/eshop, fulltext search) an unconditional call would cut the "Eshop" item and leave only the home page, so an empty module trail means "keep the page trail as is".

Return values
array<string|int, BreadcrumbItemDTO>

buildPageTrail()

Builds the trail for the current page from the nested set (`lft`/`rgt`).

protected buildPageTrail(Page|null $currentPage) : array<string|int, BreadcrumbItemDTO>

Children call it through parent::buildItems().

Parameters
$currentPage : Page|null
Return values
array<string|int, BreadcrumbItemDTO>

buildPageUrl()

Builds the page URL from its first route, `slug` set to the page id and the other URL parameters taken from `getDefaultUrlParams()`.

protected buildPageUrl(Page $page) : string|null

Returns null when the page has no route or the target presenter does not exist.

Parameters
$page : Page
Return values
string|null

buildProductSetTrail()

Builds the product set detail trail: the category trail plus the set name as the current item.

protected buildProductSetTrail(ProductSet|null $productSet) : array<string|int, BreadcrumbItemDTO>

Requires the class to use CategoryTrailTrait as well. Categories belong to the product, not to the set (M:N product_category_relations), so a bundle (typeId = 2) has no product and its trail is only the set name.

Parameters
$productSet : ProductSet|null
Return values
array<string|int, BreadcrumbItemDTO>

frontPresenter()

Returns the front presenter the component is attached to (null outside the front end or when detached).

protected frontPresenter() : BasePresenter|null
Return values
BasePresenter|null

getTemplateDir()

Returns the root directory for template lookup (the theme is then resolved by `BaseComponent::setTemplateFile()`).

protected getTemplateDir() : string

The default is the directory of this parent, so all modules share one set of styles. A child that needs its own look returns its __DIR__ and ships its own Templates/Default/; do that only when the module really must differ, otherwise the breadcrumbs drift apart across modules.

Return values
string

getTranslator()

protected getTranslator() : ITranslator
Return values
ITranslator

popCurrentPage()

Removes the last trail item (the current page).

protected popCurrentPage(array<string|int, BreadcrumbItemDTO> $items) : array<string|int, BreadcrumbItemDTO>

A child calls it right before appending its own trail; otherwise a page such as the advert detail or the article list would appear in the middle of the path.

Parameters
$items : array<string|int, BreadcrumbItemDTO>
Return values
array<string|int, BreadcrumbItemDTO>

setTemplateFile()

protected setTemplateFile(string $dir, string $filename) : void
Parameters
$dir : string
$filename : string

setTranslator()

protected setTranslator(ITranslator $translator) : self
Parameters
$translator : ITranslator
Return values
self

createMultiplierComponent()

Creates a multiplier for the component.

private createMultiplierComponent(string $name) : Multiplier<string|int, IComponent>
Parameters
$name : string
Return values
Multiplier<string|int, IComponent>

createNewComponentInstance()

Creates a new component instance without adding it to the presenter; used by the multiplier.

private createNewComponentInstance(string $baseName[, int|string|null $uniqueKey = null ]) : IComponent|null
Parameters
$baseName : string
$uniqueKey : int|string|null = null
Return values
IComponent|null

createStandardComponent()

Creates a standard component (not a multiplier).

private createStandardComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null
On this page

Search results