Fiche Produit créer des champs personnalisés
Bonjour,
J'ai des articles ( des fiches produits) classés dans des categories et sous-catégories.
Lors de l'édition ou la création de ces articles, j'aurai souhaité disposé de champs personnalisés pour les saisir dans l'éditeur ( prix, image, description, ..)
Finalement je voulais me lancer dans un petit plugin pour créer ces champs, mais besoin d'aide et je fais peut-etre fausse route en passant à côté d'une autre solution;
Le début de mon code:
<?php
class CustomFields extends plxPlugin {
// Déclaration des hooks
public function __construct($defaultLang) {
parent::__construct($defaultLang);
// Définir les profils autorisés à utiliser ce plugin
$this->setConfigProfil(PROFIL_ADMIN, PROFIL_MANAGER, PROFIL_EDITOR);
// Ajouter des hooks pour l'éditeur d'article
$this->addHook('AdminArticleEdit', 'AdminArticleEdit');
$this->addHook('AdminArticleNew', 'AdminArticleNew');
$this->addHook('AdminHeadEnd', 'AdminHeadEnd'); // Hook pour charger le CSS
}
// Méthode pour charger le CSS dans l'admin
public function AdminHeadEnd() {
echo '<link rel="stylesheet" type="text/css" href="' . PLX_PLUGINS . 'customfields/css/admin.css" />';
}
// Fonction pour afficher les champs personnalisés dans l'éditeur
public function AdminArticleEdit() {
$this->displayCustomFields();
}
public function AdminArticleNew() {
$this->displayCustomFields();
}
// Fonction pour afficher les champs
private function displayCustomFields() {
$plxAdmin = plxAdmin::getInstance();
$article = $plxAdmin->aArt;
// Début de la section des champs personnalisés
echo '<div class="fieldset" id="customfields-section">';
echo '<h3>Champs personnalisés</h3>';
// Champ Prix
echo '<div class="field">';
echo '<label for="prix">Prix (€)</label>';
echo '<input type="text" name="prix" id="prix" value="' . (isset($article['prix']) ? htmlspecialchars($article['prix']) : '') . '" size="10" />';
echo '<p class="help">Prix du produit en euros (ex: 29.99)</p>';
echo '</div>';
// Champ Images supplémentaires
.....
// Fin de la section
echo '</div>';
}
}
?>
Connectez-vous ou Inscrivez-vous pour répondre.
