web-dev-qa-db-ja.com

生成されたJoomlaヘッドの変更(<jdoc:include type = "head" />)

Joomla Webサイト3.9.13で生成された<head>を変更しようとしています。残念ながら、有名な<jdoc:include type="head" />に直面しました。どうすれば修正できますか?

これがデータベースまたはphpファイルから構築されている場合、参照を見つけることができませんでした。

[〜#〜]更新[〜#〜]

ソースコードにはそれがあります

<!-- JDOC HEAD-->
<jdoc:include type="head" />
<!-- JDOC HEAD-->

ソースを表示することは

<!-- JDOC HEAD-->
<base href="https://xxxxx.gr/" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="PanosK2" />
<meta name="rights" content="PanosK5" />
<meta name="author" content="PanosK4" />
<meta name="xreference" content="PanosK6" />
<meta name="description" content="PanosK1" />
<title>Φωτο</title>
<link href="/templates/tmpl/favicon.ico" rel="shortcut icon" type="image/vnd.Microsoft.icon" />
<link href="https://xxxxx.gr/anazitisi?id=1&amp;format=opensearch" rel="search" title="Αναζήτηση" type="application/opensearchdescription+xml" />
<link href="https://xxxxx.gr/media/com_uniterevolution2/assets/rs-plugin/css/settings.css" rel="stylesheet" type="text/css" />
<link href="https://xxxxx.gr/media/com_uniterevolution2/assets/rs-plugin/css/dynamic-captions.css" rel="stylesheet" type="text/css" />
<link href="https://xxxxx.gr/media/com_uniterevolution2/assets/rs-plugin/css/static-captions.css" rel="stylesheet" type="text/css" />
<script src="/media/system/js/html5fallback.js" type="text/javascript"></script>
<!-- JDOC HEAD-->

たとえば、最後の行を作成する拡張子(またはphpファイル)を見つけるにはどうすればよいですか?

2
Panos

「HtmlDocument」オブジェクトを取得します。

$doc = JFactory::getDocument();
// echo "<br><pre>"; print_r($doc); echo "</pre>"; // to check what you have here

ヘッドデータのみを取得できます。

$headData = $doc->getHeadData();
$Title = $doc->getTitle();

次のものを設定できます。

$doc->setHeadData(array $data);
$doc->setTitle('my title');

そして、このクラスで実行できるすべてのことをここで見ることができます: https://api.joomla.org/cms-3/classes/Joomla.CMS.Document.HtmlDocument.html

そしてここ: https://api.joomla.org/cms-3/classes/Joomla.CMS.Document.Document.html

編集:

あなたの質問の更新された部分について:Joomlaでは、そのスクリプトを削除する限り、頭にスクリプトを追加している拡張機能を実際に知る必要はありません問題は発生しません。そして、私があなたのケースで見るように、あなたはあなたのサイトの<head>からそのスクリプトを削除することに決めました。また、あなたのエキスパートレベルPHPとJoomlaも知りません。したがって、ここで2つのアプローチを提供したいと思います。

まず、最も単純なで、より真面目なJoomla開発者には推奨されない少しハックなソリューションと、それが推奨されない理由は、主に数行を記述するためですテンプレートのindex.phpファイルに直接。テンプレートが更新される場合、追加された数行のコードもテンプレートの更新によって削除されます。しかし、おそらくあなたは現時点ではこれについて気にせず、テンプレートの更新が発生した後でも、必要に応じてこれらの数行をindex.phpファイルに再度コピーすることができます。

したがって、PHPコードのこれらの数行をテンプレートのindex.phpファイルの行の直後に配置します:<jdoc:include type="head" />

if (isset($this->_scripts['/media/system/js/html5fallback.js'])) {
    unset($this->_scripts['/media/system/js/html5fallback.js']);
}

これにより、<head>にロードされている不要なスクリプトが削除されます。

今、これらの種類のタスクの2番目の標準Joomlaソリューションは、Joomlaシステムプラグインイベントの場合:'onBeforeCompileHead'どのイベントがトリガーされるかは、JoomlaのHeadRenderer.phpファイルでトリガーされます。 。 (Joomlaでのファイルの場所:libraries/src/Document/Renderer/Html/HeadRenderer.php

数週間前に、ここの誰かがこの種のプラグインの良い例を示したので、ここでこれら2つの投稿を少し調べただけで自明なので、そのプラグインのコード例は繰り返さないことにします。

システムプラグインの例:onAfterRenderプラグインはバックエンドでのみトリガーされます

そして、プラグインで使用する必要があるこの投稿の回答のプラグインコード部分と、これまたは非常によく似たものを使用して、頭から何かを削除できますプラグインコード:

JoomlaのフロントエンドからBootstrapを完全に削除するにはどうすればよいですか?

私はここにこのプラグインの肉をコピーします:

class plgSystemYourPlugin extends JPlugin
{
    public function onBeforeCompileHead()
    {

        $doc = JFactory::getDocument();

        // Remove the unwanted script
        if (isset($doc->_scripts['/media/system/js/html5fallback.js'])) {
            unset($doc->_scripts['/media/system/js/html5fallback.js']);
        }

    }
}

このプラグインは、実際には非常に高速に作成できます。作成したい場合は、ここでさらに詳しく学習できます: https:/ /docs.joomla.org/J3.x:Creating_a_Plugin_for_Joomla

上記がお役に立てば幸いです。

2
Zollie

JoomlaにはHTMLHelperクラスがあり、目的に応じてヘッドに多くの変更を加えることができます。そのメソッドを直接使用するか、HTMLDocumentクラスを使用してそれらにアクセスできます。

例:

HTMLDocument

  • addHeadLinkを使用すると、生成されたヘッドにリンク要素を追加できます。
  • addCustomTagを使用すると、任意のHTML文字列をヘッドに追加できます
  • addFaviconでファビコンリンクを追加できます

ドキュメント(HTMLDocumentはこれから継承)

  • addScriptおよびaddScriptDeclaration add javascripts
  • addStylesheetおよびaddStyleDeclarationはCSSを追加します
  • setCharsetは文字セットを設定します
  • setLangは言語を設定します
  • setTitleはドキュメントのタイトルを設定します

あなたが何をしようとしているのかを知らなければ、良い答えを出すのは難しいですが、とにかくあなたが目的に向かって始められることを願っています。これが役に立たない特定のことをしたい場合は、戻って質問を詳細に編集してください。

0
Arlen