Django Theme API

Use Template API class written in Python to efficiently use Sneat templates in Django projects of any complexity.


Template Helpers

  1. init_context() - Init the Template Context using TEMPLATE_CONFIG.
  2. The init_context function is used to set up the initial context for a web application. It ensures that the application starts with predefined default settings, making it easier to maintain and customize.

     - The following configuration settings are assigned to their respective keys in the context dictionary:
    
    "layout": Controls the layout of the application.
    "theme": Specifies the visual theme or appearance of the application.
    "style": Defines the overall style of the application.
    "rtl_support": Indicates whether right-to-left (RTL) language support is enabled.
    "rtl_mode": Specifies the RTL mode if enabled.
    "has_customizer": Determines if the application has a customizer feature.
    "display_customizer": Controls the visibility of the customizer.
    "content_layout": Defines the layout of the content within the application.
    "navbar_type": Specifies the type or style of the navigation bar.
    "header_type": Specifies the type or style of the header.
    "menu_fixed": Determines whether the menu is fixed in place.
    "menu_collapsed": Specifies if the menu is initially collapsed.
    "footer_fixed": Controls whether the footer is fixed in place.
    "show_dropdown_onhover": Controls the behavior of dropdown menus (e.g., whether they appear on hover).
                      
  3. map_context() - Map context variables to template class, value, or variable names..
  4. The map_context function is designed to facilitate the mapping of configuration variables to specific class names, values, or variables that are used in the frontend of a web application. This mapping is essential for controlling the visual appearance and behavior of the application based on various configuration settings.

  5. get_theme_variables() - Get theme variables by scope.
  6. The get_theme_variables function is responsible for retrieving theme-related variables or settings based on a specified scope.

  7. get_theme_config() - Get theme config by scope.
  8. The get_theme_config function provides an easy way to access and apply theme-related configuration settings based on a specified scope.

  9. set_layout(view, context={})() - Set the current page layout and init the layout bootstrap file.
  10. The set_layout function is responsible for configuring the layout of a web view or page within a web application. It determines which layout template should be used based on the view's filename and initializes the appropriate layout configuration.

    class HorizontalView(TemplateView):
    # Predefined function
        def get_context_data(self, **kwargs):
    # A function to init the global layout. It is defined in web_project/__init__.py file
        context = TemplateLayout.init(self, super().get_context_data(**kwargs))
    
    # Update the context
        context.update(
          {
            "layout": "horizontal",
            "layout_path": TemplateHelper.set_layout("layout_horizontal.html", context),
          }
        )
    
        TemplateHelper.map_context(context)
    
        return context

Template Tags

  1. get_theme_variables(scope) this tag calls the get_theme_variables() helper to get the scope.
  2. {% get_theme_variables "THEME_VARIABLES" %}
  3. get_theme_config(scope) this tag calls the get_theme_config() helper to get the scope.
  4. {% get_theme_config "TEMPLATE_CONFIG" %}
  5. filter_by_url(submenu, url)
  6. The filter_by_url filter is a useful tool for dynamically highlighting or marking active menu items in a navigation menu based on the current URL in a Django web application.

  7. current_url(request)
  8. The current_url function is utilized within the href attribute to retain the current page when switching between languages. This ensures a seamless transition without redirecting to a different page upon language change.

    <!-- Language -->
    <li class="nav-item dropdown-language dropdown me-2 me-xl-0">
        <a class="nav-link dropdown-toggle hide-arrow" href="javascript:void(0);" data-bs-toggle="dropdown">
        <i class='bx bx-globe bx-sm me-1'></i>
        </a>
        <ul class="dropdown-menu dropdown-menu-end">
            ...
            <li>
              <a class="dropdown-item {% if LANGUAGE_CODE == 'de' %}active{% endif %}" href="{% current_url request %}" data-language="de" data-text-direction="ltr">
                <span class="align-middle">{% trans "German"%}</span>
              </a>
            </li>
            ...
        </ul>
    </li>
    <!--/ Language -->
© 2017- ThemeSelection, Hand-crafted & Made with ❤️