いくつかのJSをロードしたいのですが、必要なページだけにロードします。
アクティブな記事のエイリアスを使用してそれを特定しようとしています。
Component.phpファイルの私のコードは次のとおりです。
$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;
<head>のこの部分:
if ($alias == "elearning")) { ?>
<script src="/media/system/js/ddslick.js" type="text/javascript"></script>
<?php } ?>
動作しないようです。
私が間違っている提案はありますか?
記事のエイリアスについて話している場合は、コンテンツモデルを呼び出すか、データベースから読み取ります。
URLのエイリアスについて話している場合、それを取得するのは簡単ではありません。Joomlaには、エイリアスを生成する方法がたくさんあります。
そして、これはエイリアスの最後のセクションです。最初の部分(または「パス」)は、記事に移動するナビゲーションによって異なります。
これがいかに複雑であるかを理解するために、メインストリームのSEF拡張機能は、フロントエンドを呼び出してエイリアスを取得します。バックエンドでエイリアスを生成することが信頼できないことが明らかにわかったためです。
結論:エイリアスを忘れます。
これを回避する方法:$ input = JFactory :: getApplication()-> input;
これがあなたの質問に答えることを願っています。
1つの可能性は、レイアウトを少し変更して、より多くのテンプレートコントロールを許可することです。これは、記事のエイリアスの取得とは直接関係ありませんが、別の方法です。
これを行うには、このフィールドを_templateDetails.xml
_ファイル内に追加します
_<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>
_
オプションは必要なだけ追加できます。例として2つあります。これにより、テンプレートマネージャーに設定が作成されます。テンプレートマネージャーでテンプレートを開くと、その設定も変更できるはずです。重要なのは、現在のテンプレートをメインのままにして、テンプレートを複製することです(ファイルのみではなく、設定のみを複製します)。この2番目のテンプレートでは、HTMLレイアウトを変更し、「メニューの割り当て」タブを使用して、どのページでそれを使用できるかを指定できます。したがって、記事のエイリアスの場合、記事にメニュー項目が関連付けられている限り(ほとんどの場合、同じエイリアスで)、そのテンプレートを指定されたエイリアス(およびその他すべて)に割り当てるのはかなり簡単です。
したがって、基本的には、特定のページでのみ使用するように指定されたテンプレートがあります。
ただし、これには_index.php
_の編集も必要です。
次のコードをファイルの先頭の最初のphpブロック内に追加します。
$htmllayout = $this->params->get('htmllayout');
次に、特別なレイアウトに別の何かを指定する必要がある場合は、次の手順を実行します。
_<?php if($htmllayout=='LAYOUTNAME'): ?>
anything you need here
<?php endif; ?>
_
特定のページにのみjsをロードしたい場合は、jumiを使用してみてください。それは私にとってはおかしい。 http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content/102