Die Produkte werden in der Datenbank gespeichert. Es gibt Plugins, die csv-Dateien mit Deinen Daten erstellen, die kannst Du nachher importieren. Suche nach Migration Produkte Import Export csv könnte helfen.
Beiträge von StefanSTS
-
-
Ok, als erstes würde ich versuchen, die angezeigten Produkte auf 2 pro Zeile zu beschränken. Das geht irgendwo im Backend mit Klickklick.
Deine Texte, zB. "Durchschnittliche" können nicht getrennt werden, gehen also über die Box hinaus, wenn die Box (das div) zu kurz ist.
Die Veränderungen kannst Du in der templates/shop_template_2_v0_3/css/template.css und der components/com_virtuemart/assets/css/vmsite-ltr.css machen. Eventuell auch einmal die Schriftgrößen ändern.
Die Breiten werden durch die Klassen width30 und width70 bestimmt. Die zweitere könnte man auf width60 ändern, das geht im template irgendwo, dann gibt es mehr Platz.
Etwas padding zwischen dem Produktbild-div und dem "Titel mit Beschreibung/Preis"-div könnte auch nicht schaden.
Leider ist das eine ziemlich große Baustelle, die mit ein paar Sätzen nicht getan ist.Firefox mit Firebug ist schnell gelernt, versuch das mal. CSS-Tutorials gibt es auch wie Sand am Meer. Vor dem Erfolg steht wohl erst einmal einiges an Lesen.
So long
Stefan -
Dann wird es schwierig.
Vielleicht Firefox mit Firebug ausprobieren. Irgendwo wird es da im CSS etwas padding oder margin brauchen, eventuell muss der Container vergrößert werden.
Eine Installation bei einem Provider in einem mit Passwort gesicherten Verzeichnis ist eventuell eine gute Idee. Eine lokale Installation hat oft andere Grundeinstellungen als ein Provider, da kann es nachher dann zu Problemen kommen, wenn PHP-Versionen, MySQL oder die Apache-Config nicht übereinstimmen.
So long
Stefan -
-
Hast Du alle Produkte den Shopper-Gruppen zugewiesen?
-
Eine Möglichkeit, die Bilder "auszuschalten" wäre ein Override für die Kategorieansicht. In der default.php der Kategorieübersicht müsstest Du dann den Code für die Bilder entfernen.
Such doch mal nach Override im Forum, da findet sich einiges.So long
Stefan -
Hatte ich schon erwähnt, dass ich von PHP so gut wie keine Ahnung habe?
Ok, in dem einen Fall (Produkt) wird einer Variable $yagendooImageTag ein komplettes Tag zugewiesen, in der Kategorie steht nur HTML mit eingeflechtetem PHP, um die Attribute für src, title und alt anzugeben. Da scheint die Syntax für die Produktseite anders zu sein. Grrr.
Deshalb muss dann wohl auch die Syntax in der default.php für die Produkte anders sein.
<img src="'.$this->YagProduct->images[0]->urlFullsize.'" alt="" class="product-image" />
würde ich ändern in
<img src="'.$this->YagProduct->images[0]->urlFullsize.'" alt="'.$this->YagProduct->images[0]->title.'" class="product-image" />
wenn das title noch hinein soll:
<img src="'.$this->YagProduct->images[0]->urlFullsize.'" alt="'.$this->YagProduct->images[0]->title.'" title="'.$this->YagProduct->images[0]->name.'" class="product-image" />Dann sieht das alles ziemlich stimmig aus, bitte auf die " und die ' achten, die stehen da hintereinander und sind wichtig. Verschachtelte Anführungszeichen: "'
Ich hab das alles mit Kopieren und Einfügen gemacht, dann kann nicht viel passieren.
So, bevor Du nun etwas Dummes tust, weil ich Dir etwas Dummes geschrieben habe, sichere Deine Dateien, bevor Du die Änderungen machst, und dann versuch es. Wenn es nicht klappt, einfach die alte default.php wieder zurück kopieren, dann ist alles wie vorher.Im Übrigen habe ich mir angewöhnt, von Zeit zu Zeit, beim Herumspielen öfter, ein komplettes Backup von der Homepage beim Provider anzulegen. Backup on the Fly, jeder Provider hat da so seine eigene Sprache, glaube ich.
In diesem Fall wird nicht viel passieren, wenn man irgendwo irgendwelche PHP-Befehle vergessen hat oder nicht geschlossen hat, wird schlimmstenfalls einfach nichts mehr angezeigt, weil die PHP-Verarbeitung anhält. Wenn die alte Datei wieder drin ist, läuft alles normal weiter.
Trotzdem, ein volles Backup ist immer gut zu haben, Dateien und Datenbank.
Mit frischem Backup kann man immer mutig ausprobieren.

