Language: 
To browser these website, it's necessary to store cookies on your computer.
The cookies contain no personal information, they are required for program control.
  the storage of cookies while browsing this website, on Login and Register.
Welcome, Guest. Please login or register.
Did you miss your activation email?


Login with username, password and session length

Select language:

Community



Donate

Donate for PortaMx !
Your donation is safe and helps support the issues and causes you care most about.

Stats

  • *Total Members: 4319
  • *Latest: thygrim

  • *Total Posts: 15781
  • *Total Topics: 2384
  • *Online Today: 3
  • *Most Online: 157
(27.08.09, 03:54:53)
  • *Users: 0
  • *Guests: 1
  • *Total: 1

Author Topic: Erstellen neuer Blöcke?  (Read 3067 times)

0 Members and 0 Guests are viewing this topic.

Offline D0ct0R_HaCkiE

  • Newbie
  • *
  • Posts: 41
    • D-ÖPNV
Erstellen neuer Blöcke?
« on: 10.03.11, 09:41:19 »
Hallo,

da mir die PHP-Blöcke auf Dauer etwas zu unhandlich geworden waren, hatte ich mit der alten PMX-Version 0.9x eigenständige Blöcke erstellt. Das funktionierte auch relativ einfach und ich war mit dem Ergebnis zufrieden.
Mit der aktuellen Version 1.x hat sich das Laden der Block-Typen etwas geändert, wodurch meine Anpassungen nicht mehr richtig funktionieren.

Ich habe heraus gefunden, daß sämtliche Blocktypen in der Datenbank gespeichert werden. Damit meine eigenen Blöcke nun fehlerfrei funktionieren, gibt es 2 Möglichkeiten:
- Anpassen der Laderoutine (PortaMx_getSettings)
- Erweitern des Blocktypen-Datensatzes in der Datenbank.

Die 2. Variante würde ich bevorzugen, da dies sauberer ist. Da aber durch Updates die LoadData.php überschrieben werden kann und ich auch nicht weiß, wie der Datensatz erstellt und aktualisiert wird, habe ich bedenken, daß meine Änderungen wieder überschrieben werden.

Ich hoffe, ihr könnt mein Anliegen halbwegs nachvollziehen und mir dabei weiterhelfen.

Vielen Dank schon mal...

Schöne Grüße
Doc

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5586
  • Gender: Female
Re: Erstellen neuer Blöcke?
« Reply #1 on: 10.03.11, 19:35:41 »
Deine analyse ist schon richtig .. die block typen sind in der DB gespeichert. Das haben wir gemacht um (in der Final version) einfacher neue block typen hinzufügen können, z.Z. ist das jedoch noch nicht möglich.

Jedoch gibt es (in der 1.0 RC4) eine "relativ" einfache möglichkeit neue block typen hinzuzufügen. Dazu müssen zwei Dateien geändert werden, und zwar die /Sources/PortaMx/AdminBlocks.php und die /Themes/default/PortaMx/AdminBlocks.template.php.

In der AdminBlocks.php kannst du deine block typen wie folgt hinzufügen.
Bei ~ Zeile 539 findest du dies:
Code: [Select]
// load template and languages, setup pagetitle
loadTemplate($context['pmx_templatedir'] .'AdminBlocks');
loadLanguage($context['pmx_templatedir'] .'AdminBlocks');
$context['pmx']['RegBlocks'] = eval($context['pmx']['registerblocks']);
$context['page_title'] = $txt['pmx_blocks'];
$context['pmx']['AdminMode'] = $admMode;

Dannach kanst du deine block typen wie folgt definieren:
Code: [Select]
$my_blocks = array(
'block_typename' => array(
'description' => 'My Block Description',
'blocktype' => $txt['pmx_userblock'],
'icon' => 'appl',
),
);
$context['pmx']['RegBlocks'] = array_merge($context['pmx']['RegBlocks'], $my_blocks);
ksort($context['pmx']['RegBlocks'], SORT_STRING);


Du kannst mehrere solcher arrays wie 'block_typename' verwenden, weitere einfach nach gleichem schema eintragen.
block_typename ist der dateiname(.php) der classen datei und zugleich name der classe und du must eine admin classe haben. Diese datei hat den dann den namen block_typename_adm.php. Aber ich denke das kennst du schon.
'description' ist eine kurze beschreibung des blocks, 'blocktype' und 'icon' solltest du nicht ändern.

Die Änderung in AdminBlocks.template.php ist einfach.
Bei ~ Zeile 177 findext du dies:
Code: [Select]
$RegBlocks = eval($context['pmx']['registerblocks']);
ksort($RegBlocks, SORT_STRING);

foreach($RegBlocks as $blocktype => $blockDesc)
echo '
<option value="'. $blocktype .'">'. $blockDesc['description'] .'</option>';

Das ganze ersetzen durch:
Code: [Select]
foreach($context['pmx']['RegBlocks'] as $blocktype => $blockDesc)
echo '
<option value="'. $blocktype .'">'. $blockDesc['description'] .'</option>';

So, das wars, nun sollten deine customer blöcke wieder laufen ...
Many are stubborn in relation to the path, a few in relation to the target.

Offline D0ct0R_HaCkiE

  • Newbie
  • *
  • Posts: 41
    • D-ÖPNV
Re: Erstellen neuer Blöcke?
« Reply #2 on: 10.03.11, 22:06:19 »
Guten Abend,

danke für die sehr aufschlußreiche Rückantwort. Eine Frage dazu aber noch: wird es später evtl. eine Möglichkeit geben, eigene Blöcke zu definieren bzw. auslesen zu lassen oder müsste ich damit leben, deine vorgeschlagenen Änderungen nach jedem PMX-Update zu wiederholen? Letztlich wäre das für mich kein Beinbruch, ich wöllte es nur wissen wollen :-)

Viele Grüße
Doc

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5586
  • Gender: Female
Re: Erstellen neuer Blöcke?
« Reply #3 on: 10.03.11, 22:16:05 »
Es wird eine möglichkeit geben, eigene blöcke zu definieren .. im prinzip das gleiche was du jetzt manuell machst.
Dafür wird es eine eigene Settings Seite geben (Customer Blocks), wo eben diese parameter eigetragen werden können.
Many are stubborn in relation to the path, a few in relation to the target.

Offline D0ct0R_HaCkiE

  • Newbie
  • *
  • Posts: 41
    • D-ÖPNV
Re: Erstellen neuer Blöcke?
« Reply #4 on: 19.02.12, 13:47:52 »
Hi,

inzwischen ist ja doch etwas Zeit vergangen und die Final-Version erschienen. Nur irgendwie finde ich das angekündigte Feature nicht (aktuell v1.41). Habt ihr diese Funktionalität verworfen oder kommt das später doch nochmal raus. Da sich das obige Problem bei mir wieder auftut, wäre es ganz interessant zu wissen, ob ich bis zum Release warten oder es doch manuell einrichten sollte...

Vielen Dank.

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5586
  • Gender: Female
Re: Erstellen neuer Blöcke?
« Reply #5 on: 19.02.12, 16:32:35 »
Das ist für ein späteres release geplant. Aber wir müssen erst mal abwarten was die neuen SMF versionen (2.1, 3.0) bringen.
Many are stubborn in relation to the path, a few in relation to the target.