Hopp til innholdet

Aurora 1.2 is out!

What's new →
Dokumentasjonsmeny

Drifte et nettsted

Flytte fra et annet system

Importer sider, oversettelser, filer, viderekoblinger og menyer fra kode.

Fra WordPress gjør importen jobben. Fra et hvilket som helst annet publiseringssystem skriver du en import: en Artisan-kommando eller en seeder som leser det gamle nettstedet og skriver Auroras modeller. Denne siden viser hver del. Tabellene bak dem står i Datareferanse.

Sider og blokkene deres

Blokkene til en side er én flat liste for alle språk. Skriv dem som et tre, så lager BlockTreeBuilder::flatten() listen og gir hver blokk en id:

PHP
use Aurora\Enums\PageStatus;
use Aurora\Models\Layout;
use Aurora\Models\Page;
use Aurora\Support\BlockTreeBuilder;

$blocks = BlockTreeBuilder::flatten([
    ['type' => 'heading', 'data' => ['text' => $old->title, 'level' => 'h1']],
    ['type' => 'band', 'data' => ['background' => 'muted'], 'children' => [
        'content' => [                                   // the band's slot
            ['type' => 'rich-text', 'data' => ['body' => $old->html]],
        ],
    ]],
]);

$page = Page::query()->create([
    'title' => $old->title,
    'slug' => $old->slug,
    'excerpt' => $old->summary,
    'layout_id' => Layout::query()->where('handle', 'standard')->value('id'),
    'status' => PageStatus::Published,
    'published_at' => $old->published_at,
    'blocks' => $blocks,
]);

Oversettelser

Tittel, adresse, sammendrag og SEO-felt lagres per språk. Blokktekst på andre språk legges i block_translations, etter blokk-id og felt, bare tekst:

PHP
$page->setTranslation('title', 'nb', $old->title_nb);
$page->setTranslation('slug', 'nb', $old->slug_nb);

$page->block_translations = [
    'nb' => [
        $blocks[0]['id'] => ['text' => $old->title_nb],
    ],
];

$page->save();

Oppsettfelt

Oppsettets egne felt settes med settingsWithLayoutValues(), med navnet på oppsettet eller handle-en:

PHP
$page->settings = $page->settingsWithLayoutValues(['background' => $asset->id], 'campaign');
$page->save();

Filer

AssetLibrary::fromFile() legger en fil i mediebiblioteket. Gi den en id laget av adressen til den gamle filen, så finner en ny kjøring av importen filen i stedet for å legge den til to ganger. Bruk id-en til filen overalt der blokker tar en fil eller et bilde.

PHP
use Aurora\Support\AssetLibrary;
use Ramsey\Uuid\Uuid;

$asset = AssetLibrary::fromFile($path, [
    'id' => Uuid::uuid5(Uuid::NAMESPACE_URL, $old->image_url)->toString(),
    'title' => $old->image_title,
    'alt' => $old->image_alt,
    'folder' => 'Imported/2026',
]);

['type' => 'image', 'data' => ['src' => $asset->id, 'alt' => $old->image_alt]];

Filer som er større enn mediebiblioteket tar imot, avvises: 10 MB for bilder og 50 MB for andre filer, med mindre aurora.media.max_image_mb og max_file_mb sier noe annet. Øk dem for importen om du trenger det.

Viderekoblinger og menyer

PHP
use Aurora\Models\Menu;
use Aurora\Models\MenuItem;
use Aurora\Models\Redirect;

// The old address keeps working, and follows the page if its address changes.
Redirect::query()->create(['from_path' => '/about.html', 'page_id' => $page->id, 'status_code' => 301]);

$menu = Menu::query()->create(['name' => 'Main navigation', 'is_visible' => true]);
$menu->locations()->create(['location' => 'header']);

MenuItem::query()->create([
    'menu_id' => $menu->id,
    'linkable_type' => $page->getMorphClass(),
    'linkable_id' => $page->id,
    'order' => 1,
]);

Greit å vite

  • Lagringer fra kode går rett ut på siden, publisert eller ikke. Bare sideskjemaet, den visuelle editoren og KI-verktøyene holder endringer på en publisert side igjen som upubliserte endringer.
  • Flere nettsteder: importer til et annet nettsted med CurrentSite::using($site, fn () => …).
  • Søk: bygg indeksen på nytt når importen er ferdig, med php artisan aurora:reindex.