Page 1 of 712345...Last »

Item (Mage_Catalog_Model_Product) with the same id “xxx” already exist

There has been an error processing your request

Item (Mage_Catalog_Model_Product) with the same id "5214" already exist

http://stackoverflow.com/questions/8628764/magento-reports-products-products-ordered-issue-item-mage-catalog-model-pr

Man kann schon die Funktion abändern und die Fehlermeldung ignorieren. 
Ursache ist aber doch, dass manche Datensätze dupliziert oder mehrfach in der Tabelle zu finden sind.
Nicht unbedingt direkt in der Produkttabelle catalog_product_entity.
Sondern auch die Attributtabelle durchsuchen.

wie
SELECT count(*), `attribute_id` FROM catalog_product_entity_decimal where `entity_id` = 5214 group by `attribute_id`
decimal in SQL mit int, text, varchar ... austauchen und ausführen.

War auch nicht Problem hier. 

Weiter

In \lib\Varien\Data\Collection.php add exit before exception.

In \app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php add print_r($query) under _loadEntities to print SQL.

SELECT `e`.`entity_id`,
 `e`.`type_id`,
 `e`.`attribute_set_id`,
 `e`.`name`,
 `e`.`short_description`,
 `e`.`price`,
 `e`.`special_price`,
 `e`.`special_from_date`,
 `e`.`special_to_date`,
 `e`.`weight`,
 `e`.`small_image`,
 `e`.`thumbnail`,
 `e`.`news_from_date`,
 `e`.`news_to_date`,
 `e`.`status`,
 `e`.`tax_class_id`,
 `e`.`url_key`, `e`.`required_options`, `e`.`image_label`, `e`.`small_image_label`, `e`.`thumbnail_label`, `e`.`price_type`,
 `e`.`weight_type`, `e`.`price_view`, `e`.`shipment_type`, `e`.`links_purchased_separately`, `e`.`links_exist`, `e`.`humidorszie`,
 `e`.`humidorszie_value`, `e`.`is_imported`, `e`.`msrp_enabled`, `e`.`msrp_display_actual_price_type`, `e`.`msrp`,
 `search_result`.`relevance`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`,
 IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`,
 `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price`, `cat_index`.`position` AS `cat_index_position`,
 `at_rating_summary`.`rating_summary` 
 
 FROM `catalog_product_flat_1` AS `e` 
 INNER JOIN `catalogsearch_result` AS `search_result` ON search_result.product_id=e.entity_id AND search_result.query_id='340' 
 INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 
 INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id='1' AND cat_index.visibility IN(3, 4) AND cat_index.category_id = '2' 
 LEFT JOIN `review_entity_summary` AS `at_rating_summary` ON (at_rating_summary.`entity_pk_value`=e.entity_id) AND (at_rating_summary.entity_type = '1') AND (at_rating_summary.store_id = '1') 
 WHERE (e.status = 1) and (e.entity_id = 5214) ORDER BY `relevance` desc, `e`.`name` ASC 
 
 Problem is, rating_summary duplicated.
 
 Trace: #0 web/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(265): Varien_Data_Collection->addItem(Object(Mage_Catalog_Model_Product))
#1 web/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(1055): Mage_Eav_Model_Entity_Collection_Abstract->addItem(Object(Mage_Catalog_Model_Product))
#2 web/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(871): Mage_Eav_Model_Entity_Collection_Abstract->_loadEntities(false, false)
#3 web/app/code/core/Mage/Review/Model/Observer.php(78): Mage_Eav_Model_Entity_Collection_Abstract->load()
#4 web/app/code/core/Mage/Core/Model/App.php(1357): Mage_Review_Model_Observer->catalogBlockProductCollectionBeforeToHtml(Object(Varien_Event_Observer))
#5 web/app/code/core/Mage/Core/Model/App.php(1330): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Review_Model_Observer), 'catalogBlockPro...', Object(Varien_Event_Observer))
#6 web/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('catalog_block_p...', Array)
#7 web/app/code/local/Mage/Catalog/Block/Product/List.php(167): Mage::dispatchEvent('catalog_block_p...', Array)
#8 web/app/code/core/Mage/Core/Block/Abstract.php(918): Mage_Catalog_Block_Product_List->_beforeToHtml()
#9 web/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#10 web/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('search_result_l...', true)
#11 web/app/code/core/Mage/CatalogSearch/Block/Result.php(161): Mage_Core_Block_Abstract->getChildHtml('search_result_l...')
#12 web/app/design/frontend/default/ma_sahara_handbag1/template/catalogsearch/result.phtml(42): Mage_CatalogSearch_Block_Result->getProductListHtml()
#13 web/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/client...')
#14 web/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/defaul...')
#15 web/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#16 web/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Template->_toHtml()
#17 web/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#18 web/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Text_List->_toHtml()
#19 web/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#20 web/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('content', true)
#21 web/app/design/frontend/default/ma_sahara_handbag1/template/page/2columns-left.phtml(59): Mage_Core_Block_Abstract->getChildHtml('content')
#22 web/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/client...')
#23 web/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/defaul...')
#24 web/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#25 web/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Template->_toHtml()
#26 web/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#27 web/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#28 web/app/code/local/Magentothem/Layerednavigationajax/controllers/ResultController.php(124): Mage_Core_Controller_Varien_Action->renderLayout()
#29 web/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Magentothem_Layerednavigationajax_ResultController->indexAction()
#30 web/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#31 web/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#32 web/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#33 web/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#34 web/index.php(84): Mage::run('', 'store') #35 {main}

Magento Import mit Profile

  1. Update der vorhandenen Artikel

    Deine import.csv passt eigentlich auch zu der Importprofile 14. Jedoch kann man nur mit der CSV-Struktur aus der vorgelegten import.csv Produkte updaten, keine neue Produkte importieren. D.h. Du kannst die Struktur in der angehangenen Datei für Update z.B. Update von Preis, Daten, Namen nutzen, nicht für Import neuer Produkte. Der Grund ist, dass die Struktur in der Datei nicht vollständig ist. Die für neuen Import benötigten Daten in der Tabellen sind nicht zu finden.

    Es kann sein, dass die Struktur evtl. noch funktionierte. Nachdem man neue Felder im Shop definiert oder etwas erweitert hat, muss dann CSV-Struktur u.U. anpassen.

    Für Update, muss sku (z.B. 90200) im Shop bereits vorhanden sein.

    Also nur um z.B. Preis zu updaten, kannst Du weiterhin die von Dir gegebenen CSV bearbeiten und importieren lassen. Wie erwähnt, du musst garantieren, dass es in der CSV keine neue Produkte sich befinden.

    2. Import neuer Produkte

    a. Dataflow – Profiles aufrufen

    b. Alle Produkte zuerst exportieren

    b1.

    b2.

    b3.

    c. export_all_products.csv als Struktur verwenden

Hier siehst Du, dass alle möglichen Felder exportiert wurden. Du kannst alle Produkte außer 1 bis 2 löschen. Diese 1 und 2 kannst Du als Muster nehmen.

d. Datei zum Import vorbereiten

Das bedeutet, dass Du die Info genau wie in der CSV für neue Produkte bereitstellen sollst. Es kann sein, dass nicht alle Felder benötigt wird. Du kannst entweder solche Daten leer lassen, oder das Feld aus der ersten Zeile löschen. (Es klingt einfach, muss man aber viel experimentieren. Aufwendig und Fehleranfällig. Das ist auch ein Grund, warum ich die Importprfile nicht nutze.)

Du kannst auch die Musterdatensätze nutzen und nur die geänderte Daten ausfüllen. z.B. Store, websites, attribute_set einfach wie Muster übernehmen.

d1. Einiges zu beachten. Bitte die Felder mit ” umschließen.
d2. Bilder bitte mit / anfangen. z.B. /x38842.jpg in der CSV. Bilddatei musst Du dann unter media/import/x38842.jpg ablegen.

e. Datei importieren

Wenn Du die Nr. 14 nutzt, musse die Umschliesse auf ” ändern. Derzeit ist leer.

Danach läde deine Datei per FTP unter var/import hoch und umbennene die Datei in import.csv.

Zu Nr. 14 gehen, unter Starte Profile und den Import starten.

Nebenwirkung von dezimal auf 4 stellig für Preisberechung. Payment Free Problem.

Es gibt Grund, dass man unter Magento die Preisberechung von 2 Stellig auf 4 stellig umstellt. Nur finden wir auch Nebenwirkungen. Eins ist das Payment Free Problem.

Man kann die Zahlungsart für die Verwendung vom Rabattcode (Endpreis 0 ) aktivieren, so dass man die s.g. Zahlung mit Gutschein wählen kann.

Eine Kondition für die Zahlart ist, dass Summe 0 ist.

Wenn man aber früher dezimal auf 4 stellig umstellt, wird bei Summe 0 auch ab und zu 0.0001 vorkommen. Um das Problem zu lösen, passen wir die Funktion isAvailable unter  /code/core/Mage/Payment/Model/Method/Free.php an.

return parent::isAvailable($quote) && !empty($quote)
&& Mage::app()->getStore()->roundPrice($quote->getGrandTotal()) == 0;
zu

return parent::isAvailable($quote) && !empty($quote)
&& Mage::app()->getStore()->roundPrice($quote->getGrandTotal()) < 0.01;

Dann sollte funktionieren. Am besten copy die Datei unter local und bearbeiten.

 

 

 

Ein neuer Spalt für Custom Option Value (z.B. Lagerstand, Beschreibung für jeden Optionswert)

Sehr gut beschrieben im Blog:

http://magento.ikantam.com/qa/how-add-custom-attributes-custom-options

Mit dem Satz kann Vorlage nicht gefunden werden?

 $this->setTemplate('ikantam/catalog/product/edit/options/type/select.phtml');

Normalerweise muss die Datei unter eigenen Themeverzeichnis abspeichern, um die origniale zu überschreiben. Und setTemplate muss dann nicht mehr geändert werden. Nun hat es auch nicht funktioniert.

 

Vingento Vpager #%21 URL problem

Manche Magento Vorlagen haben die Vingento Vpager extension verwendet. In einer alten Version wird getPageUrl unter /app/local/Vinagento/Vpager/Block/Page/Html/Pager.php umgeschrieben.

public function getPageUrl($page) {
return str_replace(‘?’, ‘#%21′, parent::getPageUrl($page));
}

Die originale getPageUrl wird mit getPage2Url umbenannt.

Mann muss entweder überall getPage2Url statt getPageUrl verwenden, oder die Extension von http://connect20.magentocommerce.com/community/Vinagento_Vpager updaten.

Beim Update sollte man einfach /app/etc/modules/Vinagento_Vpager.xml löschen und unter Magento Connect Update durchführen.

Die neuen Dateien befinden sich unter /app/code/local/Vinagento/All. /app/code/local/Vinagento/Vpager kann man löschen.

 

use own price.phtml price template for category list page

tried some tips by googled. If i want to change price template for product view page, it is easy. Some like these codes.

    <PRODUCT_TYPE_simple>
        <reference name="product.info.simple">
            <action method="setTemplate">
                <template>catalog/product/price-custom.phtml</template>
            </action>
        </reference>
    </PRODUCT_TYPE_simple>

Since PRODUCT_TYPE_simple and product.info.simple are defined in catalog.xml

I tried to change price template for category list page by using change the xml under my theme, directly.

Add

<action method=”addPriceBlockType”><type>simple</type><block>catalog/product_price</block><template>catalog/product/price_from.phtml</template></action>
<action method=”addPriceBlockType”><type>configurable</type><block>catalog/product_price</block><template>catalog/product/price_from.phtml</template></action>

to <catalog_category_layered>
<reference name=’product_list’>

but i did not work.

Finally, i used the same code. Just put the codes in local.xml.

<?xml version=”1.0″?>
<layout version=”0.1.0″>
<catalog_category_layered>
<reference name=’product_list’>
<action method=”addPriceBlockType”><type>simple</type><block>catalog/product_price</block><template>catalog/product/price_from.phtml</template></action>
<action method=”addPriceBlockType”><type>configurable</type><block>catalog/product_price</block><template>catalog/product/price_from.phtml</template></action>
</reference>
</catalog_category_layered>
</layout>

It works.

 

Remove Blocks from left Side for Customer Account Page

Verschiedene Verfahren, umständlich.

app/design/frontend/default/default/[your theme]/layout/customer.xml

Cart Sidebar und Artikelvergleich einfach löschen. Weitere mit unSetChild entfernen. “Meine Bestellungen” mit remove tag.

Artikelvergleich und CartSidebar sind mehrfach definiert. unter customer_account_index und customer_account.

Artkelvergleich wurde auch mit anderen Namen definiert. Bei mir ist catalog.compare.sidebar2

<block type=”catalog/product_compare_sidebar” name=”catalog.compare.sidebar2″ template=”catalog/product/compare/sidebar.phtml”/>

<block type=”checkout/cart_sidebar” name=”cart_sidebar” template=”checkout/cart/sidebar.phtml“>
<action method=”addItemRender”><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action>
<action method=”addItemRender”><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action>
<action method=”addItemRender”><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action>
</block>

<action method=”unsetChild”><alias>right.reports.product.viewed</alias></action>
<action method=”unsetChild”><alias>topMenu</alias></action>
<action method=”unsetChild”><alias>topSearch</alias></action>

<remove name=”sale.reorder.sidebar”/>

Die Blöcke unter beiden customer_account_index und customer_account löschen und die Codes remove und unsetChild auch unter beiden eintragen.

Es reicht nicht aus, nur unter customer_account_index zu bearbeiten.

 

 

Einfügen der neuen Felder für Kunden(Tabellen) Custumer Attributes Manager

Es gibt viele Blogs über Einfügen neues Feldes für Kunden unter Magento. Viele Tabelle müssen angefasst werden.

Mit dieser Extenion muss man keine Mühe geben, obwohl es eine beta-Version ist.

http://connect20.magentocommerce.com/community/offi_customer_attributes_manager

Wenn installiert, kann man leicht Template anpassen, um die Felder in Registierung, Bearbeitung anzuzeigen.

Product filter links Fehler

Eine zusätzliche Kondition in der Colletion eingefügt, um nur Sonderangebote anzuzeigen.

$this->_productCollection->addAttributeToFilter(‘special_price’, array(‘notnull’ => 1));

So werden Sonderangebote auf einer CMS-Seite angezeigt. Danach wollte ich den Produktfilter einschalten. Dann meldet Fehler. Problem lag daran, dass ich specical_price nicht als filterbare Feld im Backend definiert habe.

Filternavigation auf Suchergebnisseiten verweden (Nach neu Indizieren wieder Fehler?)

habe die anderen Filter in phtml gesperrt, “außer Kategorie”.

<dl id=”narrow-by-list”>
<?php $_filters = $this->getFilters() ?>
<?php foreach ($_filters as $_filter): ?>
<?php if(($this->__($_filter->getName()) == ‘Kategorie’) && $_filter->getItemsCount()): ?>
<dt><?php echo $this->__($_filter->getName()) ?></dt>
<dd><?php echo $_filter->getHtml() ?></dd>
<?php endif; ?>
<?php endforeach; ?>
</dl>

Weiter wollte ich alle Angebote aus ROOT-Kategorie anzeigen. Da ich die Produkte nicht direkt unter ROOT-Kategorie zugeordnet habe, muss ich die ROOT-Kategorie als Ankor einstellen. Sondern werden keine Produkte angezeigt.

Zusammengefasst von verschiedenen Recherchieren

 

 

<reference name=”content”>
<block type=”catalog/product_special” name=”special_list” template=”catalog/product/special_list.phtml”>
<action method=”setCategoryId”><categoryid>2</categoryid></action>
<action method=”addColumnCountLayoutDepend”>
<layout>three_columns</layout>
<count>3</count>
</action>
<action method=”setToolbarBlockName”><name>product_list_toolbar</name></action>
<block type=”catalog/product_list_toolbar” name=”product_list_toolbar” template=”catalog/product/list/toolbar.phtml”>
<block type=”page/html_pager” name=”product_list_toolbar_pager”>
</block>
</block>
</block>
</reference>
<reference name=”left”>
<block type=”catalog/layer_viewspecial” name=”catalog.leftnav” after=”currency” template=”catalog/layer/view_special.phtml”/>
</reference>

 

 

Page 1 of 712345...Last »