Polskie wsparcie PrestaShop
PrestaShop => Moduły => Wątek zaczęty przez: sh0tek w Listopad 12, 2009, 12:33:43 pm
-
Witam.
Czy można tak zrobić aby dla różnych produktów były różne dodatkowe zakładki?
kurtki miały zakładkę rozmiar na której był by opis jak wybierać rozmiar kurtek i podobnie dla rekawiczek tylko z innym opisem jak dobrac rozmair itd ;p
W sumie extratabs otwiera plik html, nie wiem czy można to zmienić na php i jakoś pobierać nazwę produktu :D lub adres strony i wtedy na podstawie tych danych wyswietlalo by odpowiednie informacje ;d
Mam nadzieje że da się to zrobić w jakiś prosty sposbó :D
-
zalezy co potrafisz jesli chodzi o php
mozesz do tego uzyc zarowno zewnetrznych plikow ktore beda includowane w zaleznosci od pewnych warunkow albo np odpowiednio psreparowanego opisu kategorii o ile te informacje beda przypisane do kategorii
-
no cos tam o php wiem ;))
w sumie pomysl z zewnetrznymi plikami ktore beda includowane wydaje sie przyjazny i prosty :)) zaraz pokombinuje
a odpowiednio spreparowany opis kategori ? co przez to rozumiesz :D jak mialo by to działać ?
Ja w sumie chce to mieć jako osobna zakładka, także mogę swobodnie zmienić extras na 'jak wybrac rozmiar' i tam opcja z includowaniem
-
jak ja to widze - np meta z kategorii w bazie danych o ile kategoria byla by tozsama z tym jak beda przydzielane informacje dodatkowe
najprostsze rozwiazanie, które ogarniesz w smarty to include w zaleznosci od ....
-
hm już pobrałem adres z urla i wyciągłem z niego numer id
teraz tylko sprawdzanie w której grupie jest ten id, zrobie to chyba najgłubszym sposobem czyli walne te numery do pliku kurtki.txt i 'if' sprawdzi czy dany numer jest w pliku kurtki.txt czy spodnie.txt wstawiając odpowiedni opis :))
może i głupie ale działa :D
-
Czy ja dobrze czytam ze chcesz zrobic array w pliku text ze wszystkimi ID i tam przypisac do ID co ma byc includowane ?
To nie latwiej podbrac kategorie (rozumiem ze kurtki i spodnie to rozne kategorie) z bazy i ciagnac w zaleznosci od kategorii ? W smartach to zrobisz bez dotykania phpa ...
-
Moze inaczej ...
Ja czesto uzywam "flag". Uzyj jednego z pol w karcie produktu (np lokalizacja) wpisujac tam K dla kurtek czy S dla spodni.
Potem spokojnie w smarty wyciągniesz ta wartosc i w zaleznosci od wartosci mozesz inkludowac szablony.
-
hm no okej :) twoje rozwiązanie brzmi mądrze i pomysłowo :) jakby coś odezwe sie jak mi idzie bo coś czuje że nie będzie lekko :))
-
w sumie masz racje ze kurtki i spodnie to rozne kategorie :D ale jak je pobrać ;D? i w sumie musze to wstawic w extratabs.tpl ... zeby wyswietlalo się to własnie tam :))
{$category->name}
gdzy wchodzę przez item z modulu karuzeli pisze mi główna
Gdy wchodzę do kategori męzczyzna mam i spodnie i kurtki i tu mam znów problem :)) bo gdy jestem w mezczyzna i wybieram jakis przedmiot to potem pisze category-name mezczyzna, gdy wejde bezposrednio w dzial spodnie czy cos jest ok... ale z glownego menu i tak nie rozpoznaje :))
mam rzeczy w roznych kategoriach dlatego pojawiają się problemy, kurtki są w Męzczyzna i w Meżczyzna>Lato , Męzczyzna>Kurtki
;) chyba pokombinuje z moim sposobem na plikach
-
;) mozesz uzyc sciezki "breadcrumb", ale to rozwiazanie bedzie skuteczne tylko jesli produkt masz w 1 kategorii.
Lepiej uzyj pola z flagą - spokojnie je wywolasz potem w karcie produktu ;)
-
hm w sumie ... a mozesz mi rozjaśnić jak wywołać te pole lokalizacja ? :) bo błądzę
-
plik product.php i templates/../product.tpl
ify w szablonie sa dosc jasne
-
no cos czuje ze wymysle zaraz inne rozwiązanie, myslałem że mogę pobrać tą lokalizację jak zwykłą zmienną, coś w stylu {$category->name}
przeglądałem nawet część pliku z panelu admina w którym się dodaje ten atrybut .$this->getFieldValue($obj, 'location'). to pobiera go z formularza
utknołem bo nie wiem jak go pobrać, czy on standardowo jest pod jakąś zmienna ? jeśli tak to jaką ;))
-
Lokalizacja jest pod zmienna location, odwolujesz sie do niej tak samo jak do innych. Zajrzyj do bazy i pilkow jakie podalem wyzej.
-
no heh do tego doszedłem, ale nie ma jej ani pod $product->location ani pod niczym innym, szedlem tropem z plików, myślałem że może to $obj a nie $product
w pliku product.tpl nie ma ani razu 'location' w product.php tez nie ma ani jednego... wiec nie wiem :))
sory ze ci tak głowę zawracam ale dopiero poznaje prestashop
-
ba, musisz w product.php pobrac wartosc zmiennej i przypisac ja do szablonu
jak nie wiesz jak to zrobic - uzyj czegos co juz jest przypisane
-
w product.php mogę się sugerować np weight ?
w sumie weight dotyczy tylko
$combinations[$row['id_product_attribute']]['location'] = floatval($row['location']);
tylko ze w product.tpl juz nie ma ani jednego weight ;d **** **** **** ****
przerasta mnie to wszystko ;))))
albo ecotax... myslalem tez o tym
$productPriceWithoutEcoTax = floatval($productPriceWithTax - $product->ecotax);
to już bardziej przypomina to czego szukam chyba ale nie rozumiem w jaki sposob miał bym to pobrac ?
$tax_datas = Db::getInstance()->getRow('
SELECT p.`id_tax`, t.`rate`
FROM `'._DB_PREFIX_.'product` p
LEFT JOIN `'._DB_PREFIX_.'tax` AS t ON t.`id_tax` = p.`id_tax`
WHERE p.`id_product` = '.intval($product->id));
$tax = floatval(Tax::getApplicableTax(intval($tax_datas['id_tax']), floatval($tax_datas['rate'])));
Miał bym połączyć się z DB i pobrać z location pewnie ? czy dalej błądze
-
tak na szybko- nie mam czasu na testy
lokalizacja produktu powinna byc dostepna przez $product->location,
przypisanie wartosci do zmiennej moze byc gdzies w okolicach
$productPriceWithoutEcoTax = floatval($productPriceWithTax - $product->ecotax);
czyli $lokalizacja = $product->location;
zrob echo czy pobiera i jak pobiera to przypisanie do smarty
$smarty->assign('lokalizacja', $lokalizacja);
albo krocej
$smarty->assign('lokalizacja', $product->location);
i uzyj {lokalizacja}
albo w samych smartach
{$product->location}
daj znac czy to chodzi bo w sumie to raczej przemyslenia jak gotowy kod ;)
-
jak dla mnie to raczej gotowy kod, w product.php zwraca mi pieknie lokalizacje
teraz musze to w tpl wcisnąć ;)
dzięki wielkie za pomoc masz u mnie piwo jak będziesz w okolicach Katowic :D
-
hm pytanie :D bo w produt.tpl gdy wstawiam {$product->location} jest ok, pokazuje mi co chce... ale ja bym chciał mieć to samo w tabContents.tpl
Zawartośc tego pliku
<link rel="stylesheet" href="{$base_dir}modules/extratabs/extratabs.css" />
<script language="javascript" type="text/javascript" src="{$base_dir}modules/extratabs/js/TabSwitcher.js"></script>
<div id="msTabHolder">
<div id="msTabHolder_tabs"></div>
<div id="msTabHolder_contents"></div>{$product->location}
</div>
<script language="javascript">
TabSwitcher.init("{$ms_tabs}", "{$base_dir}modules/extratabs/");
</script>
i niestety tutaj cisza, nic się nie pokazuje... nie powiniene na początku pliku czegoś sprecyzować ? okreslic ? zeby zaczelo dzialac :D ?
-
nie znam tego modulu, ale analogiczne zmiany w php powinny pomoc
poglowkuj nieco
albo nie uzywaj modulu tylko includuj od razu w product.tpl - to powinienes ogarnac jakims ifem
-
extratabs.php
jak tu wpakuje gdziekolwiek magiczny kod $lokalizacja = $product->location;
to wszystko się wysypuje...
Bo ja w sumie dąze do tego żeby na zakładne extratabs wyświetlała mi się informacja o produkcie, i wlasnie w tym extratabs muszę ostatecznie mieć tą 'lokalizacje'
Potrafisz mi powiedzieć czemu to nie gra gdy wstawiam ten kod ? czego mu tu brakuje... :D
Pomysle moze rozwiąze to jakos inaczej jeszcze, wlasnie wpadlem na pomysl...
<?php
class extraTabs extends Module
{
function __construct()
{
$this->name = 'extratabs';
$this->tab = 'Products';
$this->version = 1.0;
parent::__construct(); // The parent construct is required for translations
$this->page = basename(__FILE__, '.php');
$this->displayName = $this->l('Extra Tabs');
$this->description = $this->l('Adds tabs on product page.
(www.marghoobsuleman.com | www.giftlelo.com)');
}
function install()
{
if (parent::install() == false
OR $this->registerHook('productTab') == false
OR $this->registerHook('productTabContent') == false)
return (false);
return (true);
}
public function getContent()
{
$output = '<h2>'.$this->displayName.'</h2>';
if (Tools::isSubmit('submitextraTabs'))
{
$tabpages = Tools::getValue('tabpages');
if ($tabpages != 0 AND $tabpages != 1)
$output .= '<div class="alert error">'.$this->l('tabpages : Invalid choice.').'</div>';
else
{
Configuration::updateValue('PS_TAB_PAGES', $tabpages);
}
$output .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="'.$this->l('Confirmation').'" />'.$this->l('Settings updated').'</div>';
}
return $output.$this->displayForm();
}
public function displayForm()
{
return '
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<fieldset>
<legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
<label>'.$this->l('Enter titles and pages').'</label>
<div class="margin-form">
<input size="100" type="text" name="tabpages" value="'.(Tools::getValue('tabpages', Configuration::get('PS_TAB_PAGES'))).'" />
<p class="clear">'.$this->l('Enter title, file name in above text field. use semicolon as a separator if you are using more than one file.
e.g. Sizing Chart,content1.html;Make a request,content2.html').'</p>
</div>
<center><input type="submit" name="submitextraTabs" value="'.$this->l('Save').'" class="button" /></center>
</fieldset>
</form>';
}
/**
* Returns module content
*
* @param array $params Parameters
* @return string Content
*/
function hookProductTab($params)
{
global $smarty;
//$smarty->assign('ms_tabs', intval(Configuration::get('PS_TAB_PAGES')));
return $this->display(__FILE__, 'tab.tpl');
}
public function hookProductTabContent($params)
{
global $smarty;
$smarty->assign('ms_tabs', Configuration::get('PS_TAB_PAGES'));
return ($this->display(__FILE__, '/tabContents.tpl'));
}
}
?>