Download the PHP package lochmueller/index without Composer

On this page you can find all versions of the php package lochmueller/index. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package index

EXT:index

EXT:index is a TYPO3 indexing framework to handle the content generation of a TYPO3 website related to different index configurations. This could be used for search engine fill-up processes or other content engines that need the generated content of TYPO3 pages and files (AI provider). To speed up the indexing, the TYPO3 internal message bus is used.

You can use the PSR-14 events to get the index information or the webhook functions of the core to move the indexed information to external services. Please do not use the internal messages, because they are handled internally in the extension.

This extension was funded by the TYPO3 Association: community ideas I / community idea II & first blogpost / second blogpost

Installation & Configuration

  1. Run composer require lochmueller/index
  2. Create at least two scheduler tasks and take care that the scheduler is executed:
    • index:queue (example: every two days at midnight) fills up the message queue with the indexed pages via full index
    • messenger:consume index (based on the documentation) to handle the index processes of the queue
  3. Create index configurations on pages (example: on the root page of your site or subpages)
  4. Use the extension that is based on EXT:index and have fun

Feel free to create an issue if you have some more ideas or found a bug.

Configuration

The traversing configuration of the database and frontend indexing is configured via JSON. This is an example configuration for content indexing on the pages (database indexing online) and the URL build process for news. Only the first valid (limitToPages) extender is executed for every page.

Possible types are:

Every extender supports these common options, they are evaluated by the page traversing itself:

Option Type Description
type string Name of the extender (getName() of the ExtenderInterface implementation).
limitToPages int[] Restrict the extender to these page UIDs. Without this option the extender is used on every page.
dropOriginalUri bool Do not index the page itself, only the URIs that are created by the extender.

Generic record extender

Most detail views follow the same pattern: a TCA table, an optional record type filter and a plugin namespace with the controller, the action and the record argument. The record extender covers this pattern via configuration, so there is no need for an own PHP class. The configuration of the news extender looks like this:

Option Type Description
table string Required. TCA table of the detail records. Without this option the extender does nothing.
recordStorages int[] Storage pages of the records. Defaults to the current detail page, if the option is missing or empty.
recordTypes string[] Optional filter on the record type (TCA type field). Without this option all record types are used.
constraints object Optional filter on record fields. A scalar value is compared as a string, an array works like an IN comparison.
arguments object Routing arguments for the URI generation. The structure is passed to the page router, placeholders are resolved per record.

The records are selected with the frontend restrictions (hidden, start/endtime, fe_group) and the language overlay handling of the extension, so the same rules as for the dedicated extenders apply.

These placeholders can be used in every string of arguments:

Placeholder Value
{uid} UID of the record
{pid} PID of the record
{pageUid} UID of the current detail page
{languageId} ID of the current site language
{field:slug} Value of the record field slug (every field of the record can be used)

A string that only consists of one placeholder keeps the original type ("{uid}" becomes an integer), which is important for the aspects of the route enhancers. If a string contains more content, the placeholders are replaced inside the string ("{uid}-{field:slug}" becomes "99-my-slug"). Unknown placeholders stay untouched, so that broken configurations are visible in the generated URI. Fields that are not part of the record resolve to null. The _language argument is always set by the extender and cannot be overridden.

If you want to ship a named preset for your own extension instead of repeating the configuration, extend the class and override getBaseConfiguration(). The values of the index configuration always win over the base configuration:

Use an own implementation of the ExtenderInterface if the URI generation needs real logic, e.g. more than one URI per record, an external data source or additional queries.

Content processing

Before the generated HTML is handed over to the indexing process, it can be piped through a chain of content processors. In each index configuration record you can activate the desired processors via checkboxes; the list is built dynamically from all services that implement Lochmueller\Index\ContentProcessing\ContentProcessorInterface (tag index.content_processor).

Shipped processors:

To provide your own processor, implement the interface and register a getLabel() method - autoconfiguration and the TCA itemsProcFunc pick it up automatically.

Index mechanisms

Here are some information about the different index mechanisms and the advantages or disadvantages. You can use different index mechanism on different sub pages.

Developer information

The extension provides a framework for easy indexing pages and files. Use this documentation to get the right information for your extension.

Events

There are four public main events that you can use in your extension. EXT:index takes care of the index processing and the async handling of the queue. So you can directly consume the event, add your business logic and run more or less complex processes in the event listener. Please DO NOT use the internal messages that are part of the internal process.

Please keep in mind, that the messages are pushed directly, one after another, into the message bus. If there are any reasons that the FIFO (first in, first out) is not consistent, we cannot guarantee that the events (especially Start and Finish) are in the right order

There are additional events to customize the index process:

Symfony DI Tags

There are several Symfony DI tags, that create iterables for internal functions. You can use this to add your own integrations. These are very "internal" options to extend the index process:

Webhooks / Reactions

All four events are available as webhooks. You can use the webhook functions of the core to move the indexed information to external services. It is also possible to add external resources to the internal index process. There are two reactions that create indexed pages and files. Feel free to connect instances ;)

File extraction

The file extraction is based on different third party packages. Please take care to install the packages, so that the process to fetch content out of files is working. Check out the composer.json suggest section.

Extension based on EXT:index


All versions of index with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
typo3/cms-backend Version ^13.4 || ^14.3
typo3/cms-core Version ^13.4 || ^14.3
typo3/cms-frontend Version ^13.4 || ^14.3
typo3/cms-reactions Version ^13.4 || ^14.3
typo3/cms-webhooks Version ^13.4 || ^14.3
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package lochmueller/index contains the following files

Loading the files please wait ...