

Nová verze původního pluginu ProductAttributes lite z mé tvorby, která obsahuje vylepšené administrační rozhraní.
Čísla řádků odpovídají originálnímu Quick.Cart v3.6.
(upravené soubory 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 určité řádky nebo obsah souboru.
Nezapomeňte na úpravu databáze, především na vkládání symbolu $ na konec řádků s daty v níže určených souborech.
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>
Pokud mi zašlete mail o umístění odkazu v obchodě s linkem a krátkým popisem, zařadím Vás do seznamu uživatelů.
vložit do souboru actions_admin/products.php na řádek 64
if ( ereg( '\|\|', $aData['sTyp'] ) ) {
$nameExplode = explode( '||', $aData['sTyp'] );
$sTyp = trim( $nameExplode[0] );
$aExplode = explode( '|', $nameExplode[1] );
$iExplode = count( $aExplode );
for ($i = 0; $i < $iExplode; $i++ ) {
$sAttributes .= " <tr>";
$sAttributes .= " <td>";
$sAttributes .= " <input type=\"text\" name=\"aAttributes[".$i."]\" class=\"input\" value=\"".trim( $aExplode[$i] )."\" size=\"20\" />";
$sAttributes .= " </td>";
$sAttributes .= " </tr>";
}
for ($i = $iExplode; $i < $iExplode + 3; $i++ ) {
$sAttributes .= " <tr>";
$sAttributes .= " <td>";
$sAttributes .= " <input type=\"text\" name=\"aAttributes[".$i."]\" class=\"input\" value=\"\" size=\"20\" />";
$sAttributes .= " </td>";
$sAttributes .= " </tr>";
}
} else {
$sTyp = "";
for ( $i = 0; $i < 3; $i++ ) {
$sAttributes .= " <tr>";
$sAttributes .= " <td>";
$sAttributes .= " <input type=\"text\" name=\"aAttributes[".$i."]\" class=\"input\" value=\"\" size=\"20\" />";
$sAttributes .= " </td>";
$sAttributes .= " </tr>";
}
}
nahradit v souboru actions_client/p.php řádek 77
$oOrder->deleteFromBasket( $iProductDelete, $sTyp );
vložit do souboru actions_client/p.php na řádek 83
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 );
vložit do souboru actions_client/products.php na řádek 7
if ( !empty( $aData['sTyp'] ) ) {
$nameExplode = explode( '||', $aData['sTyp'] );
$aData['sTyp'] = "<strong>".trim( $nameExplode[0] )."</strong> ";
$typeExplode = explode( '|', $nameExplode[1] );
$aData['sTyp'] .= "<select name=\"sTyp\">";
foreach ( $typeExplode as $typeOption ) {
$aData['sTyp'] .= "<option value=\"".trim( $typeOption )."\">".trim( $typeOption )."</option>";
}
$aData['sTyp'].= "</select>";
}
nahradit v souboru core/orders.php řádek 39
$aData['sLinkDelete'] = defined( 'CUSTOMER_PAGE' ) ? $GLOBALS['aData']['sLinkName'].'&iProductDelete='.$aData['iProduct'].'&sTyp='.urlencode($aData['sTyp']) : null;
nahradit v souboru core/orders.php řádky 74,75,76
$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'] );
vložit do souboru core/orders.php na řádek 77
if ( !empty( $this->aProducts[$i]['sTyp'] ) ) { $this->aProducts[$i]['sName'] .= " [".$this->aProducts[$i]['sTyp']."]"; }
nahradit v souboru core/orders.php řádky 133,134
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]];
nahradit v souboru core/orders.php řádek 157
function deleteFromBasket( $iProduct, $sTyp, $iOrder = null ){
nahradit v souboru core/orders.php řádek 170
if( $aExp[1] == $iProduct && $aExp[0] == $iOrder && $aExp[5] == urldecode($sTyp) ){
nahradit v souboru core/orders.php řádek 193
function addToBasket( $iProduct, $iQuantity, $sTyp, $iOrder = null ){
vložit do souboru core/orders.php na řádek 211
if( $aExp[5] == $sTyp ){
vložit do souboru core/orders.php na řádek 220
} else {
$aFile[$i] .= "\n";
}
nahradit v souboru core/orders.php řádek 241
fwrite( $rFile, $iOrder.'$'.$iProduct.'$'.$iQuantity.'$'.$oProduct->aProducts[$iProduct]['fPrice'].'$'.$oProduct->aProducts[$iProduct]['sName'].'$'.$sTyp.'$'."\n" );
vložit do souboru core/products-admin.php na řádek 178
if( isset( $aForm['aAttributes'] ) && is_array( $aForm['aAttributes'] ) ) {
$empty = true;
foreach( $aForm['aAttributes'] as $sValue ) { if ( !empty( $sValue ) ) $empty = false; }
if ( $empty ) { $aForm['sTyp'] = ""; }
else {
$aForm['sTyp'] = trim( str_replace( '|', '|', $aForm['sTyp'] ) ).'||';
$first = true;
foreach( $aForm['aAttributes'] as $sValue ){
$sValue = trim( $sValue );
if ( !empty( $sValue ) ) {
if ( $first ) { $first = false; }
else { $aForm['sTyp'] .= '|'; }
$aForm['sTyp'] .= trim ( str_replace( '|', '|', $sValue ) );
}
}
}
} else { $aForm['sTyp'] = ""; }
vložit v souboru db/en_products.php na konec každého řádku s daty znak $
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] );
}
?>
vložit v souboru db/orders_temp.php na konec každého řádku s daty znak $
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 lang/en.php na řádek 213
$lang['productattributes_lite_buy'] = "Koupit"; $lang['Attributes'] = "Druhy"; $lang['productattributes_admin_title'] = "Popis"; $lang['productattributes_admin_attribute'] = "Druh";
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" />
nahradit v souboru templates/pages_default.tpl řádek 74
<div class="basket"><a href="$aData[sLinkName]">$lang[productattributes_lite_buy]</a></div>
vložit do souboru templates/products_default.tpl na řádek 36
$aData[sTyp]
vložit do souboru templates/admin/products.tpl na řádek 165
<li class="tabAttributes"><a href="#more" onclick="displayTab( 'tabAttributes' )">$lang['Attributes']</a></li>
vložit do souboru templates/admin/products.tpl na řádek 225
<table class="tab" id="tabAttributes">
<!-- tab attributes start -->
<thead>
<tr>
<td>$lang['productattributes_admin_title']</td>
</tr>
<tr>
<td><input type="text" name="sTyp" class="input" value="$sTyp" size="15" /></td>
</tr>
<tr>
<td>$lang['productattributes_admin_attribute']</td>
</tr>
</thead>
<tbody>
$sAttributes
</tbody>
<!-- tab attributes end -->
</table>

Pouzil jsem toto rozsireni ale po ulozeni se mi neulozi nastavení tohoto rozšíření.. Může někdo poradit?
Máte korektně nastavené atributy u souborů ve složce „db“? Upravoval jste obchod samostatně nebo využil upravené soubory?
Vše jede… Díky za užitečné fce.
Jdu na to znova, mam verzi 3.4, pujde to naroubovat? Taktez jsem pouzil rozsireni zobrazovani posledních produktu a taktez nemohu menit nastavení.
Ahoj, neřešili jste to pro QC v4.x? Zkoušel jsem to, ale je tam jiny obsah souboru, napr action-client/p.php je jiny. Diky