Forum

Créations de Modules [HomeLanding] Page d'accueil personnalisée avec administration version finale

babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 21/03/2016 à 21h23

Reprise du message précédent

merci :)

la 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


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
vtt64 Membre non connecté

Booster Roquette

Rang

Avatar

Inscrit le : 16/12/2009 à 19h08

Messages: 255

Le 21/03/2016 à 21h40
Citation:
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é

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 22/03/2016 à 00h54
tout à fait

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


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 22/03/2016 à 07h06
Petites optimisations rapides :
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 ^^
Site web    
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 22/03/2016 à 07h35
:love

merci Jul, je regarde ça


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 22/03/2016 à 11h27
pour le C_ARTICLES_INSTALLED j'ai aussi ajouté
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


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 22/03/2016 à 11h44
dans le save pour récupérer l'id de la catégorie il faut faire :
Code PHP :
$article->set_id_category($this->form->get_value('id_category')->get_raw_value());
Site web    
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 22/03/2016 à 12h57
c'est mieux :) mais il n'accepte pas être désactivé :(

Code TPL :
 Call to a member function get_raw_value() on a non-object


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 22/03/2016 à 13h12
Tu peux mettre ça devant :
Code PHP :
if (!$this->form->field_is_disabled('articles_cat'))
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 22/03/2016 à 14h45
Pour l'affichage ou non des colonnes tu peux le faire via des checkbox dans l'admin. Tu ajoutes des paramètres de configuration dans ton fichier HomeLandingConfig et tu remplaces le contenu de ton contrôleur HomeLandingHomePageExtensionPoint par :

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.
Site web    
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 22/03/2016 à 18h59
Citation:
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


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 24/03/2016 à 11h11
@Jul :
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 :)


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 24/03/2016 à 11h26
il faudrait que tu m'envoie le code ^^
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 25/03/2016 à 09h06
C'est parce que tu testes si les modules sont installés uniquement dans la fonction qui construit le formulaire.
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());
            }
 
Site web    
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2695

Le 26/03/2016 à 06h13
merci :)

...tellement évident #CallMeStupid #EveryDayINeedToLearn


Pour un support plus efficace, pensez à déclarer dans votre profil, le lien vers votre site
ban_wind
Site web    
j1.seth Membre non connecté

Administrateur

Rang

Avatar

Chef de Projet Equipe Développement

Inscrit le : 01/09/2008 à 09h42

Messages: 2895

Le 26/03/2016 à 07h30
C'est comme ça qu'on apprend, je suis passé par là aussi :)
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
Annonces