Jump to content

Přehled atributů na stránce kategorie


jiritomekeu

Recommended Posts

Zdravím všechny,

 

nevíte někdo o free variantě tohoto modulu: http://www.prestashop.com/forums/topic/79758-module-product-list-attributes-allow-customers-to-select-product-attributes-on-the-category-manufacturer-supplier-and-search-pages/ ?

 

Jde o to, že na stránce kategorií, výrobců, dodavatelů a vyhledávání je u každého produktu přehled jejich vlastností - v podstatě mám 2 skupiny, barvu a velikost a třetí bude velikost bot - postačí pouze velikosti, barvy vypisovat nepotřebuji.

 

Nebo nevíte alespoň nějaký postup? Stačí pouze nakopnout a když se mi to poté podaří, uvolním zdrojáky zde, jako vždy. Jedná se o verzi 1.4.7.0.

Link to comment
Share on other sites

Zdravím všechny,

 

nevíte někdo o free variantě tohoto modulu: http://www.prestasho...d-search-pages/ ?

 

Jde o to, že na stránce kategorií, výrobců, dodavatelů a vyhledávání je u každého produktu přehled jejich vlastností - v podstatě mám 2 skupiny, barvu a velikost a třetí bude velikost bot - postačí pouze velikosti, barvy vypisovat nepotřebuji.

 

Nebo nevíte alespoň nějaký postup? Stačí pouze nakopnout a když se mi to poté podaří, uvolním zdrojáky zde, jako vždy. Jedná se o verzi 1.4.7.0.

Věděl by někdo o postupu, rád zaplatím, ale cena toho modulu mi přijde dost velká, chtěl bych to pouze pro jeden můj eshop a řešit to formou modulu mi přijde zbytečné.

Link to comment
Share on other sites

Věděl by někdo o postupu, rád zaplatím, ale cena toho modulu mi přijde dost velká, chtěl bych to pouze pro jeden můj eshop a řešit to formou modulu mi přijde zbytečné.

Vyřešeno!

Zobrazují se atributy na stránce kategorie, vyhledávání, výrobců i dodavatelů. Kdo má zájem pište PM.

Link to comment
Share on other sites

A nemůžeš to postnout sem? Ocenil bych to... Dík

Nejprve si stáhni modul, z tohoto odkazu: http://test.jiritome...tsattribute.rar.

Poté ho nahraj do složky s modulama.

Nainstaluj. Poté vytvoř nový HOOK (např. productAttributes) jako to mám já. Uprav soubor productsattribute.php a přidej možnost zobrazení v tomto hooku. V přiložených souborech už tento hook přidaný je.

public function hookProductAttributes($params)
{
return $this->hookHome($params);
}

Potom musíš upravit soubory:

controllers/CategoryController.php

controllers/SearchController.php

controllers/Manufacturer.php

controllers/SupplierContoller.php

 

- na správném místě vložíž vytvořený hook.

 

CategoryController.php:

self::$smarty->assign(array(
 'products' => (isset($this->cat_products) AND $this->cat_products) ? $this->cat_products : NULL,
 'id_category' => (int)($this->category->id),
 'id_category_parent' => (int)($this->category->id_parent),
 'return_category_name' => Tools::safeOutput($this->category->name),
 'path' => Tools::getPath((int)($this->category->id)),
 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
 'categorySize' => Image::getSize('category'),
 'mediumSize' => Image::getSize('medium'),
 'thumbSceneSize' => Image::getSize('thumb_scene'),
 'homeSize' => Image::getSize('home')
));
   self::$smarty->assign(array(
 'HOOK_PRODUCT_ATTRIBUTES' => Module::hookExec('productAttributes')
));

 

SearchController.php:

  $this->productSort();
  $this->n = abs((int)(Tools::getValue('n', Configuration::get('PS_PRODUCTS_PER_PAGE'))));
  $this->p = abs((int)(Tools::getValue('p', 1)));
  $search = Search::find((int)(self::$cookie->id_lang), $query, $this->p, $this->n, $this->orderBy, $this->orderWay);
  Module::hookExec('search', array('expr' => $query, 'total' => $search['total']));
  $nbProducts = $search['total'];
  $this->pagination($nbProducts);
  self::$smarty->assign(array(
  'products' => $search['result'], // DEPRECATED (since to 1.4), not use this: conflict with block_cart module
  'search_products' => $search['result'],
  'nbProducts' => $search['total'],
  'search_query' => $query,
  'homeSize' => Image::getSize('home')));
  self::$smarty->assign(array(
 'HOOK_PRODUCT_ATTRIBUTES' => Module::hookExec('productAttributes')
));

 

