[HomeLanding] Page d'accueil personnalisée avec administration
version finale
Créations de Modules
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
Reprise du message précédent
mercila colonne de gauche en front ou dans l'admin ?
si c'est en front, le module gère l'affichage des menus indépendamment de la config du site (menu gauche/droite/top-central/bottom-central/top-footer), c'est déjà implémenté dans le module mais je n'arrive toujours pas à gérer ça via l'admin. Par défaut (à l'install) tous ces menus sont désactivés.
Si tu veux récupérer les menus, il faut passer la valeur du menu que tu veux à "false" dans le fichier HomeLanding/phpboost/HomeLandingHomePageExtensionPoint.class.php
pour le forum, c'est prévu. Pour l'instant je n'ai pas encore mis le nez dedans, au pire j'utiliserai la récupération du feed
vtt64 Membre non connecté
Booster Roquette
- Booster Roquette
- Voir le profil du membre vtt64
- Inscrit le : 16/12/2009
- Site internet
- Groupes :
la colonne de gauche en front ou dans l'admin ?
C'est dans le front, j'ai activé le menu gauche comme tu l'as indiqué.
Pour gérer l'ordre des éléments affichés, je suppose qu'il faut éditer directement le home.tpl ?
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
je réfléchi à gérer l'ordre via l'admin mais je n'en suis pas encore là
idem pour chaque module, j'ai mis un maximum de choses dans les tpl du pagecontent, il suffit de supprimer ce qu'on ne veut pas dans chacun d'eux
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Dans l'admin tu peux te servir du test suivant pour englober chaque paragraphe (chaque module) :
Code PHP :
ModulesManager::is_module_installed('articles')
Du coup pour les gens qui n'ont pas certains modules installés, les zones concernées n’apparaîtront pas (il faut le faire dans le build_form, dans le save et dans la zone avec les set_hidden au début).
Tu peux également t'en servir dans la partie get_default_values() de HomeLandingConfig pour déterminer les paramètres par défaut.
Sur le front tu peux également t'en servir pour créer des variables C_ARTICLES_INSTALLED par exemple et les mettre dans des IF pour cacher automatiquement certaines zones si besoin (je n'ai pas regardé en détail).
Pour les catégories, au lieu de faire choisir des id hypothétiques récupères la liste existante :
Code PHP :
$fieldset->add_field(ArticlesService::get_categories_manager()->get_select_categories_form_field('articles_cat', $this->common_lang['form.category'], $this->config->get_articles_cat(), new SearchCategoryChildrensOptions(), array('hidden' => !$this->config->get_articles_cat_enabled()) ));
Je regarderai plus en détail tout à l'heure ou demain.
Ps : et euh... charactères c'est du franglais
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
merci Jul, je regarde ça
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
ModulesManager::is_module_activated('articles')et ça fonctionne aussi quand on désactive un module
Par contre pour le select des categories, j'ai un retour d'erreur. J'ai le message de succes quand je valide l'admin, mais si je reviens dessuite dessus, la catégorie sélectionnée est racine au lieu de celle que j'ai choisie, et j'ai un message d'erreur en front
Code TPL :
Warning : mysqli_real_escape_string() expects parameter 2 to be string, object given [0] /kernel/framework/io/db/driver/mysql/MySQLQuerier.class.php:60 [0] /kernel/framework/io/db/driver/mysql/MySQLQuerier.class.php:60 - mysqli_real_escape_string(mysqli, FormFieldSelectChoiceOption) [1] /kernel/framework/io/db/SQLQueryVars.class.php:61 - MySQLQuerier->escape(FormFieldSelectChoiceOption) [2] /kernel/framework/util/StringVars.class.php:65 - SQLQueryVars->set_var(array) [3] Internal: - StringVars->replace_var(array) [4] /kernel/framework/util/StringVars.class.php:57 - preg_replace_callback(string, array, string) [5] /kernel/framework/io/db/driver/mysql/MySQLQuerier.class.php:68 - StringVars->replace(string, array) [6] /kernel/framework/io/db/driver/mysql/MySQLQuerier.class.php:48 - MySQLQuerier->execute(string, array) [7] /kernel/framework/io/db/DBQuerier.class.php:50 - MySQLQuerier->select(string, array, int) [8] /HomeLanding/controllers/HomeLandingHomeController.class.php:68 - DBQuerier->select(string, array) [9] /HomeLanding/controllers/HomeLandingHomeController.class.php:629 - HomeLandingHomeController->build_view() [10] /HomeLanding/phpboost/HomeLandingHomePageExtensionPoint.class.php:38 - HomeLandingHomeController::get_view() [11] /kernel/framework/phpboost/index/PHPBoostIndexController.class.php:49 - HomeLandingHomePageExtensionPoint->get_home_page() [12] /kernel/framework/mvc/dispatcher/UrlControllerMapper.class.php:87 - PHPBoostIndexController->execute(HTTPRequestCustom) [13] /kernel/framework/mvc/dispatcher/UrlControllerMapper.class.php:59 - UrlControllerMapper->do_call() [14] /kernel/framework/mvc/dispatcher/Dispatcher.class.php:67 - UrlControllerMapper->call() [15] /kernel/framework/mvc/dispatcher/DispatchManager.class.php:43 - Dispatcher->dispatch() [16] /index.php:35 - DispatchManager::dispatch(array) [URL] /devel/pbt50-modules/index.php
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Code PHP :
$article->set_id_category($this->form->get_value('id_category')->get_raw_value());
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
Code TPL :
Call to a member function get_raw_value() on a non-object
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Code PHP :
if (!$this->form->field_is_disabled('articles_cat'))
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Code PHP :
class HomeLandingHomePageExtensionPoint implements HomePageExtensionPoint { public function get_home_page() { $config = HomeLandingConfig::load(); $columns_disabled = ThemesManager::get_theme(AppContext::get_current_user()->get_theme())->get_columns_disabled(); $columns_disabled->set_disable_left_columns($config->is_left_column_disabled()); $columns_disabled->set_disable_right_columns($config->is_right_column_disabled()); $columns_disabled->set_disable_top_central($config->is_top_central_disabled()); $columns_disabled->set_disable_bottom_central($config->is_bottom_central_disabled()); $columns_disabled->set_disable_top_footer($config->is_top_footer_disabled()); return new DefaultHomePage($this->get_title(), HomeLandingHomeController::get_view()); } private function get_title() { return HomeLandingConfig::load()->get_module_title(); } }
Je te conseilles d'ailleurs de déplacer la partie $columns_disabled ... dans la fonction init() de ton controller HomeLandingHomeController.
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
Je te conseilles d'ailleurs de déplacer la partie $columns_disabled ... dans la fonction init() de ton controller HomeLandingHomeController.
voilà ce qui me manquait
je n'avais pas d'erreur mais aucune action depuis la config
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
Comment réinitialiser la config pour vérifier que mes modif de valeurs par défaut sont sans erreur ?
si je désinstall/ré-install le module, il garde la config d'avant désinstallation (vidage de cache site/navigateur ne change rien)
j'ai trouvé des valeurs dans la table configs option kernel-modules mais elles disparaissent si le module est désintallé (ça aurait été trop facile )
Soucis avec le contrôle de la présence/activation d'un module dans l'admin
Si je désactive un module aprés install du module HomeLanding et que l'affichage d'une catégorie du module désactivé était à true, les options n'apparaissent plus dans l'admin mais la validation du formulaire me renvoie une erreur :
Code TPL :
Fatale : The field "articles_cat" doesn't exists in the "AdminHomeLandingConfigController" form [0] /kernel/framework/builder/form/HTMLForm.class.php:184 - HTMLForm->get_field_by_id(string) [1] /HomeLanding/controllers/AdminHomeLandingConfigController.class.php:459 - HTMLForm->field_is_disabled(string) [2] /HomeLanding/controllers/AdminHomeLandingConfigController.class.php:57 - AdminHomeLandingConfigController->save() [3] /kernel/framework/mvc/dispatcher/UrlControllerMapper.class.php:87 - AdminHomeLandingConfigController->execute(HTTPRequestCustom) [4] /kernel/framework/mvc/dispatcher/UrlControllerMapper.class.php:59 - UrlControllerMapper->do_call() [5] /kernel/framework/mvc/dispatcher/Dispatcher.class.php:67 - UrlControllerMapper->call() [6] /kernel/framework/mvc/dispatcher/DispatchManager.class.php:43 - Dispatcher->dispatch() [7] /HomeLanding/index.php:35 - DispatchManager::dispatch(array) [URL] /devel/pbt50-test/HomeLanding/index.php?url=/admin
si je décoche l'affichage de la catégorie avant de désactiver le module, pas d'erreur et les options du module n'apparaissent plus. j'en conclue que mon code de contrôle de présence est bon mais qu'il manque un truc sur les catégories éviter l'erreur.
J'ai tenté un !empty un peu partout, sans succès, la vérité est ailleurs
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Si tu ne le teste pas dans la fonction save (je te l'ai dit plus haut ), il essaye de récupérer des éléments du formulaire qui n'existent pas pour les sauvegarder du coup ça sort une erreur.
Ce qu'il faut mettre en place dans la fonction save pour articles par exemple :
Code PHP :
if (ModulesManager::is_module_installed('articles') & ModulesManager::is_module_activated('articles')) { $this->config->set_articles_enabled($this->form->get_value('articles_enabled')); $this->config->set_articles_limit($this->form->get_value('articles_limit')); $this->config->set_articles_cat_enabled($this->form->get_value('articles_cat_enabled')); if (!$this->form->field_is_disabled('articles_cat')) { $this->config->set_articles_cat($this->form->get_value('articles_cat')->get_raw_value()); } $this->config->set_articles_cat_limit($this->form->get_value('articles_cat_limit')); $this->config->set_articles_cat_char($this->form->get_value('articles_cat_char')); } else $this->config->set_articles_enabled(false);
Il faut aussi modifier les "set_hidden" dans le execute après l'appel de la fonction save pour les mêmes raisons
Code PHP :
if (ModulesManager::is_module_installed('articles') & ModulesManager::is_module_activated('articles')) { $this->form->get_field_by_id('articles_limit')->set_hidden(!$this->config->get_articles_enabled()); $this->form->get_field_by_id('articles_cat')->set_hidden(!$this->config->get_articles_cat_enabled()); $this->form->get_field_by_id('articles_cat_limit')->set_hidden(!$this->config->get_articles_cat_enabled()); $this->form->get_field_by_id('articles_cat_char')->set_hidden(!$this->config->get_articles_cat_enabled()); }
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
...tellement évident #CallMeStupid #EveryDayINeedToLearn
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie