web-dev-qa-db-fra.com

Joomla artcle contenu mise à jour du travail de code Lire la suite pause ne fonctionne pas

J'utilise la version 3.6.5 de Joomla.

Dans l'article, nous pouvons ajouter le point de rupture En savoir plus pour la visualisation d'articles ou d'introtext dans le menu. Lorsque nous cliquons sur le bouton Lire plus en bas de la page, cela ajoute le code:

<hr id="system-readmore" />

Ça fonctionne bien. Mais mon problème est différent.

J'ai le contenu d'articles de tiers. Et j'ai un script php avec HTML et du contenu pour mettre à jour le contenu de l'article. Ce script est exécuté à partir du travail cron. J'ai également ajouté cette balise hr avec un autre contenu où je veux mettre un point d'arrêt.

Mais cela n’ajoute pas de texte Read More à mon menu intro text. Après l'exécution du travail cron, j'ai regardé dans le contenu de l'article cette balise est là. Et encore un point, comme je l’avais pensé, des changements de texte brisés s’appliqueraient en cliquant sur le bouton Lire plus, mais étrange! Sans rien changer si je sauve de nouveau l'article, il me montrera un texte Plus de détails dans le texte d'introduction du menu.

N'importe qui peut suggérer à partir de quel fichier ces modifications liées au point d'arrêt sont appliquées. Ou toute autre solution pour résoudre mon problème.

Une partie de mon script est ici:

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

Merci.

3
herr

Lorsqu'un article est enregistré, JTableContent (\ libraries\legacy\table\content.php) enregistre tout ce qui précède la balise readmore dans le champ introtext et tout ce qui suit (fulltext champ de la table de contenu. La balise elle-même n'est pas enregistrée dans la base de données.

Vous pouvez voir la structure de cette table ici: https://docs.joomla.org/Tables/content

Le code utilisé par Joomla pour diviser le contenu est le suivant:

// 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);
            }
        }

Ce code est exécuté sur save.

Je suppose que votre script écrit dans la base de données. Dans ce cas, vous devrez le mettre à jour pour renseigner les deux champs au lieu d’ajouter la balise readmore au champ de texte intégral.

2
Richard B