ManufacturerContoller.php:

  self::$smarty->assign(array(
'nb_products' => $nbProducts,
'products' => $this->manufacturer->getProducts($this->manufacturer->id, (int)self::$cookie->id_lang, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay),
'path' => ($this->manufacturer->active ? Tools::safeOutput($this->manufacturer->name) : ''),
'manufacturer' => $this->manufacturer));
   self::$smarty->assign(array(
 'HOOK_PRODUCT_ATTRIBUTES' => Module::hookExec('productAttributes')
));

 

Souror SupplierContoller.php upravený nemám, nepoužívám ho.

 

Dále musíš upravit soubor v themes/tvétéma/product-list.tpl:

 

- vložíš na správné místo, na kterém chceš zobrazovat tento seznam atributů

{$HOOK_PRODUCT_ATTRIBUTES}

 

Poté už se ti zobrazují atributy, ale POZOR!

 

V souboru productsattribute.php na tomto místě:

  if(count($product->group) >0){
   $listatt = "";
   $attributeTag .=  '<div id="attributes_list">';
   foreach($groups as $inkey =>  $inval){
								if ($inkey == 1){

	 $attributeTag .= '<ul id="group_'.$inkey.'">';

	 foreach ($inval['attributes'] as $id_attribute => $id_attribute_val ){
	  $attributeTag .= '<li id="'.$id_attribute.'">'.$id_attribute_val.'</li>';		
	 }

	 $attvalue = 0;
	 $attributeTag .= '</ul>';
								}	

   }
   $attributeTag .= '</div>';
  }

 

- upravuješ, jak se bude seznam zobrazovat, defaultně to bylo jako SELECT, já to mám jako UL jen pro informaci a mám zde podmínku (if ($inkey == 1)) - to je pouze skupina s číslem 1 - velikosti, takže pokud chceš více skupin atributů, musíš podmínku smazat nebo pro každou skupinu vytvořit jiný seznam.

 

Defaultně byl tento modul dělaný tak, že vypadal jako výpis produktů a zobrazoval se pouze na úvodní stránce a byla tam možnost objednávát různé atributy bez kliknutí na detail produktu, takže soubor productsattribute.tpl jsem celý překódoval.

 

Moje úprava vypadá takto: http://test.jiritomek.eu/vypis.jpg

Link to comment
Share on other sites

Ok, hned jak nasypu zboží do shopu, tak to musím vyzkoušet. Vypadá to zajímavě. Každopádně dík za tip ;-)

Ještě jeden takový detail. Musíš mít všechny produkty, u kterých chceš vypisovat atributy zobrazené také v hlavní kategorii (myslím kat. s názvem "DOMŮ" č. 1).

Link to comment
Share on other sites

Udělal jsem pokrok, nezobrazí se mi zboží ale jen atribut :-) Takže problém mám v tom, že to neumím předělat na ten select, můžeš mi s tím helpnout?

A ty to chceš mít jako select?

if(count($product->group) >0){
   $listatt = "";
   $attributeTag .=  '<div id="attributes_'.$product->id.'">';
   $attributeTag .= '<table >';
   foreach($groups as $inkey =>  $inval){


	 $attributeTag .= '<tr>';
	 $attributeTag .= '<td >';
	 $attributeTag .= '<label for="group_'.$inkey.'">'.$inval['name'].'</label>';
	 $attributeTag .= '</td>';
	 $attributeTag .= '<td>';
	 $attributeTag .= '<select  name="group_'.$inkey.'"  id="group_'.$inkey.'" onchange="javascript:findCombination('.$product->id.');" >';

	 foreach ($inval['attributes'] as $id_attribute => $id_attribute_val ){
	  if($inval['attributes'][$inval['default']] == $id_attribute_val ){
	   $attributeTag .= '<option value="'.$id_attribute.'" selected="selected" title="'.$id_attribute_val.'" >'.$id_attribute_val.'</option>';
	   $listatt .= ",'".$id_attribute."'";

	  }else{
	   $attributeTag .= '<option  value="'.$id_attribute.'" title="'.$id_attribute_val.'" >'.$id_attribute_val.'</option>';
	  }


	 }

	 $attvalue = 0;
	 $attributeTag .= '</select>';
	 $attributeTag .= '</td>';
	 $attributeTag .= '</tr>';


   }
   $attributeTag .= '<tr>';
   $attributeTag .= '<td>';
   $attributeTag .= '<label>Quantity</label>';
   $attributeTag .= '</td>';
   $attributeTag .= '<td>';
   $attributeTag .= '<input type="text" name="qty" id="quantity_wanted" class="text" value="1" size="2" maxlength="3" />';
   $attributeTag .= '</td>';
   $attributeTag .= '</tr>';
   $attributeTag .= '</table>';
   $attributeTag .= '</div>';
  }else{
   $attributeTag .= '<table >';
   $attributeTag .= '<tr>';
   $attributeTag .= '<td>';
   $attributeTag .= '<label>Quantity</label>';
   $attributeTag .= '</td>';
   $attributeTag .= '<td>';
   $attributeTag .= '<input type="text" name="qty" id="quantity_wanted" class="text" value="1" size="2" maxlength="3" />';
   $attributeTag .= '</td>';
   $attributeTag .= '</tr>';
   $attributeTag .= '</table>';
  }

Link to comment
Share on other sites

No mně by se to hodilo na výběr velikosti boty, je jich hodně, nicméně tudy cesta nevede, viz screen :-(

U všech bot to zobrazilo velikosti dostupné u první boty. A i když vyberu velist, tak do košíku to dá defaultní velikost.

post-61276-0-04844200-1330862669_thumb.jpg

Link to comment
Share on other sites

No mně by se to hodilo na výběr velikosti boty, je jich hodně, nicméně tudy cesta nevede, viz screen :-(

U všech bot to zobrazilo velikosti dostupné u první boty.

Tak to je zajímavý.

Přepiš funkci public function hookHome($params) za tohle:

public function hookHome($params){
 global $smarty, $cookie,$attributeList;

   $category = new Category(1);

 if (isset($params['category']->id_category)){
  $category = $params['category'];
		 }
	  $sizeOfCategoryProducts = $category->getProducts(intval($cookie->id_lang), 1, 30, NULL, NULL, true);
  $categoryProducts = $category->getProducts(intval($cookie->id_lang), 1, $sizeOfCategoryProducts);

  $pd = (isset($categoryProducts) AND $categoryProducts) ? $categoryProducts : NUL;
  $attributeTag = '';
  $attributehtml= new ArrayObject;


  for($i=0; $i< count($categoryProducts);$i++){

   $catpro =  $categoryProducts[$i];
   $id_product = $catpro['id_product'];
   $product = new Product($id_product, true, intval($cookie->id_lang));



  /* Attributes / Groups & colors */
  if ($product->quantity > 0 OR Product::isAvailableWhenOutOfStock($product->out_of_stock))
  {
   $colors = array();
   $attributesGroups = $product->getAttributesGroups(intval($cookie->id_lang));
   //print_r($attributesGroups);
   //echo "<hr>";


   if (Db::getInstance()->numRows())
   {
 $combinationImages = $product->getCombinationImages(intval($cookie->id_lang));
 foreach ($attributesGroups AS $k => $row)
 {
  /* Color management */
  if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) AND $row['id_attribute_group'] == $product->id_color_default)
  {
   $colors[$row['id_attribute']]['value'] = $row['attribute_color'];
   $colors[$row['id_attribute']]['name'] = $row['attribute_name'];
  }

  $groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = $row['attribute_name'];
  $groups[$row['id_attribute_group']]['name'] = $row['public_group_name'];
  $groups[$row['id_attribute_group']]['is_color_group'] = $row['is_color_group'];
  if ($row['default_on'])
   $groups[$row['id_attribute_group']]['default'] = intval($row['id_attribute']);
  if (!isset($groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']]))
   $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] = 0;
  $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] += intval($row['quantity']);

  $combinations[$row['id_product_attribute']]['attributes_values'][$row['id_attribute_group']] = $row['attribute_name'];
  $combinations[$row['id_product_attribute']]['attributes'][] = intval($row['id_attribute']);
  $combinations[$row['id_product_attribute']]['price'] = floatval($row['price']);
  $combinations[$row['id_product_attribute']]['ecotax'] = floatval($row['ecotax']);
  $combinations[$row['id_product_attribute']]['weight'] = floatval($row['weight']);
  $combinations[$row['id_product_attribute']]['quantity'] = intval($row['quantity']);
  $combinations[$row['id_product_attribute']]['reference'] = $row['reference'];
  $combinations[$row['id_product_attribute']]['id_image'] = isset($combinationImages[$row['id_product_attribute']][0]['id_image']) ? $combinationImages[$row['id_product_attribute']][0]['id_image'] : -1;
 }
 //wash attributes list (if some attributes are unavailables and if allowed to wash it)
 if (!Product::isAvailableWhenOutOfStock($product->out_of_stock) && Configuration::get('PS_DISP_UNAVAILABLE_ATTR') == 0)
  foreach ($groups AS &$group)
   foreach ($group['attributes_quantity'] AS $key => &$quantity)
    if (!$quantity)
	 unset($group['attributes'][$key]);
 foreach($groups AS &$group)
  natcasesort($group['attributes']);
 foreach ($combinations AS $id_product_attribute => $comb)
 {
  $attributeList = '';
  foreach ($comb['attributes'] AS $id_attribute)
   $attributeList .= '\''.intval($id_attribute).'\',';
  $attributeList = rtrim($attributeList, ',');
  $combinations[$id_product_attribute]['list'] = $attributeList;
 }

 $colorw = (sizeof($colors) AND $product->id_color_default) ? $colors : false;

 $product->group = $groups;
 $product_id = $product->id;
 $combina[$i] = $combinations;



   }


 foreach($combina as $key =>  $val){
  foreach($val as $key2 =>  $val2){

   $attributes_num[$key2] = $val2['list'];
   //print_r($attributes_num[$key2]);
   //print_r($val2);
   //echo "<hr>";
  }
 }


  if(count($product->group) >0){
   $listatt = "";
   $attributeTag .=  '<div id="attributes_'.$product->id.'">';
   $attributeTag .= '<table >';
   foreach($groups as $inkey =>  $inval){


	 $attributeTag .= '<tr>';
	 $attributeTag .= '<td >';
	 $attributeTag .= '<label for="group_'.$inkey.'">'.$inval['name'].'</label>';
	 $attributeTag .= '</td>';
	 $attributeTag .= '<td>';
	 $attributeTag .= '<select  name="group_'.$inkey.'"  id="group_'.$inkey.'" onchange="javascript:findCombination('.$product->id.');" >';

	 foreach ($inval['attributes'] as $id_attribute => $id_attribute_val ){
	  if($inval['attributes'][$inval['default']] == $id_attribute_val ){
	   $attributeTag .= '<option value="'.$id_attribute.'" selected="selected" title="'.$id_attribute_val.'" >'.$id_attribute_val.'</option>';
	   $listatt .= ",'".$id_attribute."'";

	  }else{
	   $attributeTag .= '<option  value="'.$id_attribute.'" title="'.$id_attribute_val.'" >'.$id_attribute_val.'</option>';
	  }


	 }

	 $attvalue = 0;
	 $attributeTag .= '</select>';
	 $attributeTag .= '</td>';
	 $attributeTag .= '</tr>';


   }
   $attributeTag .= '<tr>';
   $attributeTag .= '<td>';
   $attributeTag .= '<label>Quantity</label>';
   $attributeTag .= '</td>';
   $attributeTag .= '<td>';
   $attributeTag .= '<input type="text" name="qty" id="quantity_wanted" class="text" value="1" size="2" maxlength="3" />';
   $attributeTag .= '</td>';
   $attributeTag .= '</tr>';
   $attributeTag .= '</table>';
   $attributeTag .= '</div>';
  }else{
   $attributeTag .= '<table >';
   $attributeTag .= '<tr>';
   $attributeTag .= '<td>';
   $attributeTag .= '<label>Quantity</label>';
   $attributeTag .= '</td>';
   $attributeTag .= '<td>';
   $attributeTag .= '<input type="text" name="qty" id="quantity_wanted" class="text" value="1" size="2" maxlength="3" />';
   $attributeTag .= '</td>';
   $attributeTag .= '</tr>';
   $attributeTag .= '</table>';
  }

  $attributehtml[$product->name] = $attributeTag;
  $attributehtml[$product->id] = substr($listatt,1);

  $attributeTag = "";
  $listatt ="";


   }
   $colors = null;
   $groups = null;


  }

  $smarty->assign('combinations',$combinations);
  $smarty->assign('attributehtml', $attributehtml);
  return $this->display(__FILE__, 'productsattribute.tpl');
}

Link to comment
Share on other sites

Tak to zobrazuje u každého zboží volbu+množství tolikrát, kolik řádků má výpis zboží. Mám tím na mysli, že mám zobrazeno 3 zboži vedle sebe na 5 řádcích (15 ks zboží), tak to tam dá 5x ke každému zboží (aspoň jsem se tohoto počtu dopočítal). Navíc pokud vyberu nějakou velikost, do košíku to dá defaultní nastavenou velikost. Čili v tomto stavu nepoužitelné.

Link to comment
Share on other sites

Tak to zobrazuje u každého zboží volbu+množství tolikrát, kolik řádků má výpis zboží. Mám tím na mysli, že mám zobrazeno 3 zboži vedle sebe na 5 řádcích (15 ks zboží), tak to tam dá 5x ke každému zboží (aspoň jsem se tohoto počtu dopočítal). Navíc pokud vyberu nějakou velikost, do košíku to dá defaultní nastavenou velikost. Čili v tomto stavu nepoužitelné.

Mě to tak dělalo myslím také, je třeba upravit stylizaci (CSS).

Link to comment
Share on other sites

Tak to zobrazuje u každého zboží volbu+množství tolikrát, kolik řádků má výpis zboží. Mám tím na mysli, že mám zobrazeno 3 zboži vedle sebe na 5 řádcích (15 ks zboží), tak to tam dá 5x ke každému zboží (aspoň jsem se tohoto počtu dopočítal). Navíc pokud vyberu nějakou velikost, do košíku to dá defaultní nastavenou velikost. Čili v tomto stavu nepoužitelné.

Už jsem vyřešil tvůj, respektive i můj problém. Všechny atributy se vypisovali u každého produktu. Musíš svůj product-list.tpl překopírovat do souboru productsattribute.tpl ve složce s modulem a zobrazit tam také atributy následovně:

 

product-list.tpl:

{$HOOK_PRODUCT_ATTRIBUTES}

 

productsattribute.tpl:

{if isset($products)}
<!-- Products list -->
<ul id="product_list" class="clear">
{foreach from=$products item=product name=products}
 <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if}">
  <div class="center_block">
		    <h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3>
   <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /></a>
  </div>					
  <div class="right_block">
		    {foreach from=$attributehtml  key=name item=attribute}
			    {if $name eq $product.name}
		    {$attribute}
			    {/if}
		    {/foreach}
		    {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}
   {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span>
   {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>{/if}
   {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only!'}</span>{/if}
   {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
   <div class="right_block_left">
 {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if (isset($product.quantity) && $product.quantity > 5)}{l s='Stock remains > 5pcs'}{elseif ($product.quantity <= 5)}{l s='Stock remains 5pcs and lower'}{else}{l s='Out of stock'}{/if}</span>{/if}
 {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if}
   </div>
   {/if}
   <a id="button_details" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a>
  </div>
 </li>
{/foreach}
</ul>
<!-- /Products list -->
{/if}

 

Vypadá to následovně: http://test.jiritomek.eu/vypis2.jpg

 

Ještě je třeba modul přeložit, protože výrazy z product-list jsou nyní v tomto modulu, ale nějak se mi to nedaří uložit, když to přeložím a práva na složku i soubor mám nastavené.

Link to comment
Share on other sites

Tak ono to asi bude specifické pro různé šablony. Ať se snažím sebevíc, ty velikosti mi to nezobrazuje... No co už :-)

A co ti to nezobrazuje? Jak to teda vypadá? Vymazal jsi tu podmínku pro skupinu?

Jinak jsem ručně udělal pomocí MD5 překlad mých výrazů.

cs.php

Vypadá to už lépe: http://test.jiritomek.eu/vypis2.jpg

 

Dej mi přístup do adminu a já se na to podívám.

Link to comment
Share on other sites

Předtím jsem překopíroval svůj soubor product-list.tpl, a nezobrazovalo to, překopčil jsem ten cos poslal ty, a už se to zobrazuje (kupodivu ale ne u všech, u některých produktů to vynechá-musím přijít na to, proč). Nicméně teď musím najít tu část kódu, která ty selekty zobrazuje, abych je dal podle svého product-list.tpl, aby se to zobrazovalo jak má, protože přes ten tvůj se to zobrazuje haluzově bez možnosti přidat do košíku. Každopádně pokrok tu je :-)

Link to comment
Share on other sites

Předtím jsem překopíroval svůj soubor product-list.tpl, a nezobrazovalo to, překopčil jsem ten cos poslal ty, a už se to zobrazuje (kupodivu ale ne u všech, u některých produktů to vynechá-musím přijít na to, proč). Nicméně teď musím najít tu část kódu, která ty selekty zobrazuje, abych je dal podle svého product-list.tpl, aby se to zobrazovalo jak má, protože přes ten tvůj se to zobrazuje haluzově bez možnosti přidat do košíku. Každopádně pokrok tu je :-)

Já tam tohle nechci, mám to pro info, protože chci, aby si člověk vybral na detailu. Jinak se to upravuje v souboru productsattribute.php ve složce modulu. Myslím, že jsem to tu posílal předtím jak to má byýt upravené na select s buttonem pro přidání do košíke i množstvím tak se podívej zpět. Jinak se to zobrazuje pouze u těch produktů, které máš jak v kategorii, kde je samozřejmě chceš, tak v hlavní kategorii (domů).
Link to comment
Share on other sites

Tak je to tahle část kódu:

 

						    {foreach from=$attributehtml  key=name item=attribute}
							    {if $name eq $product.name}
					    {$attribute}
							    {/if}
					    {/foreach}

 

Nicméně stále při výběru jiné velikosti než default to do košíku přidá default. Nějaký nápad?

Link to comment
Share on other sites

Předtím jsem překopíroval svůj soubor product-list.tpl, a nezobrazovalo to, překopčil jsem ten cos poslal ty, a už se to zobrazuje (kupodivu ale ne u všech, u některých produktů to vynechá-musím přijít na to, proč). Nicméně teď musím najít tu část kódu, která ty selekty zobrazuje, abych je dal podle svého product-list.tpl, aby se to zobrazovalo jak má, protože přes ten tvůj se to zobrazuje haluzově bez možnosti přidat do košíku. Každopádně pokrok tu je :-)

Asi jsi také při tom kopírování vynechal příkaz pro vypsání atributů:

		    {foreach from=$attributehtml  key=name item=attribute}
			    {if $name eq $product.name}
		    {$attribute}
			    {/if}
		    {/foreach}

Link to comment
Share on other sites

Asi jsi také při tom kopírování vynechal příkaz pro vypsání atributů:

			{foreach from=$attributehtml  key=name item=attribute}
				{if $name eq $product.name}
			{$attribute}
				{/if}
			{/foreach}

Zkus poladit ten soubor kde je ta funkce selectu.
Link to comment
Share on other sites

To mně taky napadlo, ale to je nad moje síly, bohužel :-( Třeba na o někdo příjde časem, každopádně i tak díky za pomoc ;-)

Jako pro informaci můžeš použít mojí úpravu, a stáhni si můj překlad a přelož si výrazy podle sebe ale v editoru natvrdo, jinak to nejde. A mám také zvláštní podmínky pro zobrazení dostupnosti, tak na to také nezapomeň. :-)
Link to comment
Share on other sites

No jak říkám, vše už funguje,jen do košíku se pošle velikost,která je nastavena jako default. Zkuzím pak zapátrat na příčině, ale tohle bude na základě nějakého javaskriptu, takže nad mé síly. Ale uvažoval jsem nad tím, že bych to předělal tak, jak to máš ty, ikonky s velikostmi, které jsou dostupné a samotný výběr na detailu zboží. Tohle by asi bylo snadnější. Předpokládám, že těch ikonek jsi docílil tak, že jsi velikosti natavil jako barvu č.2 a dal jim obrázek místo barvy, že?

Link to comment
Share on other sites

No jak říkám, vše už funguje,jen do košíku se pošle velikost,která je nastavena jako default. Zkuzím pak zapátrat na příčině, ale tohle bude na základě nějakého javaskriptu, takže nad mé síly. Ale uvažoval jsem nad tím, že bych to předělal tak, jak to máš ty, ikonky s velikostmi, které jsou dostupné a samotný výběr na detailu zboží. Tohle by asi bylo snadnější. Předpokládám, že těch ikonek jsi docílil tak, že jsi velikosti natavil jako barvu č.2 a dal jim obrázek místo barvy, že?

Ne to vůbec, je to seznam (UL), je to v mém původním souboru, který jsem tu prve nahrával (productsattribute.php) a pomocí CSS (product-list.css).

div#attributes_list {
   float: left;
   margin-left: 14px;
   margin-top: 0;
}
div#attributes_list ul {
   margin: 0;
   padding: 0;
}
div#attributes_list ul li, div#attributes_list ul li:hover {
   float: left;
   margin: 0 5px 0 0;
   border: 1px solid #333333;
   width: 25px;
   height: 25px;
   cursor: default;
   background: #ffffff;
   color: #333333;
   text-align: center;
   vertical-align: middle;
   line-height: 25px;
   list-style: none;
   font-size: 11px;
   font-weight: bold;
}

  • Like 1
Link to comment
Share on other sites

Ty jo! Jednoduché jako facka! Tak to moc díky! :-) Takhle mi to bohatě stačí, je to funkční a přehledné :-)

 

Je vidět, že se vyznáš ;-) Já bych to hledal strašně dlouho, možná ty budeš vědět hned kam sáhnout, aby se mi zvýšilo okno s výrobkem a díky těm velikostem to nepřetékalo přes DIV, viď? ;-) Viz screen :-)

post-61276-0-68829200-1330879693_thumb.jpg

Link to comment
Share on other sites

Ty jo! Jednoduché jako facka! Tak to moc díky! :-) Takhle mi to bohatě stačí, je to funkční a přehledné :-)

 

Je vidět, že se vyznáš ;-) Já bych to hledal strašně dlouho, možná ty budeš vědět hned kam sáhnout, aby se mi zvýšilo okno s výrobkem a díky těm velikostem to nepřetékalo přes DIV, viď? ;-) Viz screen :-)

Co ti kam přetéká? Taky bych potřeboval poradit. V objednávce bez reg. mi to píše po vyplnění všech údajů a uložení že jméno a příjmení je vyžadováno. Viz odkaz: http://test.jiritomek.eu/opc.jpg
Link to comment
Share on other sites

Ty jo! Jednoduché jako facka! Tak to moc díky! :-) Takhle mi to bohatě stačí, je to funkční a přehledné :-)

 

Je vidět, že se vyznáš ;-) Já bych to hledal strašně dlouho, možná ty budeš vědět hned kam sáhnout, aby se mi zvýšilo okno s výrobkem a díky těm velikostem to nepřetékalo přes DIV, viď? ;-) Viz screen :-)

A taky uprav vlastnost margin níže:

div#attributes_list ul li, div#attributes_list ul li:hover {
   float: left;
   margin: 0 5px 0 0;
   border: 1px solid #333333;
   width: 25px;
   height: 25px;
   cursor: default;
   background: #ffffff;
   color: #333333;
   text-align: center;
   vertical-align: middle;
   line-height: 25px;
   list-style: none;
   font-size: 11px;
   font-weight: bold;
}

na margin: 0 5px 5px 0;

To je, aby jsi měl atributy pod sebou oddělené taky o 5px, takhle to vypadá hrozně, jak to máš na sobě.

Link to comment
Share on other sites

Ty jo! Jednoduché jako facka! Tak to moc díky! :-) Takhle mi to bohatě stačí, je to funkční a přehledné :-)

 

Je vidět, že se vyznáš ;-) Já bych to hledal strašně dlouho, možná ty budeš vědět hned kam sáhnout, aby se mi zvýšilo okno s výrobkem a díky těm velikostem to nepřetékalo přes DIV, viď? ;-) Viz screen :-)

Jo takhle to myslíš, je to špatně vidět ta šedá linka. Uprav vlastnost height u divu níže v product-list.css

ul#product_list li {
background: #cccccc;
border: 1px solid #999999;
width: 280px;
height: 440px;
   float: left;
   margin-left: 13px;
margin-bottom: 13px
}

Nastav hodnotu vyšší, než máš teď.

Link to comment
Share on other sites

jj, tohle jsem si už poladil...

