# Content Reuse URL: /docs/content/reuse/ Section: reuse -------------------------------------------------------------------------------- Reusing Content Write once, publish everywhere. Bengal provides multiple ways to avoid repeating yourself. Reuse Strategies flowchart LR subgraph "Single Source" A[Snippet] B[Data File] C[Shortcode] end subgraph "Multiple Outputs" D[Page 1] E[Page 2] F[Page 3] end A --> D A --> E B --> D B --> F C --> E C --> F Quick Reference Snippets Data Files Filtering Reusable Markdown fragments stored in _snippets/: _snippets/ ├── install/ │ ├── pip.md │ └── uv.md └── warnings/ └── experimental.md Include in any page: 1 2:::{include} _snippets/install/pip.md ::: Structured YAML/JSON in data/: 1 2 3 4# data/team.yaml - name: Jane Doe role: Lead Developer github: janedoe Access in templates: 1 2 3{% for member in site.data.team %} {{ member.name }} - {{ member.role }} {% endfor %} Query content dynamically: 1 2 3 4 5 6 7 8{# All tutorials #} {% set tutorials = site.pages | selectattr("params.type", "equalto", "tutorial") %} {# Recent posts #} {% set recent = site.pages | sort(attribute="date", reverse=true) | list | slice(5) %} When to Use What Method Best For Example Snippets Repeated prose blocks Installation instructions, warnings Data Files Structured data Team members, product features Filtering Dynamic lists Recent posts, related pages Shortcodes Parameterized components Video embeds, API badges Tip Tip Start with snippets for common content blocks. Graduate to data files when you need structured data, and filtering when you need dynamic queries. -------------------------------------------------------------------------------- Metadata: - Author: lbliii - Word Count: 229 - Reading Time: 1 minutes