Hallo,
ich habe im Admin in der article_main.tpl neue Felder für den Artikel angelegt.
Jetzt möchte ich die Inhalte allerdings nicht in der “oxarticles” speichern sondern in einer neuen Tabelle in der Datenbank.
Hierzu habe ich die Tabelle “artikel_details” angelegt.
Im Template ist alles kein Problem. Das bekomm ich hin.
Bei den Funktionen liegt das Problem.
Es gelingt mir noch, über die nachfolgenden Funktionen die id und einen zweiten Datensatz in der [B]neuen Tabelle[/B] anzulegen.
Ich habe Funktionen in der [B]article_main.tpl[/B] im Admin wie folgt erweitert oder neu angelegt.
public function save(){
$detailsAktiv = $aParams['artikel_details__aktiv'];
$oArticle->saveErwDetails($detailsAktiv);
$this->setEditObjectId( $oArticle->getId() );
}
public function copyArticle( $sOldId = null, $sNewId = null, $sParentId = null ){
//copy artikel_details (.....)
$this->_copyArtErwDetails( $sOldId, $sNewId);
}
protected function _copyArtErwDetails ($sOldId, $sNewId)
{
$oExt = oxNew( "oxbase");
$oExt->init( "artikel_details" );
$oExt->load( $sOldId );
$oExt->setId( $sNewId );
$oExt->save();
}
In [B]core/oxarticle.php[/B] wurde dann folgende Funktion neu eingefügt:
public function saveErwDetails($detailsAktiv)
{
$oDb = oxDb::getDb();
$sTable = getLangTableName( 'artikel_details', $this->getLanguage() );
$sLangSuffix = oxLang::getInstance()->getLanguageTag($this->getLanguage());
$sQ = "insert into {$sTable} (oxid, aktiv) value (".$oDb->quote( $this->getId() ).", '{$detailsAktiv}')
on duplicate key update aktiv = '{$detailsAktiv}'";
return $oDb->execute( $sQ );
}
Jeder Versuch weitere spalten der Tabelle z.B. mit textA, textB, textC, textD, usw. scheitert.
Die EIngaben im Admin werden nicht übernommen.
Kann mir jemand der Code ergänzen?
Danke und Gruß,
Norbert