ich bin neu bei Oxid. Ich möchte gerne ein neues Feld im Adminbereich (Artikel->Bilder) mit ein Modul hinzufügen. Als erstens was funktioniert:
Ich habe einiges in Datei /application/controllers/admin/article_products.php angepasst und auch hingekriegt das Bild hochzuladen und zu verwenden. Ich will es aber Updatesicher machen und daher mit einen Modul das hinkriegen.
Das Feld konnte ich mit Modul den Block erweitern:
Mein block .tpl liegt in Verzeichnis modules/ad_image/block/article_pictures.tpl.
Das Bild wird auch hochgeladen, da die Funktionen direkt von original Article_Products.php Datei geerbt werden.
Wie kann ich denn Article_Products.php erweitern oder meine eigene controller welches in Modulordner liegt verwenden?
Das Bild kann ich zwar hochladen aber nicht löschen, da dafür keine Funktion gefunden wird.
Wie oben schon geschrieben, wenn ich die Funktionen direkt in Original Article_Product.php eintrage, dann kann das Bild auch gelöscht werden. (Nicht Updatesicher)
einen eigenen Index für Dein Bild anlegen, dann die Methode aus Article_Pictures.php überladen:
public function deletePicture()
{
$myConfig = $this->getConfig();
if ($myConfig->isDemoShop()) {
// disabling uploading pictures if this is demo shop
$oEx = oxNew("oxExceptionToDisplay");
$oEx->setMessage('ARTICLE_PICTURES_UPLOADISDISABLED');
oxRegistry::get("oxUtilsView")->addErrorToDisplay($oEx, false);
return;
}
$sOxId = $this->getEditObjectId();
$iIndex = oxRegistry::getConfig()->getRequestParameter("masterPicIndex");
$oArticle = oxNew("oxarticle");
$oArticle->load($sOxId);
if ($iIndex == "ICO") {
// deleting main icon
$this->_deleteMainIcon($oArticle);
} elseif ($iIndex == "TH") {
// deleting thumbnail
$this->_deleteThumbnail($oArticle);
} elseif ($iIndex == "xxx") {
// deleting thumbnail
$this->_deletexxxxxxxxx($oArticle);
}else {
$iIndex = (int) $iIndex;
if ($iIndex > 0) {
// deleting master picture
$this->_resetMasterPicture($oArticle, $iIndex, true);
}
}
$oArticle->save();
}
und
protected function _deletexxxxxxxxx($oArticle)
{
if ($oArticle->oxarticles__oxxxx->value) {
//Löschen des Bilder noch einfügen
//reseting field
$oArticle->oxarticles__oxxxx = new oxField();
}
}
Die 2 Methoden in eine Datei article_pictures_ext.php und in metadata.php eintragen, fertig:
Hi Foxido, ich habe es genauso gemacht gehabt, aber ohne erfolg. Ich bin mir sicher, dass ich an einer Stelle einen kleinen Fehler mache. Also mein PHP-Code sieht folgendermaßen aus:
class ad_image_upload_ext extends oxAdminDetails
{
/**
* Loads article information - pictures, passes data to Smarty
* engine, returns name of template file "article_pictures.tpl".
*
* @return string
*/
public function deletePicture()
{
$myConfig = $this->getConfig();
if ($myConfig->isDemoShop()) {
// disabling uploading pictures if this is demo shop
$oEx = oxNew("oxExceptionToDisplay");
$oEx->setMessage('ARTICLE_PICTURES_UPLOADISDISABLED');
oxRegistry::get("oxUtilsView")->addErrorToDisplay($oEx, false);
return;
}
$sOxId = $this->getEditObjectId();
$iIndex = oxRegistry::getConfig()->getRequestParameter("masterPicIndex");
$oArticle = oxNew("oxarticle");
$oArticle->load($sOxId);
if ($iIndex == "ICO") {
// deleting main icon
$this->_deleteMainIcon($oArticle);
} elseif ($iIndex == "TH") {
// deleting thumbnail
$this->_deleteThumbnail($oArticle);
} elseif ($iIndex == "FI") {
// deleting thumbnail
$this->_deleteFormimg($oArticle);
}else {
$iIndex = (int) $iIndex;
if ($iIndex > 0) {
// deleting master picture
$this->_resetMasterPicture($oArticle, $iIndex, true);
}
}
$oArticle->save();
}
protected function _deleteFormimg($oArticle)
{
if ($oArticle->oxarticles__oxformimg->value) {
if (!$oArticle->isDerived()) {
$oPicHandler = oxRegistry::get("oxPictureHandler");
$oPicHandler->deleteFormimg($oArticle);
}
//reseting field
$oArticle->oxarticles__oxformimg = new oxField();
}
}
}
Mache ich hier im Bereich [B]class[/B] richtig?
Wenn ich den Button Löschen anklicke wird einfach die Seite neu geladen und passiert nichts. Das Bild ist immer noch da.