Na QUICK.CART fóru je již delší dobu poptávka po pluginu productAttributes známého z dřívějších verzí Quick.Cart, nyní je bohužel dostupný jen v placených variantách. Pokusil jsem se vytvořit zjednodušenou verzi tohoto pluginu pro jeden atribut, který je ale pro potřebu rozlišení barvy či velikosti plně dostačující.
Nastavení druhů se nalézá v administračním rozhraní, v editaci jednotlivých produktů. Jednoduše stačí vypsat jednotlivé nabízené varianty a oddělovat je středníkem.
Po přidání produktu do košíku se bude název druhu zobrazovat v hranatých závorkách za názvem produktu. Takto bude název zobrazen i v objednávce a faktuře.
Čísla řádků odpovídají originálnímu Quick.Cart v3.4.
(upravené soubory ke stažení)
(verze s duplikovaným pluginem pro dva atributy ke stažení)
Následující části kódu se vkládají na uvedené řádky PŘED text, který se na nich nalézá. Případně kód nahrazuje celou funkci či obsah souboru.
v souboru db/en_products.php je nutné vložit $ na konec každého řádku s daty
nahradit obsah souboru db/en_products.def.php
<?php
$aFieldsNames = Array( 'iProduct' => 0, 'sName' => 1, 'fPrice' => 2, 'iStatus' => 3, 'iPosition' => 4, 'sAvailable' => 5, 'sDescriptionShort' => 6, 'sTyp' => 7 );
$aFieldsSort = Array( 'iPosition', 'sName', 'iProduct', 'sAvailable', 'fPrice', 'sDescriptionShort', 'iStatus', 'sTyp' );
function en_products( $aExp ){
return Array( 'iProduct' => $aExp[0], 'sName' => $aExp[1], 'fPrice' => $aExp[2], 'iStatus' => $aExp[3], 'iPosition' => $aExp[4], 'sAvailable' => $aExp[5], 'sDescriptionShort' => $aExp[6], 'sTyp' => $aExp[7] );
}
?>
v souboru db/orders_temp.php je nutné vložit $ na konec každého řádku s daty
nahradit obsah souboru db/orders_temp.def.php
<?php
$aFieldsNames = Array( 'iCustomer' => 0, 'iProduct' => 1, 'iQuantity' => 2, 'fPrice' => 3, 'sName' => 4, 'sTyp' => 5 );
function orders_temp( $aExp ){
return Array( 'iCustomer' => $aExp[0], 'iProduct' => $aExp[1], 'iQuantity' => $aExp[2], 'fPrice' => $aExp[3], 'sName' => $aExp[4], 'sTyp' => $aExp[5] );
}
?>
vložit do souboru templates/products_default.tpl na řádek 36
$aData[sTyp]
nahradit v souboru templates/pages_default.tpl řádek 74
<div class="basket"><a href="$aData[sLinkName]">$lang[productattributes_lite_buy]</a></div>
nahradit v souboru templates/orders_basket.tpl řádek 10
<label for="quantity$aData[iProduct]">$lang[Quantity]</label><input type="text" name="aProducts[$aData[iProduct]][~$aData[sTyp]]" value="$aData[iQuantity]" size="3" maxlength="4" class="input" id="quantity$aData[iProduct]" alt="int" />
vložit do souboru actions_client/products.php na řádek 7
if ( $aData['sTyp'] != "" ) {
$newExplode = explode( '|', $aData['sTyp'] );
$aData['sTyp'] = "<select name=\"sTyp\">";
foreach ( $newExplode as $newOption ) {
$aData['sTyp'] .= "<option value=\"".trim($newOption)."\">".trim($newOption)."</option>";
}
$aData['sTyp'].= "</select><br /><br />";
}
vložit do souboru lang/en.php na řádek 207
$lang['productattributes_lite'] = "Druhy (oddělujte pomocí | )"; $lang['productattributes_lite_buy'] = "Koupit";
vložit do souboru templates/admin/products.tpl na řádek 126
<!-- typ start -->
<tr class="l0">
<td>
$lang['productattributes_lite']
</td>
</tr>
<tr class="l1">
<td>
<input type="text" name="sTyp" value="$aData[sTyp]" class="input" style="width:100%;" />
</td>
</tr>
<!-- typ end -->
vložit do souboru actions_client/p.php na řádek 82
if ( isset( $_POST['sTyp'] ) ) {
$sTyp = str_replace( '$', '$', htmlspecialchars (stripslashes( $_POST['sTyp'] ) ) );
} else {
$sTyp = "";
}
nahradit v souboru actions_client/p.php řádek 90
$oOrder->addToBasket( $iProductAdd, $iQuantity, $sTyp );
nahradit v souboru core/orders.php funkci saveBasket
/**
* Save basket
* @return void
* @param array $aForm
*/
function saveBasket( $aForm ){
if( isset( $aForm['aProducts'] ) && is_array( $aForm['aProducts'] ) ){
$aFile = file( DB_ORDERS_TEMP );
$iCount = count( $aFile );
$rFile = fopen( DB_ORDERS_TEMP, 'w' );
flock( $rFile, LOCK_EX );
for( $i = 0; $i < $iCount; $i++ ){
if( $i > 0 ){
$aFile[$i] = rtrim( $aFile[$i] );
$aExp = explode( '$', $aFile[$i] );
if( isset( $aForm['aProducts'][$aExp[1]]['~'.$aExp[5]] ) && is_numeric( $aForm['aProducts'][$aExp[1]]['~'.$aExp[5]] ) && $aForm['aProducts'][$aExp[1]]['~'.$aExp[5]] > 0 && $aForm['aProducts'][$aExp[1]]['~'.$aExp[5]] < 10000 && $aExp[0] == $_SESSION['iCustomer'.LANGUAGE] ){
$aExp[2] = (int) $aForm['aProducts'][$aExp[1]]['~'.$aExp[5]];
$aFile[$i] = trim( implode( '$', $aExp ) )."\n";
}
else
$aFile[$i] .= "\n";
}
else{
$aFile[$i] = '<?php exit; ?>'."\n";
}
fwrite( $rFile, $aFile[$i] );
} // end for
flock( $rFile, LOCK_UN );
fclose( $rFile );
}
} // end function saveBasket
nahradit v souboru core/orders.php funkci generateBasket
/**
* Generates variable with products in basket
* @return void
*/
function generateBasket( ){
$aFile = file( DB_ORDERS_TEMP );
$iCount = count( $aFile );
$this->aProducts = null;
$this->fProductsSummary = null;
$_SESSION['iOrderQuantity'.LANGUAGE] = 0;
$_SESSION['fOrderSummary'.LANGUAGE] = null;
for( $i = 1; $i < $iCount; $i++ ){
$aExp = explode( '$', $aFile[$i] );
if( isset( $aExp[0] ) && $aExp[0] == $_SESSION['iCustomer'.LANGUAGE] ){
$this->aProducts[$i] = orders_temp( $aExp );
$this->aProducts[$i]['sLinkName'] = '?'.$aExp[1].','.change2Url( $this->aProducts[$i]['sName'] );
$this->aProducts[$i]['fSummary'] = normalizePrice( $this->aProducts[$i]['fPrice'] * $this->aProducts[$i]['iQuantity'] );
if ( $this->aProducts[$i]['sTyp'] != "" ) { $this->aProducts[$i]['sName'] .= " [".$this->aProducts[$i]['sTyp']."]"; }
$_SESSION['iOrderQuantity'.LANGUAGE] += $aExp[2];
$_SESSION['fOrderSummary'.LANGUAGE] += ( $aExp[2] * $aExp[3] );
}
} // end for
if( isset( $_SESSION['fOrderSummary'.LANGUAGE] ) )
$this->fProductsSummary = $_SESSION['fOrderSummary'.LANGUAGE] = normalizePrice( $_SESSION['fOrderSummary'.LANGUAGE] );
} // end function generateBasket
nahradit v souboru core/orders.php funkci addToBasket
/**
* Add product to basket
* @return void
* @param int $iProduct
* @param int $iQuantity
* @param str $sTyp
* @param int $iOrder
*/
function addToBasket( $iProduct, $iQuantity, $sTyp, $iOrder = null ){
if( !isset( $iOrder ) ){
$iOrder = $_SESSION['iCustomer'.LANGUAGE];
$sDb = DB_ORDERS_TEMP;
}
$iQuantity = (int) $iQuantity;
$aFile = file( $sDb );
$iCount = count( $aFile );
$rFile = fopen( $sDb, 'w' );
$iTime = time( );
flock( $rFile, LOCK_EX );
for( $i = 0; $i < $iCount; $i++ ){
if( $i > 0 ){
$aFile[$i] = rtrim( $aFile[$i] );
$aExp = explode( '$', $aFile[$i] );
if( $aExp[0] == $iOrder ){
if( $aExp[1] == $iProduct ){
if( $aExp[5] == $sTyp ){
if( ( $aExp[2] + $iQuantity ) < 10000 )
$aExp[2] += (int) $iQuantity;
$aFile[$i] = trim( implode( '$', $aExp ) )."\n";
$bFound = true;
} else {
$aFile[$i] .= "\n";
}
} else {
$aFile[$i] .= "\n";
}
}
else{
if( $iTime - substr( $aExp[0], 0, 10 ) >= 259200 ) // delete empty orders older then 72 hours
$aFile[$i] = null;
else
$aFile[$i] .= "\n";
}
}
else{
$aFile[$i] = '<?php exit; ?>'."\n";
}
fwrite( $rFile, $aFile[$i] );
} // end for
if( !isset( $bFound ) ){
$oProduct =& Products::getInstance( );
fwrite( $rFile, $iOrder.'$'.$iProduct.'$'.$iQuantity.'$'.$oProduct->aProducts[$iProduct]['fPrice'].'$'.$oProduct->aProducts[$iProduct]['sName'].'$'.$sTyp.'$'."\n" );
}
flock( $rFile, LOCK_UN );
fclose( $rFile );
} // end function addToBasket
Budu rád, pokud se pochlubíte užíváním tohoto pluginu v komentářích.
TODO: Při testování jsem narazil na nedořešený problém. Při odstranění produktu z košíku dojde ke smazání všech položek stejného produktu bez ohledu na jeho druh. Je možné, že časem se zde objeví doplnění řešící i tento problém.
Uvedená práce (dílo) podléhá licenci Creative Commons Attribution-ShareAlike 3.0
To znamená, že kód (dílo) smíte šířit (kopírovat, distribuovat a sdělovat dílo veřejnosti) a upravovat (pozměňovat, doplňovat, využívat celé nebo částečně v jiných dílech). Za podmínek uvedení autora (uvedení odkazu, viz níže) a zachování licence.
Uvedení odkazu: na každé stránce generované obchodem (či jiným systémem), ve kterém byl kód použit, musí být uveden viditelný odkaz na web eFox.cz ve formátu:
<a title="eFox.cz" href="http://efox.cz">Extended by <strong>eFox.cz</strong></a>




