HomeLanding - Page d'accueil

Ajouter un module avec catégories séparées

Cet article est en cours de travaux, des modifications sont en cours de réalisation, revenez plus tard le reconsulter. Merci.
Dernière mise à jour : 20/01/2022 à 06h13
Ce tutoriel une annexe à Ajouter un module dans HomeLanding

Philosophie



L'idée est de considérer une catégorie comme module dans HomeLanding, mais dépendant de son module parent.
Il faut donc déclarer l'ajout d'une ou plusieurs catégories en même temps que l'ajout du module.

Dans cet exemple, on ajoute un module Blog avec la possibilité d'afficher le contenu exclusif de 2 de ses catégories.
Comme dans le tutoriel précédent, les scripts sont à adapter au module ajouté.

Déclaration du module dans l'initialisation de la liste des modules compatibles



/HomeLanding/additional/add/AdditionalAdd.php :
<?php
$module = new HomeLandingModule();
$module->set_module_id(HomeLandingBlog::MODULE_BLOG);
$module->set_phpboost_module_id(HomeLandingBlog::MODULE_BLOG);
$module->hide();
$modules[] = $module->get_properties();
$module = new HomeLandingModuleCategory();
$module->set_module_id(HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT);
$module->set_phpboost_module_id(HomeLandingBlog::MODULE_BLOG);
$module->hide();
$modules[] = $module->get_properties();
$module = new HomeLandingModuleCategory();
$module->set_module_id(HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT);
$module->set_phpboost_module_id(HomeLandingBlog::MODULE_BLOG);
$module->hide();
$modules[] = $module->get_properties();
?>


/HomeLanding/additional/init/AdditionalInit.php :
<?php
$module = new HomeLandingModule();
$module->set_module_id(self::MODULE_BLOG);
$module->set_phpboost_module_id(self::MODULE_BLOG);
$module->hide();
$modules[] = $module->get_properties();
$module = new HomeLandingModuleCategory();
$module->set_module_id(self::MODULE_BLOG_OUTINGS_CAT);
$module->set_phpboost_module_id(self::MODULE_BLOG);
$module->hide();
$modules[] = $module->get_properties();
$module = new HomeLandingModuleCategory();
$module->set_module_id(self::MODULE_BLOG_VOYAGES_CAT);
$module->set_phpboost_module_id(self::MODULE_BLOG);
$module->hide();
$modules[] = $module->get_properties();
?>


Formulaire



/HomeLanding/additional/form/AdditionalForm.php :
<?php
if ($this->modules[HomeLandingBlog::MODULE_BLOG]->is_active())
{
// Full module
    $fieldset_blog = new FormFieldsetMultitabsHTML('admin_blog',  $this->lang['homelanding.module.display'] . ModulesManager::get_module($this->modules[HomeLandingBlog::MODULE_BLOG]->get_module_id())->get_configuration()->get_name(),
        array('css_class' => 'tabs tabs-animation')
    );
    $form->add_fieldset($fieldset_blog);
    $fieldset_blog->add_field(new FormFieldCheckbox('blog_enabled', $this->lang['homelanding.show.full.module'], $this->modules[HomeLandingBlog::MODULE_BLOG]->is_displayed(),
        array(
            'class'=> 'custom-checkbox',
            'events' => array('click' => '
                if (HTMLForms.getField("blog_enabled").getValue()) {
                    HTMLForms.getField("blog_limit").enable();
                } else {
                    HTMLForms.getField("blog_limit").disable();
                }'
            )
        )
    ));
    $fieldset_blog->add_field(new FormFieldNumberEditor('blog_limit', $this->lang['homelanding.items.number'], $this->modules[HomeLandingBlog::MODULE_BLOG]->get_elements_number_displayed(),
        array(
            'min' => 1, 'max' => 100,
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG]->is_displayed()
        ),
        array(new FormFieldConstraintIntegerRange(1, 100))
    ));
