Zusätzliche Datenfelder

Du hast ein PHP-Code Problem und benötigst Hilfe bei der Lösung
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Zusätzliche Datenfelder

Beitrag von Kopernikus »

Grüsst Euch

Ich versuche gerade zusätzliche Datenfelder (ISBN und Autor) in Webs einzubauen. Dafür habe ich die admin/includes/modules/new_product.php und die admin/includes/classes/categories.php entsprechend erweitert und den folgenden sql Code in meiner DB ausgeführt.

Code: Alles auswählen


ALTER TABLE `products` 
ADD `products_isbn` VARCHAR( 30 ) NOT NULL ,
ADD `products_author` VARCHAR( 80 ) NOT NULL;
Im Admin sind die Felder bereits sichtbar und können auch beschrieben werden. Nur beim Speichern erhalte ich nun folgenden SQL Fehler:

Code: Alles auswählen

[WEB-Shop SQL Error]
/home/httpd/vhosts/engelis-naturshop.ch/httpdocs/inc/xtc_db_perform.inc.php:69
1054 - Unknown column 'products_autor' in 'field list'
update products set products_quantity = '10', products_model = '042230001', products_ean = '', products_isbn = '', products_autor = '', products_price = '57.073200', products_sort = '17', products_shippingtime = '11', products_discount_allowed = '0.00', products_date_available = '0000-00-00', products_date_expire = '0000-00-00', products_weight = '0.720', products_status = '1', products_startpage = '0', products_startpage_sort = '3', products_tax_class_id = '5', product_template = 'product_info_1.html', options_template = 'table_listing_attributes.html', manufacturers_id = '18', products_fsk18 = '0', products_vpe_value = '0.0000', products_vpe_status = '', products_vpe = '', products_image = '261a84bbf8d8c73f56952f1b5cf3fe2c.jpg', group_permission_0 = '1', group_permission_1 = '1', group_permission_3 = '1', google_category = 'Gesundheit & Schönheit > Gesundheitspflege > Fitness & Ernährung > Vitamine & Nahrungsergänzungsmittel', agi_google_export = '1', agi_google_online_only = '0', agi_google_condition = 'new', agi_google_adwords_grouping = '', agi_google_adwords_labels = '', agi_google_adwords_redirect = '', agi_google_excluded_destination = '', agi_google_expiration_date = '', agi_google_identifier_exists = '1', agi_google_products_brand = '', agi_google_energy_efficiency = '', agi_google_multipack_amount = '1', products_last_modified = now() where products_id = '1077'
Was könnte ich da übersehen haben?
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Zusätzliche Datenfelder

Beitrag von Xantiva »

das "h"! ;)
ADD `products_author` VARCHAR( 80 ) NOT NULL;
Unknown column 'products_autor' in 'field list'
Mein Shop: http://www.basteln-selbermachen.de
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Zusätzliche Datenfelder

Beitrag von Kopernikus »

Hallo Mike

Besten Dank für den Tipp - das wars :D

Nun bin ich aber schon wieder ein paar Schritte weiter. Die zusätzlichen Datenfelder sind eingebaut und ich stehe bereits vor der nächsten Hürde. Kurz mein Problem:

Ich habe alle meine Produkte bei Google Merchant Center angemeldet. Die meisten Produkte wurden akzeptiert, einige erfüllen jedoch nicht die Anforderungen von Google. Ich habe lange überlegt an was es liegen könnte. Nun bin ich dem Übeltäter auf die Spur gekommen. Google blockt offenbar Produkte welche das Wort Alkohol oder Ethanol enthalten. Das ist schön und gut, doch Google unterscheidet da leider nicht zwischen Lebensmittel und Kosmetika. Enthält z.B. ein Kosmetikartikel Alkohol, wird dieser von Google geblockt. Das ist zwar absolut idiotisch, doch leider nicht zu umgehen.

Nun habe ich mir folgendes überlegt. Wenn ich nun alle Inhaltsstoffe in eine separate DB auslagern würde, könnte ich diese Prüfung umgehen. Der Kurztext wäre dafür eigentlich prädestiniert gewesen, doch da die Suche den Beschreibungstext aus dem Kurztext bezieht, ist das leider keine 100%tige Lösung. Also habe ich mir ein neues Textfeld im Admin angelegt. Das sieht nun wie folgt aus:

Bild

Dazu habe ich nun zwei Fragen:

1. Wie kann ich die xtoolbar diesem Feld anfügen?
2. Die Einträge in diesem Feld werden in einem separaten Tab angezeigt. Der Aufruf geschieht wie folgt:

Code: Alles auswählen

