Je crée un modèle et voici mon templateDetails.xml.
<extension version="3.4" type="template" client="site" method="upgrade">
<name>my_tpl</name>
<creationDate>18-06-2015</creationDate>
<author>memyself</author>
<copyright>Copyright © 2015 memyself.com</copyright>
<authorEmail>[email protected]</authorEmail>
<authorUrl>http://www.memyself.com</authorUrl>
<version>1.0.0</version>
<description>TPL_DESC</description>
<files>
<filename>component.php</filename>
<filename>error.php</filename>
<filename>favicon.ico</filename>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<filename>template_preview.png</filename>
<filename>template_thumbnail.png</filename>
<filename>css/custom.css</filename>
<folder>css</folder>
<folder>html</folder>
<folder>images</folder>
<folder>img</folder>
<folder>js</folder>
<folder>language</folder>
<folder>less</folder>
</files>
J'utilise la méthode de mise à niveau afin que tous les fichiers soient écrasés lorsqu'une nouvelle mise à jour est installée. Mais je ne veux pas que custom.css soit écrasé lors de l'installation d'une mise à jour par l'utilisateur (uniquement lors de la mise à jour, pas pour la première installation), car custom.css contient du code personnalisé modifié par l'utilisateur.
Est-il possible de faire cela?
Je pensais développer mon commentaire.
Vous allez d’abord avoir besoin d’ajouter un fichier de script install-uninstall-update à votre composant. Prenez connaissance de la documentation de Joomla pour savoir comment procéder.
Une fois que vous avez implémenté cela, vous allez vouloir utiliser la fonction update
qui n'exécutera ce code que lorsque l'utilisateur mettra à jour le composant.
Dans cette fonction, vous devez obtenir le contenu du fichier CSS existant. S'il contient du contenu, vous n'avez pas besoin de le remplacer.
Ainsi, lorsque vous expédiez votre première version de l'extension, assurez-vous que le fichier CSS ne contient pas de contenu ni même de commentaires. Dans la mise à jour Zip (par exemple v1.0.1), vous devez déplacer le fichier CSS du répertoire CSS vers un autre emplacement (peut-être un nouveau répertoire appelé update_css ).
Enfin, le code:
function update($parent)
{
// Import dependencies
JLoader::register('JFile', JPATH_LIBRARIES . '/joomla/filesystem/file.php');
// Define the old CSS file path
$old_css = JPATH_ROOT . '/components/com_mycomponent/css/custom.css';
// Check if the file exists
if (JFile::exists($old_css))
{
// Get the contents of the file
if (file_get_contents($old_css) != '')
{
// Define the new CSS file path
$new_css = JPATH_ROOT . '/components/com_mycomponent/update_css/custom.css';
// Check if the file exists
if (JFile::exists($new_css))
{
// Move the file
JFile::move($new_css, $old_css);
}
}
}
}
J'ai ajouté quelques chèques ici, mais vous devrez apporter quelques modifications pour vous satisfaire.
J'espère que cela t'aides
Je ne sais pas comment résoudre votre question, mais je voudrais expliquer comment je le fais dans mes composants.
J'utilise css/style.css qui a le style du composant, puis je charge theme/css/custom_style.css ce style surchargé avec le style client.
Par exemple, dans style.css, j'ai:
.box-wrapper{backgound:#ffffff; padding:10px; border:1px solid #ccc}
Si je veux changer de case, je ne toucherai pas le style.css mais custom_style.css
.box-wrapper{border:0}
Cela changera la boîte mais maintiendra le style.css original
Bien sûr, je ne distribuerai pas custom_style.css dans le package.