Frappe Framework
Pages du portail
Une page est un HTML ou un Markdown, plus un Python du même nom. L’app personnalisée remplace une page standard en posant le même fichier.
Rôle
À côté du bureau, Frappe sert des pages rendues côté serveur, publiques ou après connexion. Le dossier www de chaque application, y compris frappe, correspond aux URLs. about.html donne /about. Les pages dynamiques du portail sont aussi dans Pages.
Pour une sous-page, le fichier principal devient un dossier avec index.html. /custom_page reste la route, /custom_page/subpage s’ajoute. Un .md remplace le HTML pour une page statique simple. Cette documentation elle-même est du Markdown.
Un fichier du même nom dans l’app personnalisée, par exemple about.html, prend le pas sur la page frappe.
Gabarit
Jinja alimente la page. Les pages étendent frappe/templates/web.html, qui étend frappe/templates/base.html. L’exemple pose le bloc title et page_content sur « About Us », puis un paragraphe. Le texte publié écrit « embibes ». On peut omettre extend et block pour le gabarit par défaut. L’API Jinja est dans Jinja.
Contexte
Le contrôleur a le même nom, extension .py, et une méthode get_context(context) qui renvoie le dictionnaire. L’exemple y met frappe.get_doc('About Us Settings'). Le gabarit teste about_us_settings.show_contact_us pour un lien /contact.
Clés standards : add_breadcrumbs, no_breadcrumbs, show_sidebar, safe_render, no_header, no_cache, sitemap, add_next_prev_links, title.
frappe.render_template refuse un modèle qui contient .__, pour bloquer une expression Python illégale. safe_render à False dans le contexte coupe ce contrôle, seulement si le contenu est sûr.
Un frontmatter fixe des valeurs statiques. L’exemple title Introduction et metatags.description devient le dictionnaire de contexte correspondant. Le corps publié commence par un titre Markdown « Introduction ».
Des commentaires HTML peuvent aussi poser le contexte. Leur balisage n’est pas dans le Markdown publié. Les valeurs encore listées : add_breadcrumbs = 1, no_breadcrumbs = 1, show_sidebar = 1, no_header = 1, no_cache = 1, sitemap = 0, sitemap = 1, add_next_prev_links = 1, title = 'Custom Title', base_template = 'custom_app/path/to/custom_base.html'. add_breadcrumbs génère le fil selon les dossiers.
Fichiers et accueil
Un .css ou .js du même nom que la page est pris. L’accueil se définit, dans cet ordre publié : Role, Portal Settings pour les utilisateurs connectés, le hook get_website_user_home_page, Website Settings aussi pour les invités.
Point d’attention
safe_render à faux retire le garde-fou .__. Le nom de fichier de l’app personnalisée doit être exactement celui de la page à remplacer.
