Ich möchte hier noch anmerken, dass ich diese Anpassung bisher nur testweise lokal implementiert habe und noch nicht im Shop einsetze. Also soweit erstmal ohne Gewähr. Wenn jemand diese Erweiterung testen möchte, würde ich mich natürlich über Feedback freuen.
Wäre auch gut, wenn jemand von den erfahrenen Programmierern hier mal auf den Code schauen könnte. Das ist mein erster Versuch am XTC Core herumzuschrauben.
Hier nun noch die Fortsetzung der Anleitung für Bildunterschriften, damit es auch für die zusätzlichen Artikelbilder funktioniert:
Anmerkung vorweg: bisher wird der Text für die Bildbeschreibungen nur gespeichert, wenn gleichzeitig ein Bild hoch geladen wird. Das Ändern der Bildunterschriften funktioniert noch nicht. Hierzu weiter unten mehr. Hilfe bei der Codeoptimierung ist natürlich sehr willkommen!Schritt 1: Datenbank erweiternin der Tabelle "products_images" ein neues Feld "image_description" anlegen
Schritt 2: Die Zusätzlichen Textfelder im Backend anlegenhierzu in der Datei admin/includes/modules/products_images.php in der MO PICS Scleife hinter
echo '<td class="main">'.TEXT_PRODUCTS_IMAGE.' '. ($i +1).'<br />'.xtc_draw_file_field('mo_pics_'.$i).'<br />'.xtc_draw_separator('pixel_trans.gif', '24', '15').' '.$mo_images[$i]["image_name"].xtc_draw_hidden_field('products_previous_image_'. ($i +1), $mo_images[$i]["image_name"]);
folgendes Einfügen:
echo '</td><td class="main">'.TEXT_PRODUCTS_IMAGE_DESCRIPTION.' '. ($i +1).'<br />'.xtc_draw_input_field('products_image_description'.$i, $mo_images[$i]["image_description"]).'<br />'.xtc_draw_separator('pixel_trans.gif', '24', '15');
Damit im Array $mo_images[$i]["image_description"] auch etwas drinsteht muss zudem noch die funktion xtc_get_products_mo_images() erweitert werden.
Hierzu in der Datei inc/xtc_get_products_mo_images.inc.php die Variable $mo_query so erweitern, dass auch unser Feld image_description aus der Tabelle products_images geholt wird. Sieht dann so aus:
$mo_query = "select image_id, image_nr, image_name, image_description from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . $products_id ."' ORDER BY image_nr";
Damit haben wir jetzt neue Felder für Bildunterschriften im Backend angelegt:
[ Für Gäste sind keine Dateianhänge sichtbar ]
Schritt 3: Bildunterschriften in der products_images Tabelle abspeichernIn der Datei admin/includes/classes/categories.php finden wir ungefähr bei Zeile 580 die MO PICS Schleife:
//MO_PICS
for ($img = 0; $img <MO_PICS; $img ++) {...
in der Schleife wird ein Array $mo_img angelegt (ungef. Zeile 595) und dieses Erweitern wir jetzt um unsere 'image_description':
//get data & write to table$mo_img = array ('products_id' => xtc_db_prepare_input
($products_id), 'image_nr' => xtc_db_prepare_input
($img +1), 'image_name' => xtc_db_prepare_input
($products_image_name), 'image_description' => xtc_db_prepare_input
($products_data['products_image_description'.$img])); nun werden die Texte für die Bildbeschreibungen auch abgespeichert. Allerdings nur, wenn auch gleichzeitig ein Bild hochgeladen wird. Nachträglich lassen sich die Bildunterschriften bis jetzt also noch nicht ändern. Wer eine Lösung zu dem Problem hat, bekommt ein Sternchen ins Muttiheft
Wenn beim Duplizieren des Artikels auch die Bildunterschriften kopiert werden sollen muss weiter unten in der categories.php noch eine Änderung vorgenommen werden (ca. Zeile 882)
xtc_db_query("INSERT INTO ".TABLE_PRODUCTS_IMAGES." ...
hier fügen wir noch hinter
image_nr = '".$mo_img['image_nr']."',
folgendes ein:
image_description = '".$mo_img['image_description']."',
Schritt 4: Smarty-Variablen anlegenin der Datei includes/modules/product_info.php ungefähr bei Zeile 160 finden wir eine Schleife
foreach ($mo_images as $img) { ...
die sieht bei mir nach anlegen der 'PRODUCTS_IMAGE_DESCRIPTION' smarties so aus:
foreach ($mo_images as $img) { $more_images_data[] = array ('PRODUCTS_IMAGE' => DIR_WS_INFO_IMAGES
.$img['image_name'], 'PRODUCTS_POPUP_LINK' => 'javascript:popupWindow(\''.xtc_href_link
(FILENAME_POPUP_IMAGE
, 'pID='.$product->data['products_id'].$connector.'imgID='.$img['image_nr']).'\')', 'PRODUCTS_IMAGE_DESCRIPTION' => $img['image_description'] ); // BOF - Tomcraft - 2009-09-12 - needed for non modified templates $mo_img = DIR_WS_INFO_IMAGES
.$img['image_name']; $info_smarty->assign('PRODUCTS_IMAGE_'.$img['image_nr'], $mo_img); $info_smarty->assign('PRODUCTS_POPUP_LINK_'.$img['image_nr'], 'javascript:popupWindow(\''.xtc_href_link
(FILENAME_POPUP_IMAGE
, 'pID='.$product->data['products_id'].$connector.'imgID='.$img['image_nr']).'\')'); $info_smarty->assign('PRODUCTS_IMAGE_DESCRIPTION'.$img['image_nr'], $img['image_description']); // EOF - Tomcraft - 2009-09-12 - needed for non modified templates} Schritt 5: Bildunterschriften im Frontend ausgebenin meiner product_info_v1.html sieht das jetzt ungefähr so aus:
{foreach item=more_images_data from=$more_images}
<div>{$more_images_data.PRODUCTS_IMAGE_DESCRIPTION}</div>
<a class="thickbox" rel="{$PRODUCTS_ID}" title="{$PRODUCTS_NAME}" href="{$more_images_data.PRODUCTS_IMAGE|replace:"info_images":"original_images"}"><img align="left" src="{$more_images_data.PRODUCTS_IMAGE}" alt="{$PRODUCTS_NAME}" /></a>
{/foreach}
Hier ein Screenshot vom Frontend:
[ Für Gäste sind keine Dateianhänge sichtbar ]
So.. die Anleitung ist jetzt glaub ich noch etwas unübersichtlich. Sobald das Ändern des Bildunterschrift-Textes noch funktioniert und ich ausgiebig getestet habe, schreibe ich nochmal eine schön übersichtliche und ausführlichere Anleitung.