Autore Topic: Override della lingua da appendere e non sovrascrivere  (Letto 289 volte)

Offline Claudio Romeo

  • Esploratore
  • **
  • Post: 108
  • Sesso: Maschio
  • Se non SUDO non godo
    • Mostra profilo
    • VirtueMart Matters
Devo distribuire i file di override di due lingue (italiano e inglese), sia frontend sia backend, in modo che vengano installati nelle cartelle corrette come se si trattasse di una normale estensione.
Non è questo il problema: so come creare un file manifest.xml.
Il problema sta nel fatto che tutto funziona bene solo se i file it-IT.override.ini e en-GB.override.ini non esistono già. Se i file sono già presenti, i miei sostituiscono quelli vecchi, che andrebbero perciò persi.
La domanda è: come faccio a specificare nel file manifest.xml che il testo deve essere appeso al file esistente e non sostituirsi ad esso?
Claudio Romeo
Ho scritto la Guida di riferimento di VirtueMart (www.virtuemartmatters.com). Sono socio di Joomla!Lombardia (www.joomlalombardia.org).

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
    • Simple
Re:Override della lingua da appendere e non sovrascrivere
« Risposta #1 il: 05 Lug 2017, 09:45:17 »
Solo tramite il manifest non puoi fare quello che chiedi, devi creare uno script che si occupi di creare il file se non esiste e di appenderci il tuo contenuto. Per lanciare loscript dopo l'installazione dell'estension basta aggiungere questa riga al manifest:
 
Codice: [Seleziona]
<scriptfile>script.php</scriptfile>  e poi crei un file script.php:
Codice: [Seleziona]
<?php
// No direct access to this file
defined('_JEXEC') or die;

/**
 * Script file of HelloWorld module
 */