Čauvec, vypadá to super, akorá ty dva bugy jsou pro mě trošku zásadní. Jinak když vložím něco do koše tak to tam vidět není (jak píšeš v hranatých zývorkách). Ani po odeslání. Divné.
Ahoj, rozhodl jsem se ověřit ještě jednou plnou funkčnost úprav na čisté instalaci. Náhrady a úpravy jsem provedl přesně, jak je napsáno, a dostal jsem fungující rozšíření. Pokud upravuješ jinou verzi nebo verzi upravenou, je velice pravděpodobně, že čísla řádků neodpovídají popisu, je třeba tedy upravovat s rozvahou. Pokud upravuješ pro jiný jazyk, je třeba použít jiné soubory databáze, nikoliv ‘en_’ ale například ‘cz_’. První bug lze odstranit smazáním či zakomentováním řádku 74 ze souboru ‘templates/pages_default.tpl’, zmizí tak možnost zakoupeni ze seznamu produktu, dle mého názoru bývá běžné otevřít si nejdříve detail zboží před nákupem. Druhy bug si vyžádá nějaký čas k dořešení, ale ani tak mi nepřijde běžné, objednání většího množství stejného produktu v různém provedení a následné promazávání. Hodně štěstí, pokud by i nadále problémy setrvaly, je možné se domluvit na pomoci.
Je to přesně tak, musí se aktualizovat „čistá“ verze, nijak neupravovaná. Nejlepší je si vše zálohovat, znovu nainstalovat a dělat úpravy. Potom porovnat změny oproti stávající verzi nějakým chytrým prográmkem – třeba Total Commander.
Samozřejmě en v databázích jsem přepsal na cz, ale i tak to dělá v české verzi problémy. V anglické běhá. A ty dva bugy nakonec pro mě nevadí. První je vyřešen tím, že automaticky je nějaká varianta vybraná, že si zákazník nevybere jinou už není můj problém. Druhej je nepodstatnej pokud maže jen ten jeden ruh zboží. Ještě na to mrknu. Každopádně dík. Lukáš (mobile hacker z QC fóra, to su já
)
Tak už mi to funguje. Přepsal jsem to pozorněji. Akorát mi přestala fungovat doporučená cena. Neukládá se. Hledám problém.
Vyřešeno, chyba byla samozřejmě v databázi, kdy jsem už měl přidanou funkci sOldPrice na sedmé pozici. Takže jsem sTyp jen pošoupl na další pozici. Díky!!!!!!!!!!
Perfektní, gratuluji ke zvládnutí komplikací při instalaci, je potřeba si dávat pozor na již nainstalovaná rozšíření. Jak jsem zmínil, až bude volněji, pokusím se chybkám pověnovat. (danny)
Ono mi to napoprvé nefungovalo vůbec a to proto, že mám přece jenom starší verzi 3.1 a tam ty řádky jsou trochu jinak. Tak jsem si stáhl tvoje upravené soubor a podle nich to opatrně udělal. Pak už jen pohrál s databázema a je to. Dík a měj se. Lukáš
Ještě bych měl takový dotaz. Řekněmě, že produkt má atribut 18,5″ v košíku se mi projeví ale za názver produktu jako 18,5\“ . Bude to určitě problém v tom, že tam používám “ . Veřím, že to bere jako konec nějaké hodnoty??
Jako konec hodnoty jsem to použito nikde neměl. Chyba je pravděpodobně bohužel ve špatně zvoleném oddělovači, alespoň při mém testování se to nyní potvrdilo, při ukládání se znaky převádí na entity, které končí středníkem a zde je bohužel háček. Pravdou je, že \ se mi nikde nezobrazilo, ale je možné že starší verze přidávají k některým znakům \. Zkus změnit oddělovač a pokud to nepomůže zkus zadávat “ jako entitu "
Doporučuji změnit oddělovač na | a to takto:
action_client/product.php řádka 8:
$newExplode = explode( ‘|’, $aData['sTyp'] );
lang/en.php řádka 201:
$lang['productattributes_lite'] = „Druhy (oddělujte pomocí | )“;
pak v databázi na poslední pozici zaměnit ; za | nejlépe to půjde asi scriptem. Díky za dotaz.
Převod “ na entitu je již uvnitř Quick.Cart v core/common-admin.php na řádku 119:
$sValue = ereg_replace( ‘“‘, ‘"’, $sValue );
pokud jsi tento soubor neupravoval, měl by se převod provést vždy při ukládání hodnot.
Máš pravdu shop automaticky převádí “ na " ale já jsem si to pak v databázi ručně přepsal, takže tam je určitě „.
Jinak změna entity nepomohla
Doporučuji ponechat v databázi “ formou entity, neni tomu tak bez důvodu. Pokud převedeš položku druhů v databázi na oddělovač | a zároveň ponecháš “ jako entitu nevidím důvod, proč by ve výpisu mělo být \“. Dle mého názoru právě protože násilně vkládáš do databáze přímo „, pak při výpisu Quick.Cart escapuje “ jako nebezpečný znak, co se děje při výpisu jsem ale přesně nezkoumal. Pokud by problém přetrvával, je možné se domluvit na pomoci přímo s úpravou, bez znalosti kódu a úprav, které jsi provedl, mohu jen odhadovat, co se zde událo.
Najde se někdo, kdo by na mých stránkách nastavil ProductAttributes lite? Samozřejmě né zadarmo, jsou začátečník a fakt si na to netroufám.
peta.holub[zavináč]seznam.cz
Zdravím. Při aplikaci pluginu na svůj shop jsem se snažil přidat rovnou druhý atribut (potřebuji u triček velikost i barvu) což se mi sice povedlo, ale stejně se mi každá další varianta přičítá k té první. V PHP se moc nevyznám. Postupoval jsem víceméně naslepo.
Zdravím, nerozumím příliš slovu „přičítá“. Jinak samotný plugin by dle mého úsudku měl jít takto dvojitě s obměnou aplikovat, záleží také zda, a případně jaké, úpravy jste provedl při použití návodu.
Myslím tím, že například přidám jedno tričko ve variantě černé S a pak totéž tričko zelené L. V košíku se ale objeví černé S s počtem kusů 2.
Z úprav to bylo přidání sTyp2 a pak víceméně duplikování v místech kde se objevuje sTyp. Ve funkci generateBasket jsem pak nahradil podmínku:
if ( $this->aProducts[$i]['sTyp'] != „“ ) { $this->aProducts[$i]['sName'] .= “ [".$this->aProducts[$i]['sTyp'].“]“; }
pevným:
$this->aProducts[$i]['sName'] .= “ [".$this->aProducts[$i]['sTyp'].“ – „.$this->aProducts[$i]['sTyp2'].“]“;
Pravděpodobně jste neupravil dostatečně přidání produktu do košíku ve funkci addToBasket, kde je nutné kontrolovat shodu jak na
$aExp[5] == $sTyptak i na
$aExp[6] == $sTyp2a take upravit funkci
fwrite( ...$sTyp.'$'.$sTyp2.'$'."\n" );funkce addToBasket take musi dostat oba atributy jako parametry, kdyz je volana z actions_client/p.php
Ano ano, už to jede. Fwrite i p.php bylo vpořádku, ale tu kontrolu jsem tam vůbec neměl. Nicméně nastal jiný problém. Při změně množství produktu v košíku se změní množství všech variant podle údaje u poslední přidané varianty. To stejné se stane při přechodu k objednávce.
Máte pravdu, je tam chybka, bude potřeba upravit funkci saveBasket, ve volné chvíli na to mrknu a přidám řešení. Děkuji za upozornění
Problém by měl být vyřešen po nahrazeni funkce saveBasket a řádků v souboru templates/orders_basket.tpl
To jsem celý já. Když hledám tak najdu
Teď už jenom to deletefrombasket. Já to zatím řeším možností vložit nulu v savebasket
Pokud mohu požádat, vložte prosím do patičky webu zpětný odkaz, jak je uvedeno na konci návodu, je to jediná podmínka jinak bezplatného použití.
Jinak samozřejmě obrovský dík za výbornou práci. Odkaz tam pochopitelně mám, ale web ještě není v provozu a chvíli to určitě ještě potrvá.
V pořádku
i já děkuji, chtěl jsem se jen podívat, jak to hezky funguje s více atributy.
Zdravím,
plugin zdá se pracuje, prosím ale o pomoc s problémy, na které jsem narazil při doinstalování
1. Dle návodu, soubor core/products.php vytvoří v každé sekci a pouze u prvního produktu odkaz „Vložit do košíku“
2. Kde se objeví po odeslání objednávky varianta zadaná v roletce
3. Košík mi nyní vždy vytvoří jednu položku s nulovou hodnotou, kterou není možné smazat.
Prosím, pokud má někdo podobný problém a vyřešil, informujte zde. Děkuji
Také zdravím,
předně by mě zajímalo, zda jste aplikoval plugin přímo a to na verzi, která je uvedena v úvodu, či na verzi jinou, kde je třeba dělat úpravy s rozmyslem (i v případě již upravovaného obchodu je třeba postupovat pozorně).
1. Možná se Vám zobrazila starší varianta návodu, úprava v core/products.php byla vypuštěna, z důvodu jakési „nevzhlednosti“ střídajícího se ‘Koupit’ a ‘Vložit do košíku’, nyní stačí úprava v templates/pages_default.tpl, která vloží v seznamu produktů na všechna místa ‘Koupit’ a při stisku je uživatel přesměrován na detail produktu, kde vybere variantu a vloží ji do košíku.
2. Varianta je vždy za názvem produktu v [], pokud během instalace nezvolíte jiný formát.
Na 3. otázku asi nejsem schopen bez bližších informací přímo odpovědět.
Zdravím a děkuji za okamžitou reakci. Tyto úpravy jsem prováděl na obchodu, který nikdy pravován nebyl.
add 1. Měl jste pravdu, postupoval jsem dle stašího návodu. Dle mého názoru, funkce „Koupit“ u každého produktu je zbytečná, když u produktu je „Vložit do košíku“, tedy nepoužil jsem úpravu v templates/pages_default.tpl – řádek 74. Vyřešeno – OK
add 3. Košík již nic nevytváří, zřejmě způsobeno starší verzí úprav, i když bylo by zajímavé vložit do košíku automatickou položku, která musí být koupena a nelze ji odstranit.
Vyřešeno – OK
add 2. Postupoval jsem dle instalace (kromě templates/pages_default.tpl), potvrzení objednávky přijde, ale hodnota z role se nikde nezobrazí, žádné závorky.
Jdu na to!
Funkce „Koupit“ je zde z důvodu, aby nešlo vložit předmět do košíku bez vybrání varianty. Druhou možností jak to řešit je, vložit podmínku tak, že pokud člověk vloží do košíku produkt bez výběru, doplní se mu rovnou nějaká standardní varianta.
Varianta se za název produktu přidává do závorek ve funkci „generateBasket“, bez bližšího seznámení s kódem Vám asi nejsem schopen takto pomoci, mohu jen doporučit kontrolu míst úprav. V případě zájmu mě můžete kontaktovat na admin[zavináč]efox.cz
….ještě k úpravě v templates/pages_default.tpl – tato úprava nevkládala „Koupit“ ke všem produktům, ale pouze k tomu na prvním místě v kategorii….
Toto je už z principu podezřelé chování, protože šablona se používá na každý produkt. Pokud se tedy změní šablona výpisu produktu, tato změna se nutně musí projevit na všech produktech, nikoliv na jediném.
Zdravím … šlo by tohle udělat 2x pod sebo? 1x na barvu a 1x na rozměr? Uměl by to někdo? Mě to nejde…
Určitě je to možné, pravděpodobně jste přečetl i komentáře nad Vámi, kde se to již jednou úspěšně podařilo. Je třeba pozorně a s rozmyslem jednotlivé kroky duplikovat, ale jsou zde potřeba již přiměřené znalosti programování v PHP a částečná znalost fungování obchodu zevnitř.
Ahoj, děkuji za skvělý plugin! odkaz samozřejmě na web dám, s dovolení do doporučujících stránek. Měl bych ještě jeden dotaz, všechno mi nádherně funguje, až na na to že u posledního produktu mi vyskočila tahle hláška: Fatal error: Allowed memory size of 31457280 bytes exhausted (tried to allocate 35 bytes) in /var/www/web5/funboxers.cz/funboxers.cz/libraries/FlatFiles.php on line 198 Co to znamená? Nevím si s tím rady… díky moc!!!
Zdravím, díky za pochvalu:) Hláška znamená, že se obchod pokusil alokovat více paměti, než je mu umožněno, stává se to, když je v obchodě více produktů nebo je limit poskytovatele dosti nízký. Doporučuji napsat na webhosting žádost o zvýšení limitu paměti, většinou je to provedeno naprosto bez problému, některé hostingy nechají uživatele si limit určovat samostatně (v rozumné míře) pomocí souboru .htaccess například „php_value memory_limit 128M“.
Výborně! pomohlo to, navýšili mi to o 10MB, nyní již tedy 40MB. Je to obvyklá výše limitu? Protože jsem poladil jenom jeden produkt a opět se mi objeví stránka prázdná a dokonce už bez hlášky…Napsal jsem jim o nové navýšení. Doufám, že to pomůže.
Navýšení vyřešilo hlášku, pokud se zobrazuje prázdná stránka, problém bude třeba hledat asi jinde.
Ahoj, trošku jsem pátral po netu, a tahle hláška se oběvuje spoustě lidem, jak Fatal Error, tak prázdná stránka. Je to, obojí, jak říkáš, nedostatkem paměti. Ovšem ne každý hosting ochotně navyšuje. Danny je možné, abych udělal v kódu někde takovou chybu, že by mě to „žralo“ paměť? Jsem nyní u gigaserveru, nemám raději hledat jiný hosting? Začínám se 14 druhy zboží, ale do budoucna čekám daleko větší počet. Viz. http://www.funboxers.cz. Díky za reakce! Ahoj
Zdravím, tak možné to určitě je, například stačí někde neúmyslně vytvářet cyklicky objekty nebo pole, případně i rekurze by mohla zlobit. Možné je ale i to, že prostě úvodní limit byl nízký a nyní by už požadovaná paměť nemusela růst tak rychle. Vyzkoušení jiného hostingu s někým po domluvě na subdoméně asi stojí i za zkoušku, ale pokud nemáš problém s žádostmi o navýšení, osobně bych hned neutíkal, pokud vše jinak funguje. Hodně štěstí!
ahoj mám stejný problém, ale přijde mi divné, že když tam mám nahráno asi 30produktů a jen tim že přidám od atributů hodnoty sx,s,… tak mi to nahlásí problém s pamětí:) snad to vyřeší navýšení. Plugin je parádní a určo přidám odkaz, jen doufám že vyřešim problém s tou pamětí. zatím děkuji
Ahoj, věřím, že problém se tím vyřeší, případně by ještě mohlo dojít k plnění paměti chybnou aplikací úprav nebo i chybou při vytváření pluginu, i to je možne. Dan
myslim, ze to je zpusobeno tim, ze v db\cz_products.php (nebo en_…) je po uprave atributu (u me to byla velikost) u kazdeho produktu na zacatku souboru pridana spousta znaku $, staci je tedy vymazat a na serveru se nemusi kapacita zvysovat… alespon u me toto reseni fungovalo…
už mi to funguje, zkontroloval jsem kód a v souborech orders_temp.php a en_product.php jsem zapomněl vložit symbol $. Danny, ještě jednou díky moc!
Ahoj Danny!
Předně bych Ti chtěl poděkovat za skvělý plugin. Po něčem takovém jsem zrovna pátral.
Zkusil jsem na mém Quick Cart 3.4 e-shopu upravit soubory „cz“ namisto „en“ a nyní mi to vyhazuje chybovou hlášku:
Fatal error: Call to undefined function cz_products() in /home/www/retrotrika.cz/subdomeny/www/core/products.php on line 59
Nejsem v PHP přímo kovaný. Nemáš náhodou ponětí, jak by se to dalo napravit?
Děkuji a jsem s pozdravem!
Zdravím a díky, v souboru ‘db/cz_products.def.php’ přejmenuj na 5. řádku funkci „en_products“ na „cz_products“, to by mělo Tvůj problém snad vyřešit. Měj se a hodně zdaru..
Děkuji za tak rychlou reakci, Danny. Už to funguje bez problémů. Až bude můj e-shop v provozu, tak pošlu link
Ještě jednou díky!
Ahoj, měl bych ještě takový dotaz. Bylo by nějak možné dořešit produk atribut, že kdyby si člověk vybral z kolonky barvu tak by se mu náhledový obrázek změnil? Hrozně moc by to pomohlo jelikož teď když bych chtěl mít trička různých barev tak bych je musel mít všecky rozepsané a je to hrozná dřina je nahrávat upravovat jim popisky kličova slova a navíc to vypadá nehezky. Takhle by to bylo jen jedno triko a v atributech by se vybrala barva tím by se změnil obrazek a zákazník by si mohl ještě vybrati velikost. Za takový kompletní plugin bych byl ochotný přihodit finanční odměnu:)a myslím, že i plno dalších. Děkuji
( http://www.adler.info/index2.php?loginframe=TRI%C4%8CKA ) takhle nějak by to mohlo taky být:)
Zdravím, jak rád říkám, vytvořit jde skoro cokoliv, je to jen otázkou času a následně občas i financí. Pokud jsem správně pochopil, měl bys vložen dvakrát tento plugin. Jednou by byl použit k výběru velikosti a podruhé k výběru barvy, kdy při změně barvy by se změnil i zobrazený obrázek. V základu je potřeba tedy rozšířit plugin o volitelnou možnost obrázku, což je potřeba nějak vyřešit i v administraci (jak přiřadit obrázek) a následně i ve zpracování informace o vybraném atributu produktu v průběhu přidání do košíku, mazání a odeslání objednávky. Druhou věcí je pak sepsat nějaký skriptík který obstará výměnu obrázků. To je jen takový nástin, pokud by jsi měl zájem o bližší dohodu, budu rád, když mi napíšeš na mail (odkaz webmaster vpravo dole). Měj se a díky, Dan
Zdravím
Implementoval jsem úpravu na Quick Cart v úpravě H2. Všechno funguje korektně, jen atribut v hranatých závorkách se mi v objednávce nebo v košíku zobrazuje jako číslo například: „LED bodovka HKE27-3 [20]“ Potřeboval bych trošku pomoci kde hledat chybu…
Díky
Též zdravím, odepsal jsem již na mail, ale zde ve zkratce, doporučuji kontrolu definičních souborů pro databázi, zda se shodují počty položek i jejich pozice. V tomto případě bych řekl, že se jedná o posunutí a zobrazuje se výše daně, jak jste psal. Mějte se
Zdravím,
snažím sa nainštalovať tento plugin do verzie v3.0, v admine to funguje, ale aj po niekoľkonásobnom opakovaní stále mi nezobrazuje okienko pri produkte a pri vkladaní do košíka prichádzam k hláške:
Fatal error: Call to undefined method Products::getInstance() in /www/mirea.biz/public_html/_sub/v30/core/orders.php on line 237
Čo robím zle?
Ďakujem za radu
(PS: skúšam to na kópii eshopu http://www.v30.mirea.biz)
Už som to vyriešil prechodom na verziu 3.4.
Ďakujem za plugin
Gratuluji k úspěchu, problém byl pravděpodobně právě v tom, že od verze 3.0 k verzi 3.4 se kód interně dosti změnil. Přeji bezproblémové užívání.
Mam problem s bielou strankou, pridam productattributes asi na 5 produktov, potom mi to uz ide pomalsie a asi po desiatom to skonci bielou obrazovkou. Ked si potom pozrem subor cz_products.php tak tam je toto:
$$$$$$$
$
$$$$$$$
$
$$$$$$$
$
$$$$$$$
a tie dolare tam predtym neboli, az ked som pridaval tie atributy.
Zdravím, viděl bych to na chybnou úpravu databáze při aplikaci pluginu. Doporučuji obnovit databázi ze zálohy a postupně projít a kontrolovat úpravy, které se mají provést. Postup na úpravy je psán pro čistý shop, pokud jste již využíval i jiné pluginy, třeba toto brát v potaz a úpravy provádět s rozmyslem, i zde mohla tato chyba vzniknout.
Tato chyba nastává pokud do databáze na všechny řádky nevložíte nakonec $.
zdravim,
mam problem s plnou funkcnosti v upravene verzi. v kosiku se mi spatne pocita mnozstvi polozek, pokud se do nej prida vice variant stejneho zbozi. prosim nekoho, kdo tomu vice rozumi (idealne p. remis), aby se mi ozval.
kc odmena
diky
stepan bartek
tel 608 434 184
icq 206 021 992
st6 (zav) seznam.cz
Příjemný večer přeji, co myslíte přesně počítáním položek? Celkový počet v košíku či pouze počet určitého typu produktu? Nebo jinak? K zaslání případných detailů prosím použijte odkaz webmaster v pravém dolním rohu, děkuji.
Ahoj Danny
potřebuji poradit
plugin jsem dal na stránky a vše vypadá, že funguje, ale když si dám zboží do košíku a pak kliknu na další tak to nic neudělá
nedostanu se dál. Nevíš co s tím?
Díky Fry
Zdravím, to je takto obtížné říci, přirovnal bych to k věštění z koule
každopádně je to podivné chování, ale z těchto údajů Ti nejsem schopen pomoci, zkus vrátit úpravy ze zálohy a provést instalaci pluginu obezřetně opětovně.
Ak si urobil vsetky kroky pozorne podla Dannyho,tak este nezabudni zalozit stranku s objednavkou. Ak ju nemas tak vtedy moze robit presne to, ze v kosiku ked kliknes na dalsi tak nic sa nestane
Ahoj, díky moc za tenhle plugin
chvíli mi to dalo zabrat, ale nakonec to vyšlo díky radám tady v diskuzi.
až bude web tak každopádně budeš v patičce
Ještě jednou díky mooc
Čau,
plugin samotný mi funguje bez problémů, ale zkouším ho rozšířit na dva Atributy. Dělal jsem to podle tohohle postupu a všude upravoval na dva (sTyp, sTyp2), ale nakonec mi to háže chybu:
„parse error, expecting `T_FUNCTION’ in „orders.php“ on line 534″
Soubor uploadován: „http://leteckaposta.cz/121046295″
Asi jsem to někde špatně doplnil. Mohli byste se na to jen tak zběžně mrknout, jestli nenajdete problém?
Předem díky.
PS: Pokud to vyřešíme, rád dodám celé řešení dvou atributů.
Zdravim,
tiež by som potreboval aplikovat plugin na dva Atributy.
V PHP jazyku som len zaciatocnik, tak necviem ci to pomoze, ale ked som sa tak pozeral na ten tvoj order.php, mam pocit že chyba by mohla byt vo funkci generateBasket.
podla mna by ta podmienka zohladnujuca druhy atribut mala vyzerat inak, ja by som ju dal asi v takomto tvare:
if ( $this->aProducts[$i]['sTyp2'] != „“ ) { $this->aProducts[$i]['sName'] .= “ [".$this->aProducts[$i]['sTyp'].$this->aProducts[$i]['sTyp2'].“]“; }
Bohužel, ani takhle to nejede. Tahle podmínka by podle mě ani nezhroutila celou stránku. Musíme prostě hledat
v tvojom zdrojaku je ta podmienka na riadku 78
ak to pomoze, daj mi prosim vediet, vdaka
Zdravím, pokud vydržíte do zítra, mrknu na to, teď jsem měl dosti jiné práce. Dan
PS: nepřeji si, aby návod byl zveřejněn na jiném webu, můj názor je ten, že každý, komu bych doporučil pustit se do této úpravy, by měl být schopen řešení zduplikovat, jsem ochotný přidat k návodu upravené soubory s duplikovaným pluginem, ale návod jako takový by to pouze znepřehlednilo
Ještě doplním komentář k této chybě, koukl jsem do kódu a máš tam dvě chyby. První způsobí toto hlášení, při kopírování IF podmínky ve funkci addToBasket jsi neukončil složenou závorku, což byl důvod hlášení, později by se projevila i chybějící ELSE větev k tomu to IFu. Druhá chyba se nachází ve funkci saveBasket, kde jsi zapomněl přidat položku pole pro druhý atribut, zde by se též nefunkčnost později projevila. Věřím, že nyní již vše poběží bez problémů.
cawes Dany,
tým „…daj mi vediet“ som urcite nemyslel, ze by sa tvoj navod zverejnil na nejakej inej stranke.
Stale sa trapim s tym suborom „orders.php“ teda aspon myslim ze ostatne duplikovanie som zvladol dobre, ak by si mohol pridat k navodu upravené subory s duplikovanym pluginom, bolo by to super
Zdárek, verze s duplikovaným pluginem je ke stažení na http://efox.cz/wp-content/uploads/2010/04/productattributes2.7z Link je přidán i v původním příspěvku. Doufám, že to vyřeší veškeré komplikace.
cawes,
tak sa mi konecne podarilo najst moju chybu, zabudol som uzavriet podmienku vo funkcii addtobasket, tá moja nepozornost
Dakujem za verziu s duplikovanym pluginom, dost mi pri tom pomohla
No nevím jestly se to řešilo určitě jo ale jsem asi slepy
Nefunguje mi to v CZ pořad piše „Fatal error: Call to undefined function cz_products() in /home/free/ic.cz/c/compphone/root/www/core/products.php on line 59″ ale když si to přepnu na EN tak to funguje v pohodě
Kde je cbyba ? nebo co mám doplnit ?
díík
V souboru cz_products.def.php máš špatně en_products má tam být cz_products.
Chybu už mi nepíše
ale nemůžu přidávat nebo upravovat produkty .. to zas už vubec nwm
Dobrý den,
Nevíte prosím jak nainstalovat plugin do quick.cartu H2? (http://www.quickcart-eshop.cz/)
Jelikož se jedná o mutaci klasického Quick.Cartu, předpokládám, že s trochou obezřetnosti půjde aplikovat popsaný postup.
Dobrý den,
zkouším nainstalovat rozšíření na v.3,6.V anglické verzi bez problémů ale v české to zlobí.Konkrétně v admin menu je to O.K nicméně na stránkách se možnost výběru atributu nezobrazí.Poradí někdo prosím?Díky.
Česká i anglická verze jsou ekvivalentní, mění se jen načítání frází ze souborů s překladem, konfigurací a načtení jiných databázových souborů. Odhadoval bych tedy, že chyba bude v neupravení databázových souborů pro českou verzi, pravděpodobně s předponou „cz_“ či „cs_“.
Děkuji za odpověď,šlo pouze o to,že v admin části jsem zapomněl aktivovat košík.Nyní to tedy již jde ale z nějakého důvodu mi nejde uložit změna atributů z admin modulu.Hlásí to „chybu serveru….“.Samozřejmě chmod je všude nastaven.Předpokládám,že se mění jen en_products.def.php a db/orders_temp.def.php a samozřejmě lang/cz.php,ostatní jsem nakopíroval z již funkční verze.Při uložení zeditovaného produktu se tato změna zapisuje kam?Nebo jaká rutina se spouští?Zkusím se v tom večer pohrabat.V anglické verzi je to bez problémů.Děkuji.
Jen pro doplnění HTTP 500 Vnitřní chyba serveru……
Problém vyřešen,děkuji za posporu.Bohužel z mně neznámého důvodu jsem měl v products.php velmi dlouhý řetězec $$$$$$$$$$$$$$ a to samozřejmě způsobilo time-out serveru.Funguje bezvadně i ve verzi 3.6, děkuji za super úpravu….
Perfektní, jsem rád, že po drobné komplikaci funguje bez problémů.
No,ono to úplně tak bez problémů není.Zjistil jsem,že uvedený řetězec se mi tam vkládá asi při uložení změny v produktu.Když ho manuálně odmažu tak je vše O.K.Nevíte kde při ukládání nebo zpracování změny z administrace může být chyba?
Co mohu posoudit, tak vkládaný výpis databáze vypadal bez problémů, ale prosím případné bližší informace do mailu nebo jen pár řádků, toto bylo již moc. Z uvedených informací těžko soudit, doporučuji překontrolovat funkci addToBasket, více mě z toho co je zde uvedeno nenapadá.
Omlouvám se.Pro ilustraci:
Původní soubor:
149$1000342 Dostihové sedlo$4100.00$1$0$7 dní$Dostihové sedlo Daslo z barevné kůže$500gr|2$
150
A toto to udělá po přidání nebo smazání atributů:
$$$$$$$$
$
$$$$$$$
$
$$$$$$$
149$1000342 Dostihové sedlo$4100.00$1$0$7 dní$Dostihové sedlo Daslo z barevné kůže$500gr|2$
150
Do DB jsem dodatečně ještě přidal další $ na konec a je to lepší(přidává to méně $).
S největší pravděpodobností jsi zapomněl přidat na konec každého řádku v databázi znak $ v souborech db/en_products.php a db/orders_temp.php a databázový soubor se následně díky špatnému počtu $ takto chová.
Ano,na to jsem také myslel ale ono mi to dělá i když překopíruji originál en_products.php do českého prostředí (samozřejmě přejmenuji).Tzn.chyba bude asi někde jinde.
Jak je vidět u 18.tého komentáře chyba odpovídá přesně stejnému výsledku, nemyslím, že by naprosto stejný projev měla i jiná chyba, doporučuji projít pozorně, zda na konci každého řádku s daty je přidán znak $.