8 zweirädrige MODX Revolution-Spitzen

Ich habe vor nicht allzu langer Zeit mit MODX Revolution gearbeitet, aber im Moment ist es für mich trotzdem eine CMS-Perle. Flexibilität, Erweiterbarkeit und Intuitivität (Wenn Sie den unglücklichen MODX Manager für einen Moment vergessen), ist alles so attraktiv wie am Anfang.
Nachfolgend finden Sie die Notizen, die ich während der Arbeit mit MODX Revolution im letzten Jahr gemacht habe. Diese einfachen Tricks würden mir unglaublich viel Zeit sparen, wenn ich vorher davon gewusst hätte. Die Zielgruppe für diese Notizen sind Neulinge, die erst kürzlich herausgefunden haben, was MODX ist. Frank "Fahrräder", aus Respekt für Sie, nicht in die Notizen aufgenommen.

1. Vereinfachung der Arbeit mit MODX Manager


Mit der Zunahme des Projektvolumens kann die Bereitstellung des Ressourcenbaums beim Laden des Managers genauso lange dauern, wie es ausreicht, um Ihre Psyche zu erschüttern. Reduzieren Sie die Kategorien und Kontexte, in denen Sie gerade nicht arbeiten. Wenn Sie zu einer neuen Seite wechseln, wird in der Ressourcenstruktur nur das angezeigt, was Sie erweitert haben.

Eine andere Sache, die sich sehr negativ auf die Leistung auswirkt, sind die RSS-Feeds auf der Homepage des Managers, die über neue Versionen und Sicherheitsupdates berichten. Behinderte wie folgt: die System -> das System der Einstellungen -> die MODX Nachrichten des Enabled - Feed / die MODX Sicherheit des Enabled - Feed -> Nein .

2. Übergeben von Parametern an das Snippet


Angenommen, Sie haben ein Snippet namens Monkeys , das die häufigste Zeile auf der Seite anzeigt:

echo $howMany. ' ' .'Monkeys';


Sie müssen dieses Spippet auf mehreren Seiten mit unterschiedlichen Werten der Variablen $ howMany anzeigen . Das geht ganz einfach:

[[Monkeys?&howMany=`12`]]


So können Sie beispielsweise in ein Snippet übertragen, wenn Sie über die dafür erforderliche Logik verfügen, in welcher Sprache Sie den Inhalt anzeigen möchten.

3. Rufen Sie MODX in einer statischen PHP-Datei auf


Falls Sie das Snippet nur für die statische Datei include / require_once verwenden, funktioniert die vorherige Methode weiterhin wie erwartet. Aber was ist, wenn Sie das $ modx-Objekt selbst verwenden müssen? Nehmen Sie zum Beispiel einen Seitentitel einer bestimmten Ressource auf? Alles ist auch sehr elementar:

require_once '/var/www/config.core.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');


Jetzt können Sie so viel verwenden, wie Sie möchten:

$resource = $modx->getObject('modResource', $modx->resourceIdentifier);
$pagetitle = $resource->get('pagetitle');


3. Wechseln Sie den Kontext nach Domäne


Im obigen Empfang blinkte eine Zeile:

$modx->initialize('web');


Dies ist die Initialisierung des Standardkontexts, in dem alle oben genannten Funktionen ausgeführt werden. Was aber, wenn es mehrere Kontexte gibt und jeder aus seiner eigenen spezifischen Domäne angezeigt werden soll? Einfach!

switch ($_SERVER['HTTP_HOST']) {
    case 'domainOne.com':
    $modx->initialize('web');
    break;
    case 'domainTwo':
    $modx->initialize('two');
    break;
    case 'domainThree':
    $modx->initialize('three');
    break;
    default:
    $modx->initialize('web');
    break;
}


Dieser Schalter muss entweder im Plugin, beim OnHandleRequest- Ereignis oder etwas "früher" am Ende von index.php ausgeführt werden, was vielleicht niemandem, der jetzt lebt, raten wird.

4. Wechseln Sie nach Kontext


Wenn Sie Ihren Code für jeden der Kontexte "diversifizieren" müssen, können Sie Folgendes verwenden:

if($modx->context->get('key') != "mgr"){
    switch ($modx->context->get('key')) {
        case 'web':
        $howMany = 3;
        break;
        case 'two':
        $howMany = 8;
        break;
        case 'three':
        $howMany = 12;
        break;
        default:
        $howMany = 12;
        break;
    }
}
echo $howMany. ' ' .'Monkeys';


Die if- Bedingung ($ modx-> context-> get ('key')! = "Mgr") verhindert , wie Sie vielleicht vermutet haben, dass Code direkt im Manager ausgeführt wird.

5. Kontexteinstellungen


Eine andere Möglichkeit, Inhalte in vorhandenen Kontexten zu variieren, besteht darin, Ihre Einstellungen anzupassen. Öffnen Sie den gewünschten Kontext und wechseln Sie zur Registerkarte " Kontexteinstellungen" . Nach dem Drücken Erstellen Sie die neue , wählen Sie Key , und dementsprechend den Wert . Der von Ihnen erstellte Schlüssel wird im Dokument / Block wie folgt aufgerufen:

[[!++Key]]


6. Wir rufen im Kontext den benötigten Chunk auf, ohne separate Einstellungen vorzunehmen


Die bisherige Methode ist natürlich gut, aber was ist, wenn wir je nach Kontext nur unterschiedliche Stücke benötigen? Der [[* context_key]] - Schlüssel , der den Namen des aktuellen Kontexts zurückgibt, ist in dieser Hinsicht sehr nützlich . Erstellen Sie beispielsweise zwei Blöcke : Footer_Web und Footer_One , wobei Web und One die Kontextnamen sind. Rufen Sie sie jetzt auf der Seite / in der Vorlage auf:

[[$Footer_[[*context_key]]]]


7. modMail


modMail ist eine durch modPHPMailer erweiterbare Klasse. Standardmäßig ist es in MODX integriert und wird wie folgt verwendet:

$message = $modx->getChunk('myEmailTemplate');
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'me@example.org');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Johnny Tester');
$modx->mail->set(modMail::MAIL_SUBJECT,'Check out my new email template!');
$modx->mail->address('to','user@example.com');
$modx->mail->address('reply-to','me@xexample.org');
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
	$modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();


* Auszug aus amtlichen Unterlagen .

8. Vom Snippet zum Chunk


Im obigen Beispiel wird der Block myEmailTemplate als Vorlage für unsere E-Mail verwendet. Wenn Sie in dem Brief beispielsweise den aus dem Formular erhaltenen Benutzernamen anzeigen müssen, gehen Sie wie folgt vor:

$Username = $_POST['Username'];
$message = $modx->getChunk('myEmailTemplate', array(
   'username' => $Username,
));


Daher übergeben wir den Benutzernamen an unseren myEmailTemplate-Block . Wir bekommen es in einem Stück, auf diese Weise:

Username: [[+username]]



Das ist alles für heute. Wenn sich jemand für solche Notizen interessiert, bin ich gerne bereit, sie fortzusetzen. Danke für die Aufmerksamkeit.

Jetzt auch beliebt: