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.
Podmínkou použití tohoto pluginu je vložení zpětného odkazu na tento web do patičky obchodu ve formátu:
<a title="eFox.cz" href="http://efox.cz">Extended by <strong>eFox.cz</strong></a>
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.
Vytisknout tento příspěvek




(4 votes, average: 4,75 out of 5)
Květen 13th, 2009 v 12:39
Č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é.
Květen 13th, 2009 v 20:38
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.
Únor 24th, 2010 v 23:47
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.
Květen 14th, 2009 v 00:47
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á
)
Květen 14th, 2009 v 01:13
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.
Květen 14th, 2009 v 01:45
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!!!!!!!!!!
Květen 14th, 2009 v 13:07
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)
Květen 14th, 2009 v 19:34
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áš
Květen 17th, 2009 v 11:14
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??
Květen 17th, 2009 v 12:35
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.
Květen 17th, 2009 v 14:14
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.
Květen 19th, 2009 v 11:34
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ě „.
Květen 19th, 2009 v 11:36
Jinak změna entity nepomohla
Květen 19th, 2009 v 18:12
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.
Srpen 9th, 2009 v 17:21
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
Srpen 10th, 2009 v 20:16
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.
Srpen 11th, 2009 v 18:05
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.
Srpen 11th, 2009 v 19:41
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'].“]“;
Srpen 11th, 2009 v 20:31
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
Srpen 12th, 2009 v 02:02
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.
Srpen 13th, 2009 v 12:06
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í
Srpen 13th, 2009 v 15:15
Problém by měl být vyřešen po nahrazeni funkce saveBasket a řádků v souboru templates/orders_basket.tpl
Srpen 14th, 2009 v 12:21
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
Srpen 14th, 2009 v 13:01
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í.
Srpen 14th, 2009 v 13:30
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á.
Srpen 14th, 2009 v 13:39
V pořádku
i já děkuji, chtěl jsem se jen podívat, jak to hezky funguje s více atributy.
Srpen 19th, 2009 v 11:57
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
Srpen 19th, 2009 v 13:52
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.
Srpen 20th, 2009 v 12:23
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!
Srpen 20th, 2009 v 12:49
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
Srpen 20th, 2009 v 12:27
….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….
Srpen 20th, 2009 v 12:52
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.
Srpen 22nd, 2009 v 11:13
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…
Srpen 22nd, 2009 v 11:55
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ř.
Září 9th, 2009 v 14:39
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!!!
Září 9th, 2009 v 14:56
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“.
Září 10th, 2009 v 16:07
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.
Září 10th, 2009 v 20:06
Navýšení vyřešilo hlášku, pokud se zobrazuje prázdná stránka, problém bude třeba hledat asi jinde.
Září 16th, 2009 v 11:09
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
Září 17th, 2009 v 11:54
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í!
Listopad 29th, 2009 v 11:48
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
Prosinec 1st, 2009 v 01:57
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
Leden 26th, 2010 v 10:54
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…
Září 17th, 2009 v 18:26
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!
Listopad 22nd, 2009 v 20:35
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!
Listopad 22nd, 2009 v 22:59
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..
Listopad 23rd, 2009 v 22:10
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!
Listopad 29th, 2009 v 12:03
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:)
Prosinec 1st, 2009 v 01:52
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
Leden 4th, 2010 v 00:24
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
Leden 6th, 2010 v 01:48
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
Leden 15th, 2010 v 02:56
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)
Leden 17th, 2010 v 02:11
Už som to vyriešil prechodom na verziu 3.4.
Ďakujem za plugin
Leden 26th, 2010 v 20:52
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í.
Leden 25th, 2010 v 22:00
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.
Leden 26th, 2010 v 20:55
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.
Únor 4th, 2010 v 10:52
Tato chyba nastává pokud do databáze na všechny řádky nevložíte nakonec $.
Leden 26th, 2010 v 15:45
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
Leden 26th, 2010 v 21:04
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.
Březen 5th, 2010 v 22:14
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
Březen 18th, 2010 v 00:22
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ě.
Duben 20th, 2010 v 10:38
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
Březen 21st, 2010 v 16:23
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
Březen 25th, 2010 v 10:35
Č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.
Březen 25th, 2010 v 10:37
PS: Pokud to vyřešíme, rád dodám celé řešení dvou atributů.
Březen 29th, 2010 v 11:30
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'].“]“; }
Březen 31st, 2010 v 10:32
Bohužel, ani takhle to nejede. Tahle podmínka by podle mě ani nezhroutila celou stránku. Musíme prostě hledat
Březen 29th, 2010 v 11:36
v tvojom zdrojaku je ta podmienka na riadku 78
ak to pomoze, daj mi prosim vediet, vdaka
Březen 31st, 2010 v 11:04
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
Duben 5th, 2010 v 17:27
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ů.
Duben 2nd, 2010 v 20:26
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
Duben 3rd, 2010 v 12:46
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.
Duben 12th, 2010 v 15:40
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
Květen 18th, 2010 v 22:43
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
Květen 18th, 2010 v 22:49
V souboru cz_products.def.php máš špatně en_products má tam být cz_products.
Květen 18th, 2010 v 22:55
Chybu už mi nepíše
ale nemůžu přidávat nebo upravovat produkty .. to zas už vubec nwm
Květen 31st, 2010 v 18:27
Dobrý den,
Nevíte prosím jak nainstalovat plugin do quick.cartu H2? (http://www.quickcart-eshop.cz/)
Červen 4th, 2010 v 23:18
Jelikož se jedná o mutaci klasického Quick.Cartu, předpokládám, že s trochou obezřetnosti půjde aplikovat popsaný postup.
Srpen 22nd, 2010 v 19:27
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.
Srpen 22nd, 2010 v 21:57
Č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_“.
Srpen 23rd, 2010 v 12:44
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.
Srpen 23rd, 2010 v 19:43
Jen pro doplnění HTTP 500 Vnitřní chyba serveru……
Srpen 23rd, 2010 v 20:41
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….
Srpen 24th, 2010 v 02:04
Perfektní, jsem rád, že po drobné komplikaci funguje bez problémů.
Srpen 24th, 2010 v 12:36
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?
Srpen 24th, 2010 v 22:29
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á.
Srpen 24th, 2010 v 23:35
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ě $).
Srpen 25th, 2010 v 01:05
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á.
Srpen 25th, 2010 v 12:40
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.
Srpen 25th, 2010 v 21:39
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 $.