Moin Moin,
ich würde gerne zur besseren Sichtbarkeit in der mobilen App einige Namen dynamisch anpassen.
Mit
$ID=(IPS_GetParent($_IPS['SELF']));
$state=GetValue($ID);
if ($state==0)
IPS_SetName($ID ,("MRS Radio"));
#...
geht das gut, wenn ich das Skript immer unter die betroffene Variable lege.
Nun arbeiten wir im WebFront aber mit Links …
Wie kann ich denn die (tw. mehrfachen) Links zum Objekt (im Skript) „finden“ und auch deren Namen dann gleich ‚automatisch‘ mit ändern?
Wunderbar, Niels. Ich habe es auf derzeit 341 Bäume reduziert
Hilf einem (immer noch) PHP-Dummy auf die Sprünge … wie prüfe ich das? Die Auswertung von arrays ist nicht wirklich mein Fachgebiet
$objectID = 12345; // ID des Objekts zu dem du die Links finden möchtest
// Gehe über alle Links
foreach (IPS_GetLinkList() as $linkID) {
// Hol dir die Daten zum Link
$link = IPS_GetLink($linkID);
// Zeigt der Link auf $objectID?
if ($link['TargetID'] == $objectID) {
// Bearbeite den Link, ganz so wie du es möchtest
}
}
Ich muss hier noch mal danke sagen
Mit etwas Hilfe von Christoph konnte ich sogar noch mehr raus holen - der Code von Niels hat mir aber sehr zum Verständnis geholfen.
Daraus geworden ist dann dieses (hilft ja vielleicht auch anderen)
// das Skript muss unterhalb der TargetID liegen, dann werden die passenden ID automatisch geholt, das Skript "versteckt" sich nach dem ersten ausführen
# Texte anpassen
$TextON = "... ist an";
$TextOFF= "... ist aus";
#####
$ID = IPS_GetParent($_IPS['SELF']);
IPS_SetHidden(($_IPS['SELF']), TRUE);
$state = GetValue($ID);
foreach (IPS_GetLinkList() as $linkID){
$link = IPS_GetLink($linkID);
if (($link['TargetID'] == $ID)and($state==0)) {
IPS_SetName($link['LinkID'] ,($TextOFF));
}
if (($link['TargetID'] == $ID)and($state==1)) {
IPS_SetName($link['LinkID'] ,($TextON));
}
}