// Outings cat
    $fieldset_blog->add_field(new FormFieldSpacer('blog_outings_cat_separator', ''));
    $fieldset_blog->add_field(new FormFieldCheckbox('blog_outings_cat_enabled', $this->lang['homelanding.display.category'], $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed(),
        array(
            'class'=> 'custom-checkbox',
            'description' => $this->lang['homelanding.category.blog.outings.cat.clue'],
            'events' => array('click' => '
                if (HTMLForms.getField("blog_outings_cat_enabled").getValue()) {
                    HTMLForms.getField("blog_outings_cat").enable();
                    HTMLForms.getField("blog_outings_subcategories_content_displayed").enable();
                    HTMLForms.getField("blog_outings_cat_limit").enable();
                    HTMLForms.getField("blog_outings_cat_char").enable();
                } else {
                    HTMLForms.getField("blog_outings_cat").disable();
                    HTMLForms.getField("blog_outings_subcategories_content_displayed").disable();
                    HTMLForms.getField("blog_outings_cat_limit").disable();
                    HTMLForms.getField("blog_outings_cat_char").disable();
                }'
            )
        )
    ));
    $fieldset_blog->add_field(CategoriesService::get_categories_manager(HomeLandingBlog::MODULE_BLOG)->get_select_categories_form_field('blog_outings_cat', $this->lang['homelanding.choose.category'], $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->get_id_category(), new SearchCategoryChildrensOptions(),
        array('hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed())
    ));
    $fieldset_blog->add_field(new FormFieldCheckbox('blog_outings_subcategories_content_displayed', $this->lang['homelanding.display.sub.categories'], $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_subcategories_content_displayed(),
        array(
            'class'=> 'custom-checkbox',
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed())
    ));
    $fieldset_blog->add_field(new FormFieldNumberEditor('blog_outings_cat_limit', $this->lang['homelanding.items.number'], $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->get_elements_number_displayed(),
        array(
            'min' => 1, 'max' => 100,
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed()
        ),
        array(new FormFieldConstraintIntegerRange(1, 100))
    ));
    $fieldset_blog->add_field(new FormFieldNumberEditor('blog_outings_cat_char', $this->lang['homelanding.characters.limit'], $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->get_characters_number_displayed(),
        array(
            'min' => 1, 'max' => 512,
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed()
        ),
        array(new FormFieldConstraintIntegerRange(1, 512))
    ));
// Outings cat
    $fieldset_blog->add_field(new FormFieldSpacer('blog_voyages_cat_separator', ''));
    $fieldset_blog->add_field(new FormFieldCheckbox('blog_voyages_cat_enabled', $this->lang['homelanding.display.category'], $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed(),
        array(
            'class'=> 'custom-checkbox',
            'description' => $this->lang['homelanding.category.blog.voyages.cat.clue'],
            'events' => array('click' => '
                if (HTMLForms.getField("blog_voyages_cat_enabled").getValue()) {
                    HTMLForms.getField("blog_voyages_cat").enable();
                    HTMLForms.getField("blog_voyages_subcategories_content_displayed").enable();
                    HTMLForms.getField("blog_voyages_cat_limit").enable();
                    HTMLForms.getField("blog_voyages_cat_char").enable();
                } else {
                    HTMLForms.getField("blog_voyages_cat").disable();
                    HTMLForms.getField("blog_voyages_subcategories_content_displayed").disable();
                    HTMLForms.getField("blog_voyages_cat_limit").disable();
                    HTMLForms.getField("blog_voyages_cat_char").disable();
                }'
            )
        )
    ));
    $fieldset_blog->add_field(CategoriesService::get_categories_manager(HomeLandingBlog::MODULE_BLOG)->get_select_categories_form_field('blog_voyages_cat', $this->lang['homelanding.choose.category'], $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->get_id_category(), new SearchCategoryChildrensOptions(),
        array('hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed())
    ));
    $fieldset_blog->add_field(new FormFieldCheckbox('blog_voyages_subcategories_content_displayed', $this->lang['homelanding.display.sub.categories'], $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_subcategories_content_displayed(),
        array(
            'class'=> 'custom-checkbox',
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed())
    ));
    $fieldset_blog->add_field(new FormFieldNumberEditor('blog_voyages_cat_limit', $this->lang['homelanding.items.number'], $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->get_elements_number_displayed(),
        array(
            'min' => 1, 'max' => 100,
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed()
        ),
        array(new FormFieldConstraintIntegerRange(1, 100))
    ));
    $fieldset_blog->add_field(new FormFieldNumberEditor('blog_voyages_cat_char', $this->lang['homelanding.characters.limit'], $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->get_characters_number_displayed(),
        array(
            'min' => 1, 'max' => 512,
            'hidden' => !$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed()
        ),
        array(new FormFieldConstraintIntegerRange(1, 512))
    ));
}
?>
 


/HomeLanding/additional/save/AdditionalSave.php :
<?php
// Full module
    if ($this->form->get_value('blog_enabled'))
    {
        $this->modules[HomeLandingBlog::MODULE_BLOG]->display();
        $this->modules[HomeLandingBlog::MODULE_BLOG]->set_elements_number_displayed($this->form->get_value('blog_limit'));
    }
    else
        $this->modules[HomeLandingBlog::MODULE_BLOG]->hide();
// Outings cat
    if ($this->form->get_value('blog_outings_cat_enabled'))
    {
        $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->display();
        if (!$this->form->field_is_disabled('blog_outings_cat'))
            $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->set_id_category($this->form->get_value('blog_outings_cat')->get_raw_value());
        if ($this->form->get_value('blog_outings_subcategories_content_displayed'))
            $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->display_subcategories_content();
        else
            $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->hide_subcategories_content();
        $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->set_elements_number_displayed($this->form->get_value('blog_outings_cat_limit'));
        $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->set_characters_number_displayed($this->form->get_value('blog_outings_cat_char'));
    }
    else
        $this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->hide();
// Voyages cat
    if ($this->form->get_value('blog_voyages_cat_enabled'))
    {
        $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->display();
        if (!$this->form->field_is_disabled('blog_voyages_cat'))
            $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->set_id_category($this->form->get_value('blog_voyages_cat')->get_raw_value());
        if ($this->form->get_value('blog_voyages_subcategories_content_displayed'))
            $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->display_subcategories_content();
        else
            $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->hide_subcategories_content();
        $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->set_elements_number_displayed($this->form->get_value('blog_voyages_cat_limit'));
        $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->set_characters_number_displayed($this->form->get_value('blog_voyages_cat_char'));
    }
    else
        $this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->hide();
?>
 


/HomeLanding/additional/submit/AdditionalSubmit.php :
<?php
if ($this->modules[HomeLandingBlog::MODULE_BLOG]->is_active())
{
    $this->form->get_field_by_id('blog_limit')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG]->is_displayed());
    $this->form->get_field_by_id('blog_outings_cat')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_outings_subcategories_content_displayed')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_outings_cat_limit')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_outings_cat_char')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_voyages_cat')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_voyages_subcategories_content_displayed')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_voyages_cat_limit')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed());
    $this->form->get_field_by_id('blog_voyages_cat_char')->set_hidden(!$this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed());
}
?>


