Tentei definir uma nova substituição de trilha de navegação, mas ainda estou obtendo o padrão do site.
Eu criei um módulo personalizado, foo_breadcrumb:
- modules/custom/foo_breadcrumb
- foo_breadcrumb.info.yml
- foo_breadcrumb.services.yml
- src/
- BreadcrumbBuild.php
Aqui está o foo_breadcrumb.services.yml
:
services:
foo_breadcrumb.breadcrumb:
class: Drupal\foo_breadcrumb\BreadcrumbBuild
tags:
- { name: breadcrumb_builder, priority: 100 }
Dentro src/BreadcrumbBuild.php
, eu tenho:
<?php
namespace Drupal\foo_breadcrumb;
use Drupal\Core\Breadcrumb\BreadcrumbBuilderBase;
class BreadcrumbBuild implements BreadcrumbManager {
/**
* {@inheritdoc}
*/
public function applies(array $attributes) {
return true;
}
/**
* {@inheritdoc}
*/
public function build(array $attributes) {
$breadcrumb[] = $this->l($this->t('Test'), NULL);
$breadcrumb[] = $this->l($this->t('Test2'), 'test');
return $breadcrumb;
}
}
?>
Comecei a trabalhar com a única redação que pude encontrar nas migalhas de pão do Drupal 8 , mas o problema é que parece estar usando uma versão mais antiga do carregamento automático PSR-4 que não está mais no lugar (para o registro, estou na 8.0.0 -dev-beta3) e, por isso, passei a entender como todos os outros módulos funcionam na base de código.
Agora estou bastante certo de que isso está correto para carregar o módulo; no entanto, não tenho certeza se
class BreadcrumbBuild extends BreadcrumbBuilderBase
está correto. O problema é que o antigo tutorial ao qual vinculei menciona se estende BreadcrumbBuilderBase
, mas os documentos mais atuais parecem não mencioná-lo e me pergunto se está desatualizado - e como devo fazer isso.
Da mesma forma, eu realmente não entendo o que o services.yml
arquivo está fazendo a esse respeito, não há documentação para isso.
fonte
Aqui vamos nós novamente. Essas respostas estão quase certas. Uma coisa que você não pode esquecer são "tags de cache" e "contextos de cache".
Eu estava configurando um termo de taxonomia em um nó como uma trilha de navegação.
Consegui trabalhar com conselhos deste post, mas depois cliquei e notei as mesmas migalhas de pão em todas as páginas.
Para encurtar a história, certifique-se de definir alguns contextos e tags de cache.
Aqui está o meu serviço em uma essência: https://gist.github.com/jonpugh/ccaeb01e173abbc6c88f7a332d271e4a
Aqui está o meu método build ():
fonte
Atualização 2016 Drupal 8
A documentação afirma que você deve retornar uma instância da classe de trilha de navegação. Se você está tendo problemas para fazê-lo funcionar. aqui está a solução que funcionou para mim.
Então o arquivo yml
PS: se você estiver usando o bootstrap, vá para a sua
/admin/appearance/settings
página de configurações e veja as configurações da trilha de navegação.Show 'Home' breadcrumb link
deve ser verificado. EShow current page title at end
deve ser marcado.Depois de tudo isso, limpe seu cache. Sempre que você altera um arquivo YML, mesmo no modo de depuração, é necessário limpar o cache. você pode ir
/core/rebuild.php
se ficar preso e não puder reconstruir.fonte
Não se esqueça do cache
O cache de renderização foi alterado bastante tarde no ciclo de desenvolvimento do D8 e, portanto, não é mencionado na série d8ftw ou nas outras respostas a esta pergunta.
A documentação da API de cache refere-se especificamente à renderização de matrizes, mas todas essas instruções se aplicam igualmente ao Breadcrumbs. As trilhas de navegação têm um
toRenderable()
método, o Drupal tentará armazená-las em cache no cache de renderização, e isso significa que você deve especificar informações suficientes para permitir que o Drupal faça isso corretamente.Os detalhes estão nos documentos, mas a versão curta é a que
Breadcrumb
implementa oRefinableCachableDependencyInterface
. Em sua classe de construtor, convém chamaraddCachableDependency()
com toda e qualquer entidade ou objeto de configuração usado para construir a trilha de navegação. A documentação para 'CacheableDependencyInterface & friends' entra em mais detalhes de como e por quê.Se houver outros contextos nos quais a trilha de navegação pode mudar, você também precisará usar manualmente
addCacheContexts()
para garantir que o bloco varia,addCacheTags()
para garantir que a entrada do cache possa ser invalidada corretamente emergeCacheMaxAge()
se o cache é sensível ao tempo e precisa expirar.Se isso não for feito corretamente, um dos serviços personalizados do construtor Breadcrumb será 'vencedor' e as trilhas de navegação dessa página específica serão veiculadas em todas as páginas, para todos os visitantes, para sempre.
fonte
Existe outra maneira de conseguir isso.
E, em seguida, crie outro arquivo na pasta de modelos do seu tema chamada "breadcrumb.html.twig" e coloque o código abaixo neste arquivo:
É isso aí. Agora limpe o cache e você obterá a trilha atual com o título da página atual, como Início / Título da página atual. Você pode alterar o separador substituindo "/" pelo desejado.
fonte
Você deve usar um módulo contrib para adicionar o título da página atual à trilha de navegação, como Current Page Crumb: https://www.drupal.org/project/current_page_crumb
Se você quiser codificá-lo manualmente, poderá extrair o código da pasta src desse módulo. Você pode encontrar mais detalhes sobre as migalhas de pão do Drupal 8 aqui: http://www.gregboggs.com/drupal8-breadcrumbs/
fonte
drush en current_page_crumb
não é tão ruim.Eu tinha usado migalhas de pão personalizadas usando token no Drupal 7 e, quando esse módulo não estava disponível para o Drupal 8, acabei criando visualizações para meus tipos de conteúdo individuais usando os campos que originalmente eram os campos de token. Utilizando-o como um bloco e desativando a trilha de navegação normal. Foi um pouco mais trabalhoso do que o Breadcrumbs personalizado, mas funciona.
fonte