Content PID abfragen

Begonnen von susoft, 04 März 2017, 12:17:14

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

susoft

Hallo zusammen,
gibt es eine Möglichkeit in einem Block die PID des aktuellen Contens abzufragen?

Also eine Erweiterung des -> if (!defined('MX_MODULE') || MX_MODULE != 'Content')
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

du kannst über die $_GET-Variablen auf diese Werte zugreifen...
in $_GET['pid'] steckt die ID, die du brauchst
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

susoft

Vielen Dank, passt

Grüsse aus der Zentralschweiz
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

susoft

Zitat von: Olaf am 04 März 2017, 17:06:49
du kannst über die $_GET-Variablen auf diese Werte zugreifen...
in $_GET['pid'] steckt die ID, die du brauchst
Hallo, ist es möglich, dass dieses hier nichts mehr funktioniert, gibt es da eine neue Variante?
Problem siehe Bilder im Anhang

Grüsse aus der Zentralschweiz
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

Was ist das für ein Block und was soll der tun ?
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

susoft

Zitat von: Olaf am 13 Oktober 2021, 22:27:58
Was ist das für ein Block und was soll der tun ?
Hallo Olaf, diese Blöcke fragen ab welches Modul das aktiv ist und werden dann je nach Modul angezeigt oder nicht.
Gut zu sehen auf der aktiven Homepage (noch unter php 5.x) https://nsv-ski.ch (einfach oben das Menu wechseln) dann sieht man das.
Gruss aus der Zentralschweiz
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

nach der Fehlermeldung wird keine PID per $_GET übergeben. Also solltest du noch zusätzlich testen, ob $_GET['pid'] gesetzt ist. mit array_key_exists oder empty etc. je nach dem, was Sinn macht.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

susoft

Zitat von: Olaf am 14 Oktober 2021, 11:40:09
nach der Fehlermeldung wird keine PID per $_GET übergeben. Also solltest du noch zusätzlich testen, ob $_GET['pid'] gesetzt ist. mit array_key_exists oder empty etc. je nach dem, was Sinn macht.
Danke Olaf, ich werde das Anfangs nächste Woche anschauen, das problem ist aber, dass es auf dem alten Server funktionier ohne Probleme, wie du auch im URL sehen kannst, nur auf dem neuen mit PHP 7 habe ich das problem.

Melde mich wieder
Andreas
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

ab PHP7 werden zum Teil andere Fehlermeldungen aktiv. z.bsp. werden nicht vorhandene Keys in arrays genau mit dieser Fehlermeldung quittiert. Also kommst du nicht um diese Abfragen umhin. Geändert hat sich also PHP, nicht pragma. Wir haben auch an eine Unmasse an Stellen im core genau diese Problematik gehabt und den Code entsprechend anpassen müssen. Ist eine Fleissarbeit, muss aber sein.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

susoft

Zitat von: Olaf am 14 Oktober 2021, 12:52:00
ab PHP7 werden zum Teil andere Fehlermeldungen aktiv. z.bsp. werden nicht vorhandene Keys in arrays genau mit dieser Fehlermeldung quittiert. Also kommst du nicht um diese Abfragen umhin. Geändert hat sich also PHP, nicht pragma. Wir haben auch an eine Unmasse an Stellen im core genau diese Problematik gehabt und den Code entsprechend anpassen müssen. Ist eine Fleissarbeit, muss aber sein.
Hallo Olaf, bin noch nicht so richtig dazu gekommen, viel zu tun. Eine Frage habe ich aber schon, die PID, gibt es diese Variable noch oder hat sich da etwas geändert, für die Abfrage, welches Modul das aktiv ist?
Auf alle Fälle auch schon mal wieder, vielen Dank für deinen immer schnellen und kompetenten Support.
Grüsse aus der Zentralschweiz
Andreas
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