Pour un module "core"



/HomeLanding/additional/home/AdditionalHome.php :
<?php
if ($this->modules[HomeLandingBlog::MODULE_BLOG]->is_displayed() && CategoriesAuthorizationsService::check_authorizations(Category::ROOT_CATEGORY, HomeLandingBlog::MODULE_BLOG)->read())
    $this->view->put('BLOG', HomeLandingDisplayItems::build_view(HomeLandingBlog::MODULE_BLOG));
if ($this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed() && CategoriesAuthorizationsService::check_authorizations($this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->get_id_category(), HomeLandingBlog::MODULE_BLOG)->read())
    $this->view->put('BLOG_OUTINGS_CAT', HomeLandingDisplayItems::build_view(HomeLandingBlog::MODULE_BLOG, HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT));
if ($this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed() && CategoriesAuthorizationsService::check_authorizations($this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->get_id_category(), HomeLandingBlog::MODULE_BLOG)->read())
    $this->view->put('BLOG_VOYAGES_CAT', HomeLandingDisplayItems::build_view(HomeLandingBlog::MODULE_BLOG, HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT));
?>


Pour un module "base"



/HomeLanding/additional/home/AdditionalHome.php :
<?php
if ($this->modules[HomeLandingBlog::MODULE_BLOG]->is_displayed() && CategoriesAuthorizationsService::check_authorizations(Category::ROOT_CATEGORY, HomeLandingBlog::MODULE_BLOG)->read())
    $this->view->put('BLOG', HomeLandingDisplayItems::get_blog_view(HomeLandingBlog::MODULE_BLOG));
if ($this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->is_displayed() && CategoriesAuthorizationsService::check_authorizations($this->modules[HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT]->get_id_category(), HomeLandingBlog::MODULE_BLOG)->read())
    $this->view->put('BLOG_OUTINGS_CAT', HomeLandingDisplayItems::get_outings_cat_view_view(HomeLandingBlog::MODULE_BLOG, HomeLandingBlog::MODULE_BLOG_OUTINGS_CAT));
