Como posso tornar meu novo módulo dependente de uma versão mínima do Drupal 7 necessária para que ele funcione corretamente?

10

Estou desenvolvendo um novo módulo (ainda não há nenhum site usando). Requer uma versão específica do Drupal, pois usa o hook_taxonomy_term_view()gancho que foi introduzido na versão principal do Drupal 7.17 .

Quero evitar que meu módulo seja ativado em um site usando, por exemplo, o Drupal 7.16 ou qualquer versão anterior do núcleo do Drupal. Versões mais altas do Drupal, acima de 7,17, devem estar bem.

Minha pergunta : Como posso tornar meu módulo dependente dessa versão do Drupal 7.17, que é o mínimo para o meu módulo?

Nota: Não preciso (preciso me preocupar) de uma solução para sites em que o módulo já esteja instalado. Portanto, não há necessidade de desativá-lo de alguma forma nessas versões Drupal anteriores à 7.17.

kiamlaluno
fonte
A pergunta é marcada como ganchos porque se trata de um gancho que devo usar no meu código. ganchos não significa que estou procurando um gancho que eu possa usar; Estou aberto a qualquer solução que permita evitar que o módulo seja instalado em um site que não use o Drupal 7.17 ou superior.
kiamlaluno
Você pode exigir uma versão menor de algum outro módulo, dependencies[] = mymodule (1.12)mas parece que isso não funciona para o núcleo.
precisa saber é
@AyeshK Uh! Agora, isso pode ser interessante, se você puder me indicar um módulo principal do Drupal que esteja sempre ativado.
kiamlaluno
Eu tentei com dependencies[] = taxonomy (>7.17)outros números de versão possíveis, mas não funcionou.
precisa saber é

Respostas:

11

O truque, aparentemente, é usar o módulo do sistema como:

dependencies[] = system (>=7.17)
tsvenson
fonte
4
Este é o correto. Fonte: dww e eu escrevemos o verificador de dependência com versão. Eu escrevi sobre isso em drupal4hu.com/node/274 e agora adicionado à página manual relevante na drupal.org/node/542202 também.
7

hook_requirements() existe exatamente para esse tipo de objetivo.

Verifique os requisitos de instalação e faça o relatório de status.

Você pode verificar o $phaseparâmetro para determinar se o módulo está sendo instalado, a versão atual do Drupal e a versão necessária e retornar uma severidade de REQUIREMENT_ERROR. Isso impedirá que o módulo seja instalado até que o requisito seja atendido.

A documentação é bastante completa, a única coisa que vale a pena mencionar aqui é que o gancho precisa ser implementado no arquivo .install do módulo.

Clive
fonte
Esta não é a resposta certa. Não faço ideia do motivo de o voto ter sido tão votado.
@chx Aceito sua palavra, mas nesse caso a descrição da função "Verifique os requisitos de instalação e faça o relatório de status". é um tanto enganador, não é? Afinal, estamos falando especificamente sobre a verificação de requisitos de módulo na instalação :)
Clive
1
@ Chaphapu Não de acordo com os documentos :) Ele fala sobre módulos especificamente e basicamente diz que usar esse gancho para retornar REQUIREMENT_ERRORpara garantir que um módulo não seja instalado se falhar nos requisitos. Eu assumi que a verificação da versão do Drupal era um caso de uso válido (os documentos não mencionam não fazer isso), mas acho que perdi alguma coisa. Pode ser apenas uma prática ruim ou algo que eu não sei
Clive
1
@Clive estranho, não sei onde eu tenho que partir then..maybe D8 deve ser apenas atualizar um docs ;-)
Chapabu
1
@chx Você terá que desculpar minha ignorância, nunca fez isso antes ... o problema vai contra o D8 e depois é reportado? Na sua opinião, o texto completo precisa ser alterado ou precisa apenas de uma nota mencionando não usar esse gancho para verificar as versões do módulo / núcleo, apenas os requisitos da biblioteca etc. (com um link para os documentos que você mencionou)? Obrigado
Clive
2

Você poderia usar o hook_enabled

Isso seria acionado após a instalação do módulo. Você pode verificar a versão do drupal instalado e, se não for a versão correta, use module_disable e forneça a mensagem de erro necessária.

Mohammed Shameem
fonte