- um abzufragen welches Modul gerade aktiv ist, ist die Konstante PMX_MODULE zu nehmen. In dieser steht der aktuelle Modulname.
- Um zu testen, ob die Home-Seite aufgerufen ist, testen, ob if (MX_HOME_FILE == true ) ist
- um zu testen, ob ein bestimmtes Modul aktiv ist, testen auf mxModuleActive("modulname") = true
- um zu testen, ob das Modul aktiv ist, worin sich mein Block befindet :
    if (mxModuleActive(basename(dirname(dirname(__FILE__)))) {
      /* mein Code hier */
   }


oder besser
   
$module_name=basename(dirname(dirname(__FILE__)));
if (!mxModuleAllowed($module_name) or $module_name != MX_MODULE) {
      $mxblockcache=false;
      return;
   }


Wenn sich der Block in "modules/meinmodul/blocks" befindet

Auch zu sehen, in den neuen Blocken bei Documents: z.Bsp. block-Documents-related-News-short.php
Da wird diese Technik auch eingesetzt.
     
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

susoft

Zitat von: Olaf am 20 Oktober 2021, 10:40:19
- um abzufragen welches Modul gerade aktiv ist, ist die Konstante PMX_MODULE zu nehmen. In dieser steht der aktuelle Modulname.
- Um zu testen, ob die Home-Seite aufgerufen ist, testen, ob if (MX_HOME_FILE == true ) ist
- um zu testen, ob ein bestimmtes Modul aktiv ist, testen auf mxModuleActive("modulname") = true
- um zu testen, ob das Modul aktiv ist, worin sich mein Block befindet :
    if (mxModuleActive(basename(dirname(dirname(__FILE__)))) {
      /* mein Code hier */
   }


oder besser
   
$module_name=basename(dirname(dirname(__FILE__)));
if (!mxModuleAllowed($module_name) or $module_name != MX_MODULE) {
      $mxblockcache=false;
      return;
   }


Wenn sich der Block in "modules/meinmodul/blocks" befindet

Auch zu sehen, in den neuen Blocken bei Documents: z.Bsp. block-Documents-related-News-short.php
Da wird diese Technik auch eingesetzt.
     
Hallo Olaf, vielen Dank für die Informationen, jetzt muss ich nur noch die Zeit finden das zu änern
Bis bald mal
Andreas
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

susoft

Zitat von: susoft am 20 Oktober 2021, 15:43:04
Hallo Olaf, vielen Dank für die Informationen, jetzt muss ich nur noch die Zeit finden das zu änern
Bis bald mal
Andreas
Hallo Olaf, dass ganz passt perfekt und funktionier.
Jetzt müsste ich nur noch wissen, wie es sich mit der "alten" Variable $apid verhält, da habe ich noch dasselbe Problem, mit dieser Variable könnte man bisher die Nummer des Content auslesen.

Grüsse aus der Zentralschweiz
Andreas
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

keine Ahnung wo dieses $apid herkommen soll.....
wenn du das Modul "Content" meinst, dann heist diese Variable $pid und ist global verfügbar im Code.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

susoft

Zitat von: Olaf am 22 November 2021, 18:33:35
keine Ahnung wo dieses $apid herkommen soll.....
wenn du das Modul "Content" meinst, dann heist diese Variable $pid und ist global verfügbar im Code.
Hallo Olaf, mit $apid konnte ich bis jetzt abfragen, welcher content, vom content Modul angezeigt wird. Ich habe dir den Block mit der Abfrage mal angehängt
PMx 2.7.1 | PHP: 7.4.29 | 10.5.11-MariaDB-1:10.5.11 | Apache

Olaf

also
$pid=$_GET['pid']; holt die PID vom Content-Modul. $apid gibt es da schon lange nicht mehr....

nun musst du aber auch nachsehen, ob PID überhaupt gesetzt wurde.

if (array_key_exists('pid',$_GET)) {
$pid=$_GET['pid'];
} else {
$pid=0;
}

wenn also $pid=0 dann ist es die Startseite vom Content-Modul. Wenn pid >0 dann ist es die id des Inhaltes.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!