s tím vyžadováním polí mi dělalo, když jsem upravoval controler poté, co jsem přidával ičo/dič. a nevyřešil jsem to. ale bude to někde v tom AddressController.php podle mého názoru.

Link to comment
Share on other sites

jj, tohle jsem si už poladil...

s tím vyžadováním polí mi dělalo, když jsem upravoval controler poté, co jsem přidával ičo/dič. a nevyřešil jsem to. ale bude to někde v tom AddressController.php podle mého názoru.

To je divný protože v souboru AuthController mám vyžadovaná pole pro reg. pouze jméno a příjmení, mám upravenou registraci pro zvláštní jQuery panel nahoře v liště, takže orig. formulář vůbec nevyužívám. Ale zkusím se v tom ještě pohrabat, je to divný.
Link to comment
Share on other sites

Tak jsem na to přišel. Jsou potřeba další úpravy v souborech:

 

prices-drop.tpl

new-products.tpl

best-sales.tpl

 

ve vzhledu. V každém z nich se nachází cca toto:

 

{if $products}
{include file="$tpl_dir./product-sort.tpl"}
{include file="$tpl_dir./product-list.tpl" products=$products}
{include file="$tpl_dir./pagination.tpl"}
{else}
<p class="warning">{l s='No top sellers.'}</p>
{/if}

 

ten třetí řádek


{include file="$tpl_dir./product-list.tpl" products=$products}

 

je potřeba nahradit tím, co jsme nakopírovali do souboru v modulu

 

productsattribute.tpl

 

Tím se nám opět začně vypisovat seznam zboží dle parametrů. Ovšem nejsou u něj na výběr ty vlastnosti. Vyřešil jsem to tak, že jsem ten modul zavěsil ještě do hooku Head. Normálně to nejde, takže je potřeba upravit soubor

 

productsattribute.php

 

na jeho konci je kód

 

public function hookProductAttributes($params)
{
	return $this->hookHome($params);
}
}
?>

 

Tak mu tam přidáme ještě hook Head, bude to tedy vypadat takto:

 

public function hookProductAttributes($params)
{
	return $this->hookHome($params);
}
public function hookHeader($params)
{
	return $this->hookHome($params);
}
}
?>

 

Nyní už jde modul zavěsit do hooku Head a tak se nám vlastnosti zase začnou zobrazovat :-) Samozřejmě, pokud má někdo ten modul již nainstalovaný, musí jej nejprve odinstalovat a poté zas nainstalovat, aby se PS naučila, že ten modul jde zavěsit do Head.

Link to comment
Share on other sites

Tak jsem na to přišel. Jsou potřeba další úpravy v souborech:

 

prices-drop.tpl

new-products.tpl

best-sales.tpl

 

ve vzhledu. V každém z nich se nachází cca toto:

 

{if $products}
{include file="$tpl_dir./product-sort.tpl"}
{include file="$tpl_dir./product-list.tpl" products=$products}
{include file="$tpl_dir./pagination.tpl"}
{else}
<p class="warning">{l s='No top sellers.'}</p>
{/if}

 

ten třetí řádek


{include file="$tpl_dir./product-list.tpl" products=$products}

 

je potřeba nahradit tím, co jsme nakopírovali do souboru v modulu

 

productsattribute.tpl

 

Tím se nám opět začně vypisovat seznam zboží dle parametrů. Ovšem nejsou u něj na výběr ty vlastnosti. Vyřešil jsem to tak, že jsem ten modul zavěsil ještě do hooku Head. Normálně to nejde, takže je potřeba upravit soubor

 

productsattribute.php

 

na jeho konci je kód

 

public function hookProductAttributes($params)
{
	return $this->hookHome($params);
}
}
?>

 

Tak mu tam přidáme ještě hook Head, bude to tedy vypadat takto:

 

public function hookProductAttributes($params)
{
	return $this->hookHome($params);
}
public function hookHeader($params)
{
	return $this->hookHome($params);
}
}
?>

 

Nyní už jde modul zavěsit do hooku Head a tak se nám vlastnosti zase začnou zobrazovat :-) Samozřejmě, pokud má někdo ten modul již nainstalovaný, musí jej nejprve odinstalovat a poté zas nainstalovat, aby se PS naučila, že ten modul jde zavěsit do Head.

No vidíš taky sis poradil sám, já se tady odpovědi většinou nikdy nedočkám.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...