2017-04-21 1 views
0

Joomla überprüft nach der Anmeldung im Backend, ob Updates verfügbar sind. Wenn ja, können Sie eine Übersicht sehen, wenn Sie auf "Updates anzeigen" klicken. Aber ich möchte eine ähnliche Nachricht über Updates für eine von mir entwickelte Erweiterung anzeigen ("es gibt ein Update verfügbar"). Ich habe einige Dinge ausprobiert, aber bis jetzt habe ich es nicht geschafft. Irgendwelche Vorschläge?Wie erstellen Sie eine Nachricht "Ein Update ist verfügbar" für eine Joomla-Erweiterung?

+0

Überprüfen Sie den Code für Akeeba Backup, der die von Ihnen beschriebene Funktionalität aufweist. –

Antwort

1

Dies ist der Code, den ich für meine Komponente befolge. Sie können das gleiche in der Aufrufe- verwenden> tmpl-> default.php

<?php $user = JFactory::getUser(); ?> 

<div class="UpdatesPage" style="margin-top: 8px"> 
<?php 
$xml = JFactory::getXML(JPATH_ADMINISTRATOR .'/components/com_mycomponent/manifest.xml');//Path to your existing manifest file. 
$existingversion = (string)$xml->version; 

$url = 'http://example.com/downloads/mycomponent.xml'; 
//$url is path to your xml file which stores the latest version. 
$ch = curl_init($url);//Execute curl and get the xml data available in my server 

curl_setopt($ch, CURLOPT_NOBODY, true); 
curl_exec($ch); 
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
// 400 means not found, 200 means found. 
curl_close($ch); 
if($retcode == 200){ 
$xml2 = JFactory::getXML($url,true); 
    $latestversion = $xml2->update->version; 
} else { 
    $latestversion = ""; 
} 

?> 
<h2>Version Update</h2> 
<?php 
if (version_compare($latestversion, $existingversion) > 0) { 
    echo "<span style='color:#AFA;text-align:center;'>The version installed is ".$existingversion."</span><br />"; 
    echo "<span style='color:red;text-align:center;'>The latest version is ".$latestversion."</span><br />";  

} else { 
    echo "<span style='color:green;text-align:center;'>You have the Latest version</span>"; 
} 
?> 
</div> 

Dies ist die XML-Datei in meinem Server-Datei, wo ich es aktualisieren, so dass meine Komponente Benutzer sehen kann, wenn sie meine Komponenten-Updates-Seite

<?xml version="1.0" encoding="utf-8"?> 
<updates> 
    <update> 
     <name><![CDATA[My Component]]></name> 
     <description><![CDATA[Download Component]]></description> 
     <element>pkg_mycomponent</element> 
     <type>package</type> 
     <client>0</client> 
     <version>1.1.1</version> 
     <infourl title="example.com">http://www.example.com</infourl> 
     <downloads> 
      <downloadurl type="full" format="zip">https://example.com/index.php?option=com_mycomponent</downloadurl> 
     </downloads> 
     <tags> 
      <tag>stable</tag> 
     </tags> 
     <maintainer><![CDATA[Amit Ray]]></maintainer> 
     <maintainerurl>http://www.example.com</maintainerurl> 
     <section>Testing</section> 
     <targetplatform name="joomla" version="3"/> 
    </update> 
</updates> 
+0

Danke, das funktioniert einwandfrei – Franky

+0

noch ein Problem: meine Update-XML und Update-Datei ist auf einer Website mit https, das scheint kein Problem, wenn ich lokal arbeiten. Dann funktioniert das Skript gut. Wenn ich das Skript auf einer Live-Site mit https ausprobiere, erhalte ich den Fehler, dass die XML-Datei von meiner Aktualisierungssite nicht gelesen werden konnte. Joomla hingegen zeigt das Update korrekt in der Update-Liste an. Könnte dieses Problem innerhalb des Skripts lösbar sein? – Franky

+0

@Franky In der '$ url = 'http: //example.com/downloads/mycomponent.xml';' verwenden Sie http oder https? Da Sie sagen, dass dies https ist, müssen Sie diese Variable in https ändern. Also sollte Ihre URL '$ url = 'https: //example.com/downloads/mycomponent.xml' sein;' –

Verwandte Themen