Files
site_tools/site_tools.api.php
Quintino A. G. Souza 0e839574ab Initial commit
Módulo site_tools com ferramentas utilitárias para outros módulos:
- Bloco ShareLinks para compartilhamento em redes sociais
- Seção "Local Modules" no menu de configuração do Drupal

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 07:48:36 -03:00

100 lines
2.5 KiB
PHP

<?php
/**
* @file
* Documentação dos hooks fornecidos pelo módulo Site Tools.
*/
declare(strict_types=1);
/**
* @addtogroup hooks
* @{
*/
/**
* Fornece links de compartilhamento para o bloco ShareLinksBlock.
*
* Este hook permite que módulos adicionem links de compartilhamento
* ao bloco de compartilhamento do Site Tools. Cada módulo é responsável
* por detectar o contexto atual (node, term, URL, etc.) e gerar
* os links apropriados.
*
* @return array
* Array associativo de links de compartilhamento. Cada elemento deve
* ser um array com as seguintes chaves:
* - 'content': (obrigatório) Render array ou markup HTML do link.
* - 'weight': (opcional) Peso para ordenação. Padrão: 0.
* - 'provider': (opcional) Nome do módulo que fornece o link.
*
* @see hook_site_tools_share_links_alter()
*/
function hook_site_tools_share_links(): array {
$links = [];
// Exemplo: adicionar link de compartilhamento por email.
$current_url = \Drupal::request()->getUri();
$current_title = \Drupal::service('title_resolver')->getTitle(
\Drupal::request(),
\Drupal::routeMatch()->getRouteObject()
);
$links['email'] = [
'content' => [
'#type' => 'link',
'#title' => t('Share via Email'),
'#url' => \Drupal\Core\Url::fromUri('mailto:', [
'query' => [
'subject' => $current_title,
'body' => $current_url,
],
]),
'#attributes' => [
'class' => ['share-link', 'share-link--email'],
],
],
'weight' => 10,
'provider' => 'my_module',
];
// Exemplo: integração com AddToAny.
// Se o módulo addtoany estiver instalado, você pode renderizar
// seu bloco ou widget aqui.
if (\Drupal::moduleHandler()->moduleExists('addtoany')) {
$links['addtoany'] = [
'content' => [
'#type' => 'markup',
'#markup' => '<div class="addtoany_share_save_container">' .
'<!-- AddToAny widget seria renderizado aqui --></div>',
],
'weight' => 0,
'provider' => 'addtoany',
];
}
return $links;
}
/**
* Altera os links de compartilhamento coletados.
*
* @param array $links
* Array de links de compartilhamento coletados via
* hook_site_tools_share_links().
*
* @see hook_site_tools_share_links()
*/
function hook_site_tools_share_links_alter(array &$links): void {
// Exemplo: remover um link específico.
unset($links['email']);
// Exemplo: alterar o peso de um link.
if (isset($links['addtoany'])) {
$links['addtoany']['weight'] = -10;
}
}
/**
* @} End of "addtogroup hooks".
*/