mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_tools.git
synced 2026-03-09 18:07:41 -03:00
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>
This commit is contained in:
99
site_tools.api.php
Normal file
99
site_tools.api.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?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".
|
||||
*/
|
||||
Reference in New Issue
Block a user