web-dev-qa-db-ja.com

コードジョブからのJoomla記事コンテンツの更新続きを読む

Joomla 3.6.5バージョンを使用しています。

記事では、記事のブログビューまたはメニューのイントロテキストに続きを読むブレークポイントを追加できます。ページの下部にある[もっと読む]ボタンをクリックすると、コードが追加されます。

<hr id="system-readmore" />

正常に動作しています。しかし、私の問題は異なります。

第三者からの記事の内容があります。また、記事のコンテンツを更新するためのHTMLとコンテンツを含むphpスクリプトがあります。そのスクリプトはcronジョブから実行されます。また、このhrタグを、ブレークポイントを配置したい他のコンテンツと共に追加しました。

しかし、これは私のメニューの紹介テキストに続きを読むテキストを追加しません。 cronジョブの実行後、記事のコンテンツを調べたところ、このタグがあります。さらにもう1つ、[もっと読む]ボタンをクリックするとテキストの区切りが変わる可能性があると思いましたが、奇妙です!記事をもう一度保存しても何も変更せずに、メニューの紹介テキストに「もっと読む」のテキストが表示されます。

誰でも、このブレークポイントに関連する変更がどのファイルから適用されるかを提案できます。または私の問題を解決するための他の解決策。

私のスクリプトの一部はここにあります:

$dircontents = "<div>Lorem Ipsum is simply dummy text of the printing and typesetting industry.<hr id=\"system-readmore\" /></div>";

ありがとう。

3
herr

記事が保存されると、JTableContent(\ libraries\legacy\table\content.php)は、readmoreタグの前のすべてをintrotextフィールドに保存し、その後のすべてをfulltextに保存しますコンテンツテーブルのフィールド。タグ自体はデータベースに保存されません。

そのテーブルの構造は次の場所で確認できます。 https://docs.joomla.org/Tables/content

Joomlaがコンテンツを分割するために使用するコードは次のとおりです。

// Search for the {readmore} tag and split the text up accordingly.
        if (isset($array['articletext']))
        {
            $pattern = '#<hr\s+id=("|\')system-readmore("|\')\s*\/*>#i';
            $tagPos = preg_match($pattern, $array['articletext']);

            if ($tagPos == 0)
            {
                $this->introtext = $array['articletext'];
                $this->fulltext = '';
            }
            else
            {
                list ($this->introtext, $this->fulltext) = preg_split($pattern, $array['articletext'], 2);
            }
        }

このコードは保存時に実行されます。

スクリプトがデータベースに書き込んでいると想定します。その場合、readmoreタグをフルテキストフィールドに追加するのではなく、2つのフィールドに入力するようにスクリプトを更新する必要があります。

2
Richard B