Ich bin aber fast überzeugt, dass es so funktionieren wird.
Hope it helps
Stefan -
<div class="yagVmFrontpageCategoryListItemImgInner">
<img src="<?php echo $yagCategory->images[0]->urlThumb; ?>" title="<?php echo $yagCategory->name; ?>" alt="<?php echo $yagCategory->images[0]->title; ?>" /></div>Die Antwort hast Du doch da oben schon selbst gegeben, oder?

Setz doch das alt aus Deiner Kategorieansicht einfach ein und probier es, müsste klappen.Das alt war übrigens primär eine Möglichkeit, eine alternative Beschreibung für ein Bild anzugeben, das nicht empfangen werden konnte, oder gesehen werden konnte. Ein Text, der auch von einem Programm vorgelesen werden kann, das zum Beispiel einem Blinden hilft, die Seite zu verstehen, sollte bevorzugt werden. Das alt für SEO zu "missbrauchen" ist schon fast unmoralisch, allerdings ist ja auch Google in dem Sinne "noch" fast blind, deshalb können wir das noch einmal durchgehen lassen.
-
Doppelpost, Löschen-Button nicht gefunden.
-
Ah, dann möchte ich mich entschuldigen, mein erster Schul-PC konnte schon Turbo-Pascal.
Heute bekommt man halt nichts mehr geschenkt, nicht einmal mehr Freeware, irgendwo ist da immer ein Haken. Das mag daran liegen, dass die Leute, die sowas programmieren, auch diese dumme Angewohnheit haben, dass sie jeden Tag etwas Warmes zu essen haben möchten. Da waren die Anfangszeiten noch besser, als es Leute gab, die für die Communiti-Dingesda umsonst ihre Fähigkeiten gegeben haben, damit alle kommerziellen Anwendungen davon profitieren konnten, ohne auch nur einen halben Prozent Ihres Gewinns abzugeben, ja, Gewinn, nicht Umsatz.
Im Übrigen handelt es sich bei Virtuemart nur um ein wenig PHP und HTML, ein COBOL-Programmierer sollte wenig Probleme haben, das gesamte System seinen Anforderungen anzupassen. Ohne PHP wirklich zu beherrschen, konnte ich mit meinem sehr beschränkten Programmierwissen, alle Probleme aus dem Weg räumen.
Ja, klar, zu meckern gibt es eine Menge bei diesem noch nicht ausgereiften System. Aber dann doch bitte produktiv, sollte für einen Cobol-Programmierer doch kein Problem sein.
Es gibt jedoch eine Menge Leute, die von sich behaupten, Programmierer zu sein und nie über Hello World hinaus kamen, dann kann man die technischen Dinge auch jemandem überlassen, der das technische Wissen hat und einfach einmal eingestehen, dass man bisher nur auf dem Wissen anderer aufgebaut hat.Jeder, den dieses nicht betrifft, möge dies nicht persönlich nehmen, dies ist nur für diejenigen bestimmt, die sich oben angesprochen fühlen. Unter denen gibt es eine Menge Personen, die andere interessante und wichtige Fähigkeiten haben, mögen sie sich doch jenen zuwenden und Erfolg haben.
Stefan
-
VM 2 hat mich auch am Anfang ziemlich herausgefordert, irgendwie war alles anders als in VM1, was denken sich diese Programmierer nur dabei?
Na, dann hab ich angefangen, mich ein wenig einzulesen, ein paar Foren durchstöbert und siehe da, irgendwie stand der Shop dann doch nach einiger Zeit auf den Beinen. Es läuft sogar nach kleinen Anfangsproblemen sehr gut.
Ich hab VM2 übrigens kostenfrei bekommen und danke den Programmierern und den netten Menschen hier im Forum, die mir diese Plattform und gute Antworten zur Verfügung gestellt haben. Ich musste nicht einmal Fragen stellen, alles war über Google und die Suche zu finden. Die kleine Pizzeria meines guten Freundes, die sich sicherlich einen kommerziellen Shop nicht hätte leisten können/wollen, ist jetzt in der Lage, ihre Produkte wieder (nach VM1) im Netz anzubieten.
Nochmals herzlichen Dank für dieses kostenlose System, das ich in Zukunft eventuell in anderen Bereichen einsetzen werde. Sicherlich ist es kein RTF-Baukasten (Ready to Fly), aber mit ein wenig eigener Initiative können doch ansehnliche Ergebnisse erzielt werden.
Grüße
Stefan Schumacher -
Hm,
im Mobiltemplate andere Variablen aufrufen, vielleicht einfach ein _MOBIL an die bestehenden anhängen und dann einen Override für die neue Variable erstellen, damit auch ein Wert vorhanden ist.
War jetzt nur so ein Schnellgedanke ohne Hintergrundwissen, was genau Du verändern möchtest.
Stefan
-
In der view.html.php aus productetails finden sich die Zeilen 171 und 172.
Vielleicht kannst Du von dort ausgehen und weitersuchen.
Edit:
https://forum.virtuemart.net/index.php?topic=100285.0
gibt noch einen Suchansatz.Sorry, no time for more
Stefan -
Servus,
mir fiel ein Schreibfehler im Backend auf:
COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1="Addresse 1"im Frontend heißt das:
COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1="Adresszeile 1"Ist es sinnvoll, unterschiedliche Dateien für die Festlegung der gleichen Sprachvariablen zu verwenden?
Meiner Meinung nach sollten Frontend und Backend sich entweder der gleichen Datei bedienen, oder die Variablen sollten sich unterscheiden.
Zum Beispiel Backend:
COM_VIRTUEMART_ADMIN_SHOPPER_FORM_ADDRESS_1="Adresse 1"Frontend:
COM_VIRTUEMART_FRONT_SHOPPER_FORM_ADDRESS_1="Adressezeile 1"Ob es Vorteile hat, beide Variablen zu verwenden, weiß ich nicht, mir würde eine
COM_VIRTUEMART_SHOPPER_FORM_ADDRESS_1 für BE und FE reichen.Nur so ein Gedanke
StefanPS. Nein, ich weiß nicht wie die Leerzeichen oben zwischen die Adres se kommen, im Quelltext kann ich sie nicht sehen.
-
Versuch einmal com_virtuemart\components\com_virtuemart\views\productdetails\tmpl\default.php,
die verweist auf default_addtocart.php im gleichen Ordner.Override hier:
templates\Dein_Template\html\com_virtuemart\productdetails\default.php und default_addtocart.php.Oder möchtest Du das nur für das letzte Produkt in einer Kategorie haben? Den Teil hab ich nicht so ganz verstanden.