class com_TuoComponenteInstallerScript
{
/**
 * Method to install the extension
 * $parent is the class calling this method
 *
 * @return void
 */
function install($parent
{
echo '<p>The component has been installed</p>';
}

/**
 * Method to uninstall the extension
 * $parent is the class calling this method
 *
 * @return void
 */
function uninstall($parent
{
echo '<p>The component has been uninstalled</p>';
}

/**
 * Method to update the extension
 * $parent is the class calling this method
 *
 * @return void
 */
function update($parent
{
echo '<p>The component has been updated to version' $parent->get('manifest')->version '</p>';
}

/**
 * Method to run before an install/update/uninstall method
 * $parent is the class calling this method
 * $type is the type of change (install, update or discover_install)
 *
 * @return void
 */
function preflight($type$parent
{
echo '<p>Anything here happens before the installation/update/uninstallation of the component</p>';
}

/**
 * Method to run after an install/update/uninstall method
 * $parent is the class calling this method
 * $type is the type of change (install, update or discover_install)
 *
 * @return void
 */
function postflight($type$parent
{
echo '<p>Anything here happens after the installation/update/uninstallation of the component</p>';
}
}
Se ti sono stato d'aiuto, Vota la mia estensione !

Offline Claudio Romeo

  • Esploratore
  • **
  • Post: 108
  • Sesso: Maschio
  • Se non SUDO non godo
    • Mostra profilo
    • VirtueMart Matters
Re:Override della lingua da appendere e non sovrascrivere
« Risposta #2 il: 05 Lug 2017, 10:07:24 »
Grazie, giovi.
Mi rimane però un dubbio.
Citazione
class com_TuoComponenteInstallerScript
Da quel che capisco (ma su questo sono proprio un novellino) stai parlando di un componente, mentre io non devo installare alcun componente: solo copiare/appendere file di lingua xx_XX.override.ini.
Non vorrei che con le istruzioni che mi hai suggerito qualcosa andasse storto o che Joomla creasse automaticamente una voce nel menu Componenti.
Hai modo di chiarirmi meglio questo punto?
Per il resto, farò tutte le prove del caso.
Grazie ancora.
Claudio Romeo
Ho scritto la Guida di riferimento di VirtueMart (www.virtuemartmatters.com). Sono socio di Joomla!Lombardia (www.joomlalombardia.org).

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
    • Simple
Re:Override della lingua da appendere e non sovrascrivere
« Risposta #3 il: 05 Lug 2017, 10:14:36 »
Tu che tipo di estensione stai distribuendo?

Se non è un'estensione riconosciuta da joomla non capisco la necessità del manifest.

Quella che stai cercando di fare non è una cosa standard quindi dovrai comunque trovare un workaround
Se ti sono stato d'aiuto, Vota la mia estensione !

Offline Claudio Romeo

  • Esploratore
  • **
  • Post: 108
  • Sesso: Maschio
  • Se non SUDO non godo
    • Mostra profilo
    • VirtueMart Matters
Re:Override della lingua da appendere e non sovrascrivere
« Risposta #4 il: 05 Lug 2017, 10:33:15 »
OK, mi spiego meglio.
Sto scrivendo un Quaderno (come quelli che trovi sul sito di VirtueMart Matters) che spiega come rendere più bello il carrello di VirtueMart.
Tra le modifiche proposte, c'è anche l'inserimento di alcuni testi per rendere il carrello più chiaro e leggibile.
Per far sì che questa cosa funzioni anche con i negozi multilingua, non uso testi fissi, ma variabili di lingua da inserire nei file xx_XX.override.it.
Mi piacerebbe dare al lettore la possibilità di installare con un'unica procedura questi file, appendendoli a quelli eventualmente già presenti.
Inoltre, mi piacerebbe farlo mediante una procedura già conosciuta agli utenti di Joomla, in modo da semplificare al massimo le cose. Ecco perché il file manifest.xml.
Questa procedura la uso con successo per l'installazione di viste e di sublayout personalizzati. Questi però usano nomi univoci e non c'è probabilità che vadano a sovrascrivere file esistenti.
Il problema sono proprio i file di override della lingua, che potrebbero essere già presenti nel sito di destinazione. Perciò, le mie variabili di lingua non devono sostituire i file già esistenti ma appendersi ad essi.
Purtroppo mi pare di capire che il file manifest.xml preveda per method solo install e upgrade e non anche un (ipotetico) append.
E qui mi blocco...
Claudio Romeo
Ho scritto la Guida di riferimento di VirtueMart (www.virtuemartmatters.com). Sono socio di Joomla!Lombardia (www.joomlalombardia.org).

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
    • Simple
Re:Override della lingua da appendere e non sovrascrivere
« Risposta #5 il: 05 Lug 2017, 22:51:55 »
Install ed upgrade servono a dire a Joomla come gestire l'installazione nel caso l'estensione sia già stata installata, non è legato ai singoli file. Per me devi optare per lo script php perché quello che vuoi fare non è una cosa standard. Php comunque gestisce abbastanza bene i file .ini per cui puoi fare anche in modo che le modifche vengano cancellate quando elimini l'estensione!
edit: quel codice dovrebbe andar bene per qualunque tipo di estensione, che sia componente modulo o languagepack non fa differenza
« Ultima modifica: 05 Lug 2017, 22:56:04 da giovi »
Se ti sono stato d'aiuto, Vota la mia estensione !

Offline Claudio Romeo

  • Esploratore
  • **
  • Post: 108
  • Sesso: Maschio
  • Se non SUDO non godo
    • Mostra profilo
    • VirtueMart Matters
Re:Override della lingua da appendere e non sovrascrivere
« Risposta #6 il: 06 Lug 2017, 10:23:03 »
OK, grazie.
Farò le prove e vedo che cosa succede!
Claudio Romeo
Ho scritto la Guida di riferimento di VirtueMart (www.virtuemartmatters.com). Sono socio di Joomla!Lombardia (www.joomlalombardia.org).

 

Torna su