if ($this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->is_displayed() && CategoriesAuthorizationsService::check_authorizations($this->modules[HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT]->get_id_category(), HomeLandingBlog::MODULE_BLOG)->read())
    $this->view->put('BLOG_VOYAGES_CAT', HomeLandingDisplayItems::get_voyages_cat_view(HomeLandingBlog::MODULE_BLOG, HomeLandingBlog::MODULE_BLOG_VOYAGES_CAT));
?>


/HomeLanding/services/modules/HomeLandingBlog.class.php :
<?php
class HomeLandingBlog
{
    const MODULE_BLOG = 'blog';
    const MODULE_BLOG_OUTINGS_CAT = 'blog_outings_cat';
    const MODULE_BLOG_VOYAGES_CAT = 'blog_voyages_cat';
    public static function get_blog_outings_cat_view()
    {
        $now = new Date();
        $module_config = BlogConfig::load();
        $home_config   = HomeLandingConfig::load();
        $modules       = HomeLandingModulesList::load();
        $module_name   = self::MODULE_BLOG;
        $module_cat    = self::MODULE_BLOG_OUTINGS_CAT;
        $theme_id = AppContext::get_current_user()->get_theme();
        if (file_exists(PATH_TO_ROOT . '/templates/' . $theme_id . '/modules/HomeLanding/pagecontent/' . $module_cat . '.tpl'))
            $view = new FileTemplate('/templates/' . $theme_id . '/modules/HomeLanding/pagecontent/' . $module_cat . '.tpl');
        elseif (file_exists(PATH_TO_ROOT . '/HomeLanding/templates/pagecontent/' . $module_cat . '.tpl'))
            $view = new FileTemplate('/HomeLanding/templates/pagecontent/' . $module_cat . '.tpl');
        else
            $view = new FileTemplate('HomeLanding/pagecontent/items.tpl');
        $home_lang = LangLoader::get('common', 'HomeLanding');
        $module_lang = LangLoader::get('common', $module_name);
        $view->add_lang(array_merge($home_lang, $module_lang, LangLoader::get('common-lang')));
        $categories_id = $modules[$module_cat]->is_subcategories_content_displayed() ? CategoriesService::get_authorized_categories($modules[$module_cat]->get_id_category(), $module_config->is_summary_displayed_to_guests(), $module_name) : array($modules[$module_cat]->get_id_category());
        $result = PersistenceContext::get_querier()->select('SELECT blog.*, member.*
        FROM ' . PREFIX . 'blog  blog
        LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = blog.author_user_id
        WHERE (published = 1 OR (published = 2 AND publishing_start_date < :timestamp_now AND (publishing_end_date > :timestamp_now OR publishing_end_date = 0))) AND id_category IN :categories_id
        ORDER BY blog.update_date DESC
        LIMIT :blog_cat_limit', array(
            'user_id' => AppContext::get_current_user()->get_id(),
            'timestamp_now' => $now->get_timestamp(),
            'categories_id' => $categories_id,
            'blog_cat_limit' => $modules[$module_cat]->get_elements_number_displayed()
        ));
        $category = CategoriesService::get_categories_manager($module_name)->get_categories_cache()->get_category($modules[$module_cat]->get_id_category());
        $view->put_all(array(
            'C_NO_ITEM'       => $result->get_rows_count() == 0,
            'C_CATEGORY'      => true,
            'C_VIEWS_NUMBER'  => true,
            'C_LIST_VIEW'     => $module_config->get_display_type() == BlogConfig::LIST_VIEW,
            'C_GRID_VIEW'     => $module_config->get_display_type() == BlogConfig::GRID_VIEW,
            'C_TABLE_VIEW'    => $module_config->get_display_type() == BlogConfig::TABLE_VIEW,
            'MODULE_POSITION' => $home_config->get_module_position_by_id($module_cat),
            'MODULE_NAME'     => $module_name,
            'ITEMS_PER_ROW'   => $module_config->get_items_per_row(),
            'L_MODULE_TITLE'  => ModulesManager::get_module($module_name)->get_configuration()->get_name() . ': ' . $category->get_name(),
        ));
        while ($row = $result->fetch())
        {
            $item = new BlogItem();
            $item->set_properties($row);
            $view->assign_block_vars('items', array_merge($item->get_array_tpl_vars(), array(
                'C_SEVERAL_VIEWS' => $item->get_views_number() > 1,
            )));
        }
        $result->dispose();
        return $view;
    }
    public static function get_blog_voyages_cat_view()
    {
        $now = new Date();
        $module_config = BlogConfig::load();
        $home_config   = HomeLandingConfig::load();
        $modules       = HomeLandingModulesList::load();
        $module_name   = HomeLandingConfig::MODULE_BLOG;
        $module_cat    = HomeLandingConfig::MODULE_BLOG_VOYAGES_CAT;
        $theme_id = AppContext::get_current_user()->get_theme();
        if (file_exists(PATH_TO_ROOT . '/templates/' . $theme_id . '/modules/HomeLanding/pagecontent/' . $module_cat . '.tpl'))
            $view = new FileTemplate('/templates/' . $theme_id . '/modules/HomeLanding/pagecontent/' . $module_cat . '.tpl');
        elseif (file_exists(PATH_TO_ROOT . '/HomeLanding/templates/pagecontent/' . $module_cat . '.tpl'))
            $view = new FileTemplate('/HomeLanding/templates/pagecontent/' . $module_cat . '.tpl');
        else
            $view = new FileTemplate('HomeLanding/pagecontent/items.tpl');
        $home_lang = LangLoader::get('common', 'HomeLanding');
        $module_lang = LangLoader::get('common', $module_name);
        $view->add_lang(array_merge($home_lang, $module_lang, LangLoader::get('common-lang')));
        $categories_id = $modules[$module_cat]->is_subcategories_content_displayed() ? CategoriesService::get_authorized_categories($modules[$module_cat]->get_id_category(), $module_config->is_summary_displayed_to_guests(), $module_name) : array($modules[$module_cat]->get_id_category());
        $result = PersistenceContext::get_querier()->select('SELECT blog.*, member.*
        FROM ' . PREFIX . 'blog  blog
        LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = blog.author_user_id
        WHERE (published = 1 OR (published = 2 AND publishing_start_date < :timestamp_now AND (publishing_end_date > :timestamp_now OR publishing_end_date = 0))) AND id_category IN :categories_id
        ORDER BY blog.update_date DESC
        LIMIT :blog_cat_limit', array(
            'user_id' => AppContext::get_current_user()->get_id(),
            'timestamp_now' => $now->get_timestamp(),
            'categories_id' => $categories_id,
            'blog_cat_limit' => $modules[$module_cat]->get_elements_number_displayed()
        ));
        $category = CategoriesService::get_categories_manager($module_name)->get_categories_cache()->get_category($modules[$module_cat]->get_id_category());
        $view->put_all(array(
            'C_NO_ITEM'       => $result->get_rows_count() == 0,
            'C_CATEGORY'      => true,
            'C_VIEWS_NUMBER'  => true,
            'C_LIST_VIEW'     => $module_config->get_display_type() == BlogConfig::LIST_VIEW,
            'C_GRID_VIEW'     => $module_config->get_display_type() == BlogConfig::GRID_VIEW,
            'C_TABLE_VIEW'    => $module_config->get_display_type() == BlogConfig::TABLE_VIEW,
            'MODULE_POSITION' => $home_config->get_module_position_by_id($module_cat),
            'MODULE_NAME'     => $module_name,
            'ITEMS_PER_ROW'   => $module_config->get_items_per_row(),
            'L_MODULE_TITLE'  => ModulesManager::get_module($module_name)->get_configuration()->get_name() . ': ' . $category->get_name(),
        ));
        while ($row = $result->fetch())
        {
            $item = new BlogItem();
            $item->set_properties($row);
            $view->assign_block_vars('items', array_merge($item->get_array_tpl_vars(), array(
                'C_SEVERAL_VIEWS' => $item->get_views_number() > 1,
            )));
        }
        $result->dispose();
        return $view;
    }
    public static function get_blog_view()
    {
        $now = new Date();
        $module_config = BlogConfig::load();
        $home_config   = HomeLandingConfig::load();
        $modules       = HomeLandingModulesList::load();
        $module_name   = HomeLandingConfig::MODULE_BLOG;
        $theme_id = AppContext::get_current_user()->get_theme();
        if (file_exists(PATH_TO_ROOT . '/templates/' . $theme_id . '/modules/HomeLanding/pagecontent/' . $module_name . '.tpl'))
            $view = new FileTemplate('/templates/' . $theme_id . '/modules/HomeLanding/pagecontent/' . $module_name . '.tpl');
        elseif (file_exists(PATH_TO_ROOT . '/HomeLanding/templates/pagecontent/' . $module_name . '.tpl'))
            $view = new FileTemplate('/HomeLanding/templates/pagecontent/' . $module_name . '.tpl');
        else
            $view = new FileTemplate('HomeLanding/pagecontent/items.tpl');
        $home_lang = LangLoader::get('common', 'HomeLanding');
        $module_lang = LangLoader::get('common', $module_name);
        $view->add_lang(array_merge($home_lang, $module_lang, LangLoader::get('common-lang')));
        $authorized_categories = CategoriesService::get_authorized_categories(Category::ROOT_CATEGORY, $module_config->is_summary_displayed_to_guests(), $module_name);
        $result = PersistenceContext::get_querier()->select('SELECT blog.*, member.*, cat.rewrited_name AS rewrited_name_cat
        FROM ' . PREFIX . 'blog blog
        LEFT JOIN ' . PREFIX . 'blog_cats cat ON cat.id = blog.id_category
        LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = blog.author_user_id
        WHERE (published = 1 OR (published = 2 AND publishing_start_date < :timestamp_now AND (publishing_end_date > :timestamp_now OR publishing_end_date = 0))) AND id_category IN :authorized_categories
        ORDER BY blog.update_date DESC
        LIMIT :blog_limit', array(
            'authorized_categories' => $authorized_categories,
            'user_id' => AppContext::get_current_user()->get_id(),
            'timestamp_now' => $now->get_timestamp(),
            'blog_limit' => $modules[$module_name]->get_elements_number_displayed()
        ));
        $view->put_all(array(
            'C_NO_ITEM'       => $result->get_rows_count() == 0,
            'C_VIEWS_NUMBER'  => true,
            'C_GRID_VIEW'     => $module_config->get_display_type() == BlogConfig::GRID_VIEW,
            'C_TABLE_VIEW'    => $module_config->get_display_type() == BlogConfig::TABLE_VIEW,
            'MODULE_NAME'     => $module_name,
            'MODULE_POSITION' => $home_config->get_module_position_by_id($module_name),
            'ITEMS_PER_ROW'   => $module_config->get_items_per_row(),
            'L_MODULE_TITLE'  => ModulesManager::get_module($module_name)->get_configuration()->get_name(),
        ));
        while ($row = $result->fetch())
        {
            $item = new BlogItem();
            $item->set_properties($row);
            $view->assign_block_vars('items', array_merge($item->get_array_tpl_vars(), array(
                'C_SEVERAL_VIEWS' => $item->get_views_number() > 1,
            )));
        }
        $result->dispose();
        return $view;
    }
}
?>
 


Afin de nommer les catégories sur les différentes pages, il faut créer un nouveau fichier de langue qui est chargé automatiquement dès lors qu'il existe
/HomeLanding/lang/french/additional.php :
/additional.php]<?php
/**
 * @copyright   © 2005-2021 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Firstname LASTNAME <nickname@email.com>
 * @version     PHPBoost 6.0 - last update: YYYY MM DD
 * @since       PHPBoost 5.0 - YYYY MM DD
*/
####################################################
#                      French                      #
####################################################
//  Additional
//page des positionnements
$lang['homelanding.module.blog_outings_cat']    = 'blog - sorties';
$lang['homelanding.module.blog_voyages_cat']   = 'blog - voyages';
// page princpale d'affichage
$lang['homelanding.category.blog_outings_cat']  = 'blog';
$lang['homelanding.category.blog_voyages_cat'] = 'blog';
?>

à réitérer dans le dossier english pour la traduction, si besoin.

Enfin, on ajoute les variables de templates au seul fichier originel modifié (qu'il faudra remoidifer en cas de mis à jour de HomeLanding)
/HomeLanding/templates/home.tpl :
<!-- Additional modules -->
# INCLUDE  BLOG #
# INCLUDE  BLOG_OUTINGS_CAT #
# INCLUDE  BLOG_VOYAGES_CAT #
Cette page a été vue 619 fois