Stefan
-
Servus,
ich stand vor dem gleichen Problem, hab dann überlegt, ob ich diese Navigation überhaupt brauche und bin zu dem Ergebnis gekommen: Nein.

Also hab ich den Code aus der Produktseite herausgelöscht, nur einen Verweis zurück zur Kategorie gelassen, und nun ist das alles schön übersichtlich.Brauchst Du die Links?
Eben ein anderer Ansatz der Problemlösung, ein schneller vor allen Dingen.Stefan
-
Hast Du für die Produktkategorie allgemein die Mehrwertsteuer angegeben?
Ich hab da einiges herumgestellt, und dann hatte ich plötzlich den Brutto-Preis in der Auswahl, in Deinem Fall dann +200,00.
Ich glaube, es hat an dieser Voreinstellung gelegen.
Geh auf Produkte, Steuern & Rechenregeln. Dann auf Deinen Steuersatz klicken.Hier gibt es ein Feld Produktkategorie. Alle Produktkategorien auswählen, die diesem Satz unterliegen.
Cache leeren und noch einmal anschauen.
So long
Stefan -
Ok, so werden wir das folgende in der Bestätigungsmail los:
Der Status Ihrer Bestellung ist:
Einen Override für die Datei mail_html_shopper.php anlegen, gleicher Ordner wie in #3 beschrieben.
Den folgenden Quelltext finden und entfernen:
Hope it helps
StefanEdit: Ich sehe gerade, da ist ein Bug im Quelltext, eigentlich sollte der Code oben in einem <tr> eingeschlossen sein, da ist aber nur ein schließendes </tr>. Das schließende Tag auch entfernen.
Scheinbar hat das der Anzeige nicht weh getan, aber wenn es schon verändert wird, kann man es ja auch gleich korrigieren. -
Die invoice_items.php könnte dann so aussehen:
Alles anzeigenPHP- <?php
- /**
- *
- * Order items view
- *
- * @package VirtueMart
- * @subpackage Orders
- * @author Max Milbers, Valerie Isaksen
- * @link http://www.virtuemart.net
- * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
- * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
- * VirtueMart is free software. This version may have been modified pursuant
- * to the GNU General Public License, and as distributed it includes or
- * is derivative of works licensed under the GNU General Public License or
- * other free or open source software licenses.
- * @version $Id: details_items.php 5432 2012-02-14 02:20:35Z Milbo $
- */
- // Check to ensure this file is included in Joomla!
- defined('_JEXEC') or die('Restricted access');
- if ( VmConfig::get('show_tax')) {
- $colspan=7;
- } else {
- $colspan=8;
- }
- ?>
- <table class="html-email" width="100%" cellspacing="0" cellpadding="0" border="0">
- <tr align="left" class="sectiontableheader">
- <td align="left" width="5%"><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_SKU') ?></strong></td>
- <td align="left" colspan="2" width="38%" ><strong><?php echo JText::_('COM_VIRTUEMART_PRODUCT_NAME_TITLE') ?></strong></td>
- <td align="center" width="12%"><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_STATUS') ?></strong></td>
- <td align="right" width="10%" ><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_PRICE') ?></strong></td>
- <td align="right" width="6%"><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_QTY') ?></strong></td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right" width="10%" ><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_TAX') ?></strong></td>
- <?php } ?>
- <td align="right" width="11%"><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_TOTAL') ?></strong></td>
- </tr>
- <?php
- foreach($this->orderDetails['items'] as $item) {
- $qtt = $item->product_quantity ;
- $product_link = JURI::root().'index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $item->virtuemart_category_id .
- '&virtuemart_product_id=' . $item->virtuemart_product_id;
- ?>
- <tr valign="top">
- <td align="left">
- <?php echo $item->order_item_sku; ?>
- </td>
- <td align="left" colspan="2" >
- <a href="<?php echo $product_link; ?>"><?php echo $item->order_item_name; ?></a>
- <?php
- // vmdebug('$item',$item);
- if (!empty($item->product_attribute)) {
- if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php');
- $product_attribute = VirtueMartModelCustomfields::CustomsFieldOrderDisplay($item,'FE');
- echo $product_attribute;
- }
- ?>
- </td>
- <td align="center">
- <?php echo $this->orderstatuses[$item->order_status]; ?>
- </td>
- <td align="right" class="priceCol" >
- <?php echo '<span >'.$this->currency->priceDisplay($item->product_basePriceWithTax, $this->currency) .'</span><br />'; ?>
- </td>
- <td align="right" >
- <?php echo $qtt; ?>
- </td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right" class="priceCol"><?php echo "<span class='priceColor2'>".$this->currency->priceDisplay($item->product_tax ,$this->currency, $qtt)."</span>" ?></td>
- <?php } ?>
- <td align="right" class="priceCol">
- <?php
- $item->product_basePriceWithTax = (float) $item->product_basePriceWithTax;
- $class = '';
- if(!empty($item->product_basePriceWithTax) && $item->product_basePriceWithTax != $item->product_final_price ) {
- echo '<span class="line-through" >'.$this->currency->priceDisplay($item->product_basePriceWithTax,$this->currency,$qtt) .'</span><br />' ;
- }
- echo $this->currency->priceDisplay( $item->product_subtotal_with_tax ,$this->currency); //No quantity or you must use product_final_price ?>
- </td>
- </tr>
- <?php
- }
- ?>
- <tr><td colspan="<?php echo $colspan ?>"></td></tr>
- <tr class="sectiontableentry1">
- <td colspan="6" align="right"><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICES_TOTAL'); ?></td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"><?php echo "<span class='priceColor2'>".$this->currency->priceDisplay($this->orderDetails['details']['BT']->order_tax, $this->currency)."</span>" ?></td>
- <?php } ?>
- <td align="right"><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_salesPrice, $this->currency) ?></td>
- </tr>
- <?php
- if ($this->orderDetails['details']['BT']->coupon_discount <> 0.00) {
- $coupon_code=$this->orderDetails['details']['BT']->coupon_code?' ('.$this->orderDetails['details']['BT']->coupon_code.')':'';
- ?>
- <tr>
- <td align="right" class="pricePad" colspan="5"><?php echo JText::_('COM_VIRTUEMART_COUPON_DISCOUNT').$coupon_code ?></td>
- <td align="right"></td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"> </td>
- <?php } ?>
- <td align="right"><?php echo '- '.$this->currency->priceDisplay($this->orderDetails['details']['BT']->coupon_discount, $this->currency); ?></td>
- <td align="right"></td>
- </tr>
- <?php } ?>
- <?php
- foreach($this->orderDetails['calc_rules'] as $rule){
- if ($rule->calc_kind== 'DBTaxRulesBill') { ?>
- <tr >
- <td colspan="6" align="right" class="pricePad"><?php echo $rule->calc_rule_name ?> </td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"> </td>
- <?php } ?>
- <td align="right"> <?php echo $this->currency->priceDisplay($rule->calc_amount, $this->currency); ?></td>
- <td align="right"><?php echo $this->currency->priceDisplay($rule->calc_amount, $this->currency); ?> </td>
- </tr>
- <?php
- } elseif ($rule->calc_kind == 'taxRulesBill') { ?>
- <tr >
- <td colspan="6" align="right" class="pricePad"><?php echo $rule->calc_rule_name ?> </td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"><?php echo $this->currency->priceDisplay($rule->calc_amount, $this->currency); ?> </td>
- <?php } ?>
- <td align="right"><?php ?> </td>
- <td align="right"><?php echo $this->currency->priceDisplay($rule->calc_amount, $this->currency); ?> </td>
- </tr>
- <?php
- } elseif ($rule->calc_kind == 'DATaxRulesBill') { ?>
- <tr >
- <td colspan="6" align="right" class="pricePad"><?php echo $rule->calc_rule_name ?> </td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"> </td>
- <?php } ?>
- <td align="right"><?php echo $this->currency->priceDisplay($rule->calc_amount, $this->currency); ?> </td>
- <td align="right"><?php echo $this->currency->priceDisplay($rule->calc_amount, $this->currency); ?> </td>
- </tr>
- <?php
- }
- }
- ?>
- <tr>
- <td align="right" class="pricePad" colspan="6"><?php echo $this->orderDetails['shipmentName'] ?></td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"><span class='priceColor2'><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_shipment_tax, $this->currency) ?></span> </td>
- <?php } ?>
- <td align="right"><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_shipment + $this->orderDetails['details']['BT']->order_shipment_tax, $this->currency); ?></td>
- </tr>
- <tr>
- <td align="right" class="pricePad" colspan="6"><?php echo $this->orderDetails['paymentName'] ?></td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"><span class='priceColor2'><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_payment_tax, $this->currency) ?></span> </td>
- <?php } ?>
- <td align="right"><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_payment + $this->orderDetails['details']['BT']->order_payment_tax, $this->currency); ?></td>
- </tr>
- <tr>
- <td align="right" class="pricePad" colspan="6"><strong><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_TOTAL') ?></strong></td>
- <?php if ( VmConfig::get('show_tax')) { ?>
- <td align="right"><span class='priceColor2'><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_billTaxAmount, $this->currency); ?></span></td>
- <?php } ?>
- <td align="right"><strong><?php echo $this->currency->priceDisplay($this->orderDetails['details']['BT']->order_total, $this->currency); ?></strong></td>
- </tr>
- </table>
Stefan
-
Schnell und genau kann man das leider nicht erklären, aber:
Einen Override aus der Datei invoice_items.php im Ordner ...\DeinTemplate\html\com_virtuemart\invoice\ erstellen.
In der Datei in allen "tr"s die vorletzten "td"s entfernen.
Das wars.
Stefan