123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578 |
- .. _simple theme templates:
- ======================
- Simple Theme Templates
- ======================
- The simple template is complex, it consists of many different elements and also
- uses macros and include statements. The following is a rough overview that we
- would like to give the developerat hand, details must still be taken from the
- :origin:`sources <searx/templates/simple/>`.
- A :ref:`result item <result types>` can be of different media types. The media
- type of a result is defined by the :py:obj:`result_type.Result.template`. To
- set another media-type as :ref:`template default`, the field ``template``
- in the result item must be set to the desired type.
- .. contents:: Contents
- :depth: 2
- :local:
- :backlinks: entry
- .. _result template macros:
- Result template macros
- ======================
- .. _macro result_header:
- ``result_header``
- -----------------
- Execpt ``image.html`` and some others this macro is used in nearly all result
- types in the :ref:`main result list`.
- Fields used in the template :origin:`macro result_header
- <searx/templates/simple/macros.html>`:
- url : :py:class:`str`
- Link URL of the result item.
- title : :py:class:`str`
- Link title of the result item.
- img_src, thumbnail : :py:class:`str`
- URL of a image or thumbnail that is displayed in the result item.
- .. _macro result_sub_header:
- ``result_sub_header``
- ---------------------
- Execpt ``image.html`` and some others this macro is used in nearly all result
- types in the :ref:`main result list`.
- Fields used in the template :origin:`macro result_sub_header
- <searx/templates/simple/macros.html>`:
- publishedDate : :py:obj:`datetime.datetime`
- The date on which the object was published.
- length: :py:obj:`time.struct_time`
- Playing duration in seconds.
- views: :py:class:`str`
- View count in humanized number format.
- author : :py:class:`str`
- Author of the title.
- metadata : :py:class:`str`
- Miscellaneous metadata.
- .. _engine_data:
- ``engine_data_form``
- --------------------
- The ``engine_data_form`` macro is used in :origin:`results,html
- <searx/templates/simple/results.html>` in a HTML ``<form/>`` element. The
- intention of this macro is to pass data of a engine from one :py:obj:`response
- <searx.engines.demo_online.response>` to the :py:obj:`searx.search.SearchQuery`
- of the next :py:obj:`request <searx.engines.demo_online.request>`.
- To pass data, engine's response handler can append result items of typ
- ``engine_data``. This is by example used to pass a token from the response to
- the next request:
- .. code:: python
- def response(resp):
- ...
- results.append({
- 'engine_data': token,
- 'key': 'next_page_token',
- })
- ...
- return results
- def request(query, params):
- page_token = params['engine_data'].get('next_page_token')
- .. _main result list:
- Main Result List
- ================
- The **media types** of the **main result type** are the template files in
- the :origin:`result_templates <searx/templates/simple/result_templates>`.
- .. _template default:
- ``default.html``
- ----------------
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`default.html
- <searx/templates/simple/result_templates/default.html>`:
- content : :py:class:`str`
- General text of the result item.
- iframe_src : :py:class:`str`
- URL of an embedded ``<iframe>`` / the frame is collapsible.
- audio_src : uri,
- URL of an embedded ``<audio controls>``.
- .. _template images:
- ``images.html``
- ---------------
- The images are displayed as small thumbnails in the main results list.
- title : :py:class:`str`
- Title of the image.
- thumbnail_src : :py:class:`str`
- URL of a preview of the image.
- resolution :py:class:`str`
- The resolution of the image (e.g. ``1920 x 1080`` pixel)
- Image labels
- ~~~~~~~~~~~~
- Clicking on the preview opens a gallery view in which all further metadata for
- the image is displayed. Addition fields used in the :origin:`images.html
- <searx/templates/simple/result_templates/images.html>`:
- img_src : :py:class:`str`
- URL of the full size image.
- content: :py:class:`str`
- Description of the image.
- author: :py:class:`str`
- Name of the author of the image.
- img_format : :py:class:`str`
- The format of the image (e.g. ``png``).
- source : :py:class:`str`
- Source of the image.
- filesize: :py:class:`str`
- Size of bytes in :py:obj:`human readable <searx.humanize_bytes>` notation
- (e.g. ``MB`` for 1024 \* 1024 Bytes filesize).
- url : :py:class:`str`
- URL of the page from where the images comes from (source).
- .. _template videos:
- ``videos.html``
- ---------------
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`videos.html
- <searx/templates/simple/result_templates/videos.html>`:
- iframe_src : :py:class:`str`
- URL of an embedded ``<iframe>`` / the frame is collapsible.
- The videos are displayed as small thumbnails in the main results list, there
- is an additional button to collaps/open the embeded video.
- content : :py:class:`str`
- Description of the code fragment.
- .. _template torrent:
- ``torrent.html``
- ----------------
- .. _magnet link: https://en.wikipedia.org/wiki/Magnet_URI_scheme
- .. _torrent file: https://en.wikipedia.org/wiki/Torrent_file
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`torrent.html
- <searx/templates/simple/result_templates/torrent.html>`:
- magnetlink:
- URL of the `magnet link`_.
- torrentfile
- URL of the `torrent file`_.
- seed : ``int``
- Number of seeders.
- leech : ``int``
- Number of leecher
- filesize : ``int``
- Size in Bytes (rendered to human readable unit of measurement).
- files : ``int``
- Number of files.
- .. _template map:
- ``map.html``
- ------------
- .. _GeoJSON: https://en.wikipedia.org/wiki/GeoJSON
- .. _Leaflet: https://github.com/Leaflet/Leaflet
- .. _bbox: https://wiki.openstreetmap.org/wiki/Bounding_Box
- .. _HTMLElement.dataset: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset
- .. _Nominatim: https://nominatim.org/release-docs/latest/
- .. _Lookup: https://nominatim.org/release-docs/latest/api/Lookup/
- .. _place_id is not a persistent id:
- https://nominatim.org/release-docs/latest/api/Output/#place_id-is-not-a-persistent-id
- .. _perma_id: https://wiki.openstreetmap.org/wiki/Permanent_ID
- .. _country code: https://wiki.openstreetmap.org/wiki/Country_code
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`map.html
- <searx/templates/simple/result_templates/map.html>`:
- content : :py:class:`str`
- Description of the item.
- address_label : :py:class:`str`
- Label of the address / default ``_('address')``.
- geojson : GeoJSON_
- Geometries mapped to HTMLElement.dataset_ (``data-map-geojson``) and used by
- Leaflet_.
- boundingbox : ``[ min-lon, min-lat, max-lon, max-lat]``
- A bbox_ area defined by min longitude , min latitude , max longitude and max
- latitude. The bounding box is mapped to HTMLElement.dataset_
- (``data-map-boundingbox``) and is used by Leaflet_.
- longitude, latitude : :py:class:`str`
- Geographical coordinates, mapped to HTMLElement.dataset_ (``data-map-lon``,
- ``data-map-lat``) and is used by Leaflet_.
- address : ``{...}``
- A dicticonary with the address data:
- .. code:: python
- address = {
- 'name' : str, # name of object
- 'road' : str, # street name of object
- 'house_number' : str, # house number of object
- 'postcode' : str, # postcode of object
- 'country' : str, # country of object
- 'country_code' : str,
- 'locality' : str,
- }
- country_code : :py:class:`str`
- `Country code`_ of the object.
- locality : :py:class:`str`
- The name of the city, town, township, village, borough, etc. in which this
- object is located.
- links : ``[link1, link2, ...]``
- A list of links with labels:
- .. code:: python
- links.append({
- 'label' : str,
- 'url' : str,
- 'url_label' : str, # set by some engines but unused (oscar)
- })
- data : ``[data1, data2, ...]``
- A list of additional data, shown in two columns and containing a label and
- value.
- .. code:: python
- data.append({
- 'label' : str,
- 'value' : str,
- 'key' : str, # set by some engines but unused
- })
- type : :py:class:`str` # set by some engines but unused (oscar)
- Tag label from :ref:`OSM_KEYS_TAGS['tags'] <update_osm_keys_tags.py>`.
- type_icon : :py:class:`str` # set by some engines but unused (oscar)
- Type's icon.
- osm : ``{...}``
- OSM-type and OSM-ID, can be used to Lookup_ OSM data (Nominatim_). There is
- also a discussion about "`place_id is not a persistent id`_" and the
- perma_id_.
- .. code:: python
- osm = {
- 'type': str,
- 'id': str,
- }
- type : :py:class:`str`
- Type of osm-object (if OSM-Result).
- id :
- ID of osm-object (if OSM-Result).
- .. hint::
- The ``osm`` property is set by engine ``openstreetmap.py``, but it is not
- used in the ``map.html`` template yet.
- .. _template paper:
- ``paper.html``
- --------------
- .. _BibTeX format: https://www.bibtex.com/g/bibtex-format/
- .. _BibTeX field types: https://en.wikipedia.org/wiki/BibTeX#Field_types
- Displays result fields from:
- - :ref:`macro result_header`
- Additional fields used in the :origin:`paper.html
- <searx/templates/simple/result_templates/paper.html>`:
- content : :py:class:`str`
- An abstract or excerpt from the document.
- comments : :py:class:`str`
- Free text display in italic below the content.
- tags : :py:class:`List <list>`\ [\ :py:class:`str`\ ]
- Free tag list.
- type : :py:class:`str`
- Short description of medium type, e.g. *book*, *pdf* or *html* ...
- authors : :py:class:`List <list>`\ [\ :py:class:`str`\ ]
- List of authors of the work (authors with a "s" suffix, the "author" is in the
- :ref:`macro result_sub_header`).
- editor : :py:class:`str`
- Editor of the book/paper.
- publisher : :py:class:`str`
- Name of the publisher.
- journal : :py:class:`str`
- Name of the journal or magazine the article was published in.
- volume : :py:class:`str`
- Volume number.
- pages : :py:class:`str`
- Page range where the article is.
- number : :py:class:`str`
- Number of the report or the issue number for a journal article.
- doi : :py:class:`str`
- DOI number (like ``10.1038/d41586-018-07848-2``).
- issn : :py:class:`List <list>`\ [\ :py:class:`str`\ ]
- ISSN number like ``1476-4687``
- isbn : :py:class:`List <list>`\ [\ :py:class:`str`\ ]
- ISBN number like ``9780201896831``
- pdf_url : :py:class:`str`
- URL to the full article, the PDF version
- html_url : :py:class:`str`
- URL to full article, HTML version
- .. _template packages:
- ``packages``
- ------------
- Displays result fields from:
- - :ref:`macro result_header`
- Additional fields used in the :origin:`packages.html
- <searx/templates/simple/result_templates/packages.html>`:
- package_name : :py:class:`str`
- The name of the package.
- version : :py:class:`str`
- The current version of the package.
- maintainer : :py:class:`str`
- The maintainer or author of the project.
- publishedDate : :py:class:`datetime <datetime.datetime>`
- Date of latest update or release.
- tags : :py:class:`List <list>`\ [\ :py:class:`str`\ ]
- Free tag list.
- popularity : :py:class:`str`
- The popularity of the package, e.g. rating or download count.
- license_name : :py:class:`str`
- The name of the license.
- license_url : :py:class:`str`
- The web location of a license copy.
- homepage : :py:class:`str`
- The url of the project's homepage.
- source_code_url: :py:class:`str`
- The location of the project's source code.
- links : :py:class:`dict`
- Additional links in the form of ``{'link_name': 'http://example.com'}``
- .. _template code:
- ``code.html``
- -------------
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`code.html
- <searx/templates/simple/result_templates/code.html>`:
- content : :py:class:`str`
- Description of the code fragment.
- codelines : ``[line1, line2, ...]``
- Lines of the code fragment.
- code_language : :py:class:`str`
- Name of the code language, the value is passed to
- :py:obj:`pygments.lexers.get_lexer_by_name`.
- repository : :py:class:`str`
- URL of the repository of the code fragment.
- .. _template files:
- ``files.html``
- --------------
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`code.html
- <searx/templates/simple/result_templates/files.html>`:
- filename, size, time: :py:class:`str`
- Filename, Filesize and Date of the file.
- mtype : ``audio`` | ``video`` | :py:class:`str`
- Mimetype type of the file.
- subtype : :py:class:`str`
- Mimetype / subtype of the file.
- abstract : :py:class:`str`
- Abstract of the file.
- author : :py:class:`str`
- Name of the author of the file
- embedded : :py:class:`str`
- URL of an embedded media type (``audio`` or ``video``) / is collapsible.
- .. _template products:
- ``products.html``
- -----------------
- Displays result fields from:
- - :ref:`macro result_header` and
- - :ref:`macro result_sub_header`
- Additional fields used in the :origin:`products.html
- <searx/templates/simple/result_templates/products.html>`:
- content : :py:class:`str`
- Description of the product.
- price : :py:class:`str`
- The price must include the currency.
- shipping : :py:class:`str`
- Shipping details.
- source_country : :py:class:`str`
- Place from which the shipment is made.
- .. _template answer results:
- Answer results
- ==============
- See :ref:`result_types.answer`
- Suggestion results
- ==================
- See :ref:`result_types.suggestion`
- Correction results
- ==================
- See :ref:`result_types.corrections`
- Infobox results
- ===============
- See :ref:`result_types.infobox`
|