it-swarm.com.de

Welche Methode ist die richtige, um den Alias ​​der aktiven Seite abzurufen?

Ich möchte einige JS laden, aber nur auf der Seite, auf der es benötigt wird.

Ich versuche, den Alias ​​des aktiven Artikels zu verwenden, um das zu bestimmen.

Mein Code in der component.php-Datei ist:

   $path = &JFactory::getURI()->getPath();
   $length = strlen($path);

   for ($i = $length; $i >= 0 ; $i--)
         if ($path[$i] == '/')
            return substr($path, $i + 1, $length - $i - 1);

   $alias = $path;

und dieser Teil im <head>:

if ($alias == "elearning")) { ?>
    <script src="/media/system/js/ddslick.js" type="text/javascript"></script>
<?php } ?>

Scheint einfach nicht zu funktionieren.
Irgendwelche Vorschläge, wo ich falsch liege?

6
BodgeIT

Eine Möglichkeit besteht darin, das Layout geringfügig zu ändern, um mehr Vorlagensteuerelemente zu ermöglichen. Dies hängt nicht direkt mit dem Abrufen des Alias ​​des Artikels zusammen, sondern mit einem anderen Ansatz.

Fügen Sie dazu dieses Feld in die Datei templateDetails.xml Ein

<field name="htmllayout" type="list" default="center"
    label="HTML Layout"
    description="Dynamic layout style from index.php"
    filter="Word"
>
    <option value="main">main</option>
    <option value="raw">Raw</option>
</field>

Sie können so viele Optionen hinzufügen, wie Sie benötigen, ich habe 2 als Beispiel. Dadurch wird eine Einstellung im Vorlagenmanager erstellt. Wenn Sie die Vorlage im Vorlagen-Manager öffnen, können Sie auch diese Einstellung ändern. Der Schlüssel ist, die aktuelle Vorlage auf main zu belassen und dann die Vorlage zu duplizieren (Es werden nur die Einstellungen dupliziert, nicht die Dateien). In dieser zweiten Vorlage können Sie das HTML-Layout ändern und auf der Registerkarte "Menüzuordnung" festlegen, auf welcher Seite es verwendet werden darf. Im Fall eines Alias ​​eines Artikels sollte es daher ziemlich einfach sein, diese Vorlage dem angegebenen Alias ​​(und allen anderen) zuzuweisen, solange dem Artikel ein Menüelement zugeordnet ist (höchstwahrscheinlich mit demselben Alias).

Im Grunde genommen haben Sie eine Vorlage, die nur für bestimmte Seiten bestimmt ist.

Dies erfordert jedoch auch einige Änderungen an index.php.

fügen Sie Folgendes am Anfang der Datei im ersten PHP-Block hinzu:

$htmllayout = $this->params->get('htmllayout');

Führen Sie dann an jeder Stelle, an der Sie für ein spezielles Layout etwas anderes angeben müssen, die folgenden Schritte aus:

<?php if($htmllayout=='LAYOUTNAME'): ?>
anything you need here
<?php endif; ?>
1
Jordan Ramstad

Wenn Sie über den Artikelalias sprechen, rufen Sie das Inhaltsmodell auf oder lesen Sie es aus der Datenbank.

Wenn Sie über den Alias ​​in der URL sprechen, ist es nicht einfach, ihn zu erhalten: Joomla hat so viele Möglichkeiten, ihn zu generieren: Es wird anders sein, wenn Sie zum Artikel kommen:

  • über ein Blog oder eine Kategorieliste wird es auf dem Artikel-Alias ​​basieren;
  • über einen direkten Menüeintrag wird er auf dem Alias ​​des Menüeintrags basieren.
  • durch eine Suche entscheidet Joomla;
  • sie haben eine SEF-Erweiterung? Sie machen Ihre eigenen Regeln

Und dies ist nur für den letzten Abschnitt des Alias. Der erste Teil (oder "Pfad") hängt von der Navigation ab, die Sie zum Artikel geführt hat.

Um Ihnen eine Vorstellung davon zu geben, wie komplex dies ist, ruft eine Mainstream-SEF-Erweiterung das Frontend auf, um den Alias ​​zu erhalten, da sie offensichtlich herausgefunden hat, dass es nicht zuverlässig ist, einen Alias ​​im Backend zu generieren.

Fazit: Alias ​​vergessen.

Möglichkeiten, dies zu umgehen: $ input = JFactory :: getApplication () -> input;

  • Verwenden Sie die Menüpunkt-ID: $ input-> get ('Itemid');
  • Verwenden Sie den Namen der Komponente/Ansicht: $ input-> get ('option'). '.' . $ input-> get ('view') ;;
  • Verwenden Sie die Artikel-ID: $ input-> get ('id'); (überprüfen Sie jedoch, ob option = com_content & view = article)

Hoffe das beantwortet deine Frage.

1
Riccardo Zorn

Wenn Sie ein js nur auf bestimmten Seiten laden möchten, versuchen Sie es mit jumi. Dieser Wokerd für mich. http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content/102

0
Eva Farkasne