<li><a href="#tabs-2">{#extratext#}</a></li>

Code: Alles auswählen

<div id="tabs-2" class="tab">
			    {$PRODUCTS_EXTRATEXT}
			</div>
Da ich dieses Tab nicht bei allen Artikeln benötige, möchte ich es nur anzeigen, wenn sich ein Inhalt darin befindet. Gibt es eine IF Abfrage, mit welcher ich prüfen kann, ob Inhalte existieren?

Besten Dank im Voraus
Grüsse Patrik
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Zusätzliche Datenfelder

Beitrag von Kopernikus »

Hi Mike

Frage 1 hat sich soeben erübrigt.

In der inc / xtc_wysiwyg.inc.php

Habe ich folgendes ergänzt:

Code: Alles auswählen

// WYSIWYG editor products extratext by Patrik 28.07.2013
  case 'products_extratext':
    $val ='var oFCKeditor = new FCKeditor( \'products_extratext_'.$langID.'\', \'600\', \'300\'  ) ;
                        	   oFCKeditor.BasePath = "'.$path.'" ;
                        	   oFCKeditor.Config["LinkBrowserURL"] = "'.$filemanager.$file_path.'" ;
                        	   oFCKeditor.Config["ImageBrowserURL"] = "'.$filemanager.$image_path.'" ;
							   oFCKeditor.Config["FlashBrowserURL"] = "'.$filemanager.$flash_path.'" ;
                        	   oFCKeditor.Config["AutoDetectLanguage"] = false ;
                        	   oFCKeditor.Config["DefaultLanguage"] = "'.$lang.'" ;
                        	   oFCKeditor.ReplaceTextarea() ;
                        	   ';
    break;
und in der /admin/categories/ folgenden Eintrag ergänzt:

Code: Alles auswählen

 echo xtc_wysiwyg('products_extratext', $data['code'], $languages[$i]['id']);
Und es klappt :D

Frage 2 ist aber trotzdem noch offen. Vielleicht hast Du mir dazu ja noch einen Tipp?
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Zusätzliche Datenfelder

Beitrag von Xantiva »

Code: Alles auswählen

{if $PRODUCTS_EXTRATEXT}
    ....
{/if}
Mein Shop: http://www.basteln-selbermachen.de
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Zusätzliche Datenfelder

Beitrag von Kopernikus »

Xantiva hat geschrieben:

Code: Alles auswählen

{if $PRODUCTS_EXTRATEXT}
    ....
{/if}
Ja, soweit bin ich eben auch. Doch was mache ich bei den ..... rein?
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Zusätzliche Datenfelder

Beitrag von Kopernikus »

Ach so geht's

Code: Alles auswählen

 {if $PRODUCTS_EXTRATEXT !=''}
                         	<div id="tabs-2" class="tab">
			 {$PRODUCTS_EXTRATEXT}
			</div>
{/if}
Nun habe ich aber doch noch eine Frage. Ich habe die Downloads ebenfalls in ein Tab verschoben. Dementsprechend hätte ich dort auch gerne leere Downloads ausgeblendet.

Leider funktioniert das dort nicht :(

Code: Alles auswählen

   {if products_media !=''}  
            <div id="tabs-4" class="tab media">
    {products_media}
{/if}
Warum? :?
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Zusätzliche Datenfelder

Beitrag von Xantiva »

Das $ fehlt vor products_media (if products_media ...)

Und dann wird der DIV nicht innerhalb des IF-Blocks geschlossen?
Mein Shop: http://www.basteln-selbermachen.de
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Zusätzliche Datenfelder

Beitrag von Kopernikus »

Xantiva hat geschrieben:Das $ fehlt vor products_media (if products_media ...)

Und dann wird der DIV nicht innerhalb des IF-Blocks geschlossen?
Hi Mike

Dafür müsste aber {$PRODUCTS_MEDIA} funktionieren!
Die Media Inhalte können aber nur über {products_media} aufgerufen werden. Mit $ funktioniert das Ganze bereits nicht mehr. Ich verstehe ehrlich gesagt aber nicht, weshalb es nur ohne $ funktioniert.
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Zusätzliche Datenfelder

Beitrag von Xantiva »

Ich hatte es nur überflogen, sorry. products_media ist eine Smarty Funktion und keine Variable. Und die kannst Du nicht so per IF abfragen. Dann würden auch alle Datenbankabfragen, etc. immer doppelt ausgeführt werden.

Ich würde den div an der Stelle rausnehmen und dann in das Template für die Funktion integrieren:

module/products_media.html

Code: Alles auswählen

{config_load file="$language/lang_$language.conf" section="products_media"}
{if $module_content}
<div id="tabs-4" class="tab media">
  <div id="products_media" class="section grid_12 alpha omega">
    <h2>{#heading#}</h2>
    <ul class="grid_12 alpha omega">
    {foreach item=item from=$module_content}
      <li class="grid_12 alpha omega">
      <strong>{$item.FILENAME}</strong><br />
      {$item.DESCRIPTION}
      {$item.FILESIZE}
      {$item.BUTTON|button}
    </li>
    {/foreach}
    </ul>
  </div>
</div>
{/if}
Und dann nur noch den Aufruf von {products_media} ...

ungetestet und ohne Gewähr ;)
Mein Shop: http://www.basteln-selbermachen.de
Antworten