web-dev-qa-db-fra.com

Extraction du paramètre XML dans le fichier PHP

J'essaye de créer mon premier plugin! Cependant, je souhaite que l'utilisateur puisse définir un nombre qui sera ensuite utilisé dans des parties spécifiques du plug-in. Ce plugin se compose uniquement d'un fichier XML et d'un fichier php. Comment pourrais-je extraire ce paramètre spécifique du fichier XML qui a été soumis par l'utilisateur, puis l'utiliser dans PHP?

Voici le XML ci-dessous.

<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="1.0.5" method="upgrade" group="content">
<name>Content - Article Title Truncator</name>
<creationDate>2016-01-16</creationDate>
<version>1.0.5</version>
<releaseDate>2016-01-16 07:08:00</releaseDate>
<releaseType>First public release!</releaseType>
<author>Michael Baas / Jesse Humphry</author>
<authorEmail>[email protected]</authorEmail>
<authorUrl>http://www.geeksgamers.com</authorUrl>
<copyright>(c) 2016 Jesse Humphry</copyright>
<description>This plugin has been adapted from a code publically released on
    stackoverflow.com by Michael Baas in 2013. It has been adapted for 
    Joomla 3.x and given a back-end option for selection of character limit.
</description>
<files>
<filename plugin="Article Title Truncator">foo.php</filename>
</files>
<config>
<fields name="params">
    <fieldset name="Basic">
    <field name="Character Limit" type="text" default="25" filter="integer" maxlength="5" label="Character Limit">
    </field>
    </fieldset>
</fields>
</config>
</extension>

Et voici le fichier PHP.

<?php

class plgContentFoo extends JPlugin
    {
    public function onContentPrepare($context,$article,$params,$limitstart)
    {

    $view = JRequest::getCmd('view');
    $fp = in_array($view,array("featured","addmore"));

        if ($fp && 34<strlen($article->title)) {
            $article->title = trim(substr($article->title,0,31)) . "...";
            return true;
        }
    }


}

?>

J'ai besoin d'obtenir ce qui est entré dans le champ "Limite de caractères" du formulaire XML et de l'utiliser à la place du premier entier de la forme PHP. Maintenant, je suis novice dans ce domaine, donc Soyez gentil s'il vous plait.

4
Jesse Humphry

Premièrement, vous devriez toujours utiliser une seule chaîne pour l'attribut name. S'il y a plusieurs mots, il est préférable de séparer les caractères par un soulignement et de toujours s'assurer que tous les caractères sont en minuscules pour éviter toute confusion.

Donc dans votre cas, remplacez:

name="Character Limit"

avec:

name="character_limit"

Remarque: Toute modification de paramètre XML effectuée lors de l'installation du plug-in nécessite que vous "sauvegardiez" cette opération.


Vous pouvez ensuite simplement appeler la valeur du paramètre comme suit:

$value = $this->params->get('character_limit', 50);

Le deuxième argument (50) n'est qu'un exemple et est utilisé comme valeur par défaut si aucune valeur n'a été spécifiée par l'utilisateur.

J'espère que cela t'aides


Oh, et en passant, vous avez étiqueté cette question sous le nom de Joomla 3.x. Par conséquent, JRequest que vous utilisez dans votre code est obsolète. Au lieu de cela, utilisez Jinput et un exemple peut être vu ici

Et version="1.0.5" en haut de votre XML devrait être la version de Joomla, pas la version de votre plugin;)

2
Lodder