Dernière mise à jour : 20/01/2022 à 06h13
Table des matières
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 #