Verständnisfrage Child Theme: Einstellungen im Child

Hallo!
Da ich aus der Forensuche nicht schlau werde, mal eine kurze Verständnisfrage.
Nach der Anleitung im Buch “Online-Shops mit OXID eShop” (O´Reilly) habe ich ein Child-Theme von azure angelegt. Ich habe die oxid.css und eine footer.tpl Datei angepasst.
Das scheint so weit auch alles zu funktionieren.
Ich wundere mich lediglich darüber, dass der Kasten “Einstellungen” bei meinem Child-Theme nur den Namen des Themes anzeigt.
Sollten hier nicht die gleichen Einstellungen angezeigt werden, wie im Parent?
Praktisch sieht es so aus, dass die im Parent vorgenommenen Einstellungen im Child wirken.
Ist das “works as designed” oder habe ich was übersehen?

Vielen Dank im Voraus für Eure Antworten!

Beste Grüße.
Bianca

Das ist korrekt. Die Einstellungen können nur im Eltern-Theme geändert werden.

Und wieder schlauer geworden!

DANKEEEEE!

Das finde ich aber etwas unglücklich geregelt. Das Child_Theme macht man ja wegen inviduellen Änderungen, wo ich meine da gehören auch die Einstellungen zu.
Z.b die Bildergrößen hängen mit dem Template zusammen. Größere Bilder im Child Theme sehen im orginal Theme nicht so gut aus und umgekehrt.

Gibt es eine Möglichkeit das zu ändern?

Da Parent und Child immer zusammengehören, ist es kein Problem, die Einstellungen im Parent zu machen. Man muss es halt wissen…

Man kann aus der Setup.sql die sqls für oxconfig und oxconfigdisplay kopieren und die oxids und den Themenamen ändern (oxids müssen eindeutig sein) um einzelne Parameter im Childtheme konfigurierbar zu machen.
Hier ist ein für 4.9 angepasstes skript das alle Einträge kopiert:

<?php
/**
 * $Id$
 *
 * Bemerkenswert ist, dass die oxid in oxconfig und oxconfigdisplay nicht
 * korresponieren.
 * Wenn ein configWert gepeichert wird, bekommt der eine neue ID
 * siehe: core/oxconfig ~ 1680
 *
 * # Vor dem ersten Lauf die beiden Werte für Quelle und Ziel anpassen
 * # Datei ins root-Verzeichnis
 * # Vorher den Theme-Ordner kopieren und umbenennen
 */

// Hier anpassen.
$scriptConfig = (object) array(
    'from' => 'flow',           // Quelle
    'to'   => 'flow_custom'          // Ziel
);

require_once dirname(__FILE__) . "/bootstrap.php";
$shopConfig = oxregistry::getConfig();


$oDb      = oxDb::getDb(oxDB::FETCH_MODE_ASSOC);
$sShopId  = $shopConfig->getBaseShopId();

$sSql = "
    SELECT
        `cfg`.`oxid`                                                   AS `id`,
        `cfg`.`oxmodule`                                               AS `theme`,
        `cfg`.`oxvarname`                                              AS `name`,
        `cfg`.`oxvartype`                                              AS `type`,
        DECODE( `cfg`.`oxvarvalue`, '" . $shopConfig->sConfigKey . "') AS `value`,
        `cfgd`.`oxgrouping`                                            AS `group`,
        `cfgd`.`oxvarconstraint`                                       AS `constraint`,
        `cfgd`.`oxpos`                                                 AS `pos`
    FROM
        `oxconfig`        AS `cfg`,
        `oxconfigdisplay` AS `cfgd`
    WHERE
        `cfg`.`oxshopid` = '" . $sShopId . "'
    AND
        `cfg`.`oxmodule` = 'theme:" . $scriptConfig->from ."'
    AND(
        `cfgd`.`oxcfgmodule` = `cfg`.`oxmodule`
        AND
        `cfgd`.`oxcfgvarname` = `cfg`.`oxvarname`
    )
";

$aThemeValues = $oDb->getAll( $sSql );

if( is_array( $aThemeValues )
    && !empty( $aThemeValues ) )
{
    // lösche vorhande Einträge für das theme
    $oDb->Execute("
        DELETE FROM
            `oxconfig`
        WHERE
            `oxshopid`  = '" . $sShopId . "'
        AND
            `oxmodule` = 'theme:" . $scriptConfig->to . "'
    ");

    // lösche vorhande Einträge für das theme
    $oDb->Execute("
        DELETE FROM
            `oxconfigdisplay`
        WHERE
            `oxcfgmodule` = 'theme:" . $scriptConfig->to . "'
    ");

    foreach( $aThemeValues as $aConfig )
    {
        $cfg = (object) $aConfig;
        $sSql = "
            REPLACE INTO
                `oxconfig`
            SET
                `OXID`       = '" . $scriptConfig->to . "." . $cfg->name . "',
                `OXSHOPID`   = '" . $sShopId . "',
                `OXMODULE`   = 'theme:" . $scriptConfig->to . "',
                `OXVARNAME`  = '" . $cfg->name . "',
                `OXVARTYPE`  = '" . $cfg->type . "',
                `OXVARVALUE` = ENCODE( " . $oDb->quote( $cfg->value ) . ", " . $oDb->quote( $shopConfig->sConfigKey ) . " )
        ";
        $oDb->Execute($sSql);
        echo $sSql."<br>";

        // display
        $sSql = "
            REPLACE INTO
                `oxconfigdisplay`
            SET
                `oxid`            = '" . $scriptConfig->to . "." . $cfg->name . "',
                `oxcfgmodule`     = 'theme:" . $scriptConfig->to . "',
                `oxcfgvarname`    = '" . $cfg->name . "',
                `oxgrouping`      = '" . $cfg->group . "',
                `oxvarconstraint` = '" . $cfg->constraint . "',
                `oxpos`           = '" . $cfg->pos . "'
      ";
      $oDb->Execute($sSql);
        echo $sSql."<br>";
    }
} else {
    exit('Fehler. Keine Einträge für "'. $scriptConfig->from . '" gefunden' );
}

Ok. Super. :smiley:

Funktioniert wunderbar. Wäre doch was für das nächste Theme Relaise.

Nur beim Mobile aufrufen werden keine Änderungen angezeigt. Das ist aber glaube ich ein Bug im Flow Theme. Da funktiert es auch nicht mit der Stylesheet Änderung.