# Startups

### Introduction

The **startup system** allow developers process code at very early stage when opening a page, it is useful for example to initialize some library for further use, handle seo related data, etc. This guide explains how to work with startups in OpenCart with practical examples.

#### Key Components

* **Startup class**: The class to execute at startup.
* **Startup registry**: The system that stores the startups.

### How to Register a Startup

1. **Create a startup class**: Write your code into the index() method.
2. **Register the startup**: Save your startup using the startup registry.
3. **Ensure accessibility**: Ensure the startup is loaded when accessing a page.

#### Example: Registering a Startup

**Step 1: Create the Startup Class**

Create a PHP class for your extension. For example, place the following code in `extension/test_module/catalog/controller/startup.php`:

```php
<?php
namespace Opencart\Catalog\Controller\Extension\TestModule;

class Startup extends \Opencart\System\Engine\Controller {
  public function index(): void {
    // Process your customizations here
    $this->log->write('My startup has been successfully initialized!');
  }
  
}
```

**Step 2: Register the Startup**

Startups are typically registered in the `install()` method of your extension. For programmatic registration, use the `setting/startup` model.

Add the following code to your module’s controller:

```php
<?php
namespace Opencart\Admin\Controller\Extension\TestModule\Module;

class TestModule extends \Opencart\System\Engine\Controller {
    public function install(): void {
    // Load the startup model
    $this->load->model('setting/startup');
    
    // Register the startup
    $this->model_setting_startup->addStartup([
      'code'			=> 'my_startup',
      'action'		=> 'catalog/extension/test_module/startup',
      'description'	=> 'My custom startup',
      'sort_order'	=> 1,
      'status'		=> true
    ]);
  }

  public function uninstall(): void {
    // Remove the startup on uninstall
    $this->load->model('setting/startup');
    $this->model_setting_startup->deleteStartupByCode('my_startup');
  }
}
```

**Step 3: Test the Startup**

* Install your module via the OpenCart admin panel (`Extensions > Installer`).
* Install your module in Extensions menu (`Extensions > Extensions`).
* Check if the startup has been correctly registered into `Extensions > Startups`.
* Open a page on front-end
* Check the log file (`System > Maintenance > Error logs`) to verify that your custom log message appears.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.opencart.com/developer-guide/startups.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
