PDA

Zobacz pełną wersję : VM 1.1.9 - dodanie powiązanych produktów do zwięzłego opisu



vereb
14-03-2013, 21:01
Witajcie - czy ktoś z Was wie może lub robił coś takiego jak umieszczenie linków do powiązanych produktów w miejscu na zwięzły opis?
Idealnie by było przy wyświetlaniu listy produktów (w widoku kategorii) zamiast zwięzłego opisu umieścić powiązane produkty w postaci linków - da się to zrobić?

Proszę o pomoc bo już kolejną noc przy tym siedzę a bardzo by to ułatwiło zarządzanie stroną.

VM 1.1.9
J! 1.5.26

Z góry dziękuję :)

vereb
18-03-2013, 20:31
Nikt nie ma pomysłu jak to zrobić? Można oczywiście na piechotę - w zwięzły opis wkleić kod z linkiem - ale ani to czytelne, ani wygodne.

OT: czasem mam wrażenie że tylko ja tutaj zadaje pytania o rzeczy niemożliwe... Kolejny post chyba zostanie bez odpowiedzi... Wnioski są dwa: 1. pytam o rzeczy trudne; 2. podchodzę do rzeczy nie od tej strony -może o czymś nie wiem i jest łatwiejszy sposób?

zwiastun
18-03-2013, 21:00
W tym przypadku pytasz o poważną ingerencję w kod VM albo jak napisać dodatek, który wykona dla Cię oczekiwane działanie. A to oznacza, ze albo ktoś by już coś takiego musiał robić i wtedy mógłby podzielić się doświadczeniem, albo że ktoś by musiał zaprojektować takie rozwiązanie. Nie ma odpowiedzi, znaczy się, nikt czegoś podobnego nie robił (albo nie chce się podzielić). I nic więcej.

vereb
18-03-2013, 21:20
Dziękuję Mistrzu za słowa prawdy. Jeszcze nie posiadam na tyle wiedzy żeby samemu napisać takie rozwiązanie, ale nie poddaje się. Na razie zostaje klepanie na piechotę.

Jdwind
19-03-2013, 09:29
Poszukaj czegoś w rodzaju related products dla VM1. Może w Wujku G (https://www.google.pl/search?q=virtuemart+1++related+products&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pl:official&client=firefox-a) coś znajdziesz.

Jac
19-03-2013, 10:55
Moim zdaniem najszybciej rozwiązanie możesz znaleźć na forum.virtuemart.net. Tam roi się od przeróbek i modyfikacji kodu. Ale szukania właściwego rozwiązania będziesz miał co niemiara.

vereb
18-04-2013, 12:13
Dzięki za odpowiedzi. Przeszukałem wspomniane lokalizacje jednak nie znalazłem więc... zrobiłem sam :).

Oto kod zmodyfikowanego pliku z szablonu vm, u mnie pod nazwą browse_budynki.php

<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

mm_showMyFileName(__FILE__);

//pobieram z adresu url nazwe riwiery aby wkleic ja do nowego adresu konkretnego apartamentu
$url_param = $sess->url( $mm_action_url);
$riwiera = explode("/", $url_param);

$dbrp = new ps_DB;
$dbrp2 = new ps_DB;


// Get the Related Products

$dbrp->query("SELECT related_products FROM #__{vm}_product_relations WHERE product_id='$product_id'");
if($dbrp->next_record()) {
$rel_prod = explode("|", $dbrp->f("related_products"));
}

// pobieram id categorii pierwszego produktu powiązanego (w sumie kategoria będzie taka sama dla wszystkich produktów wyświetlanych na jednej stronie więc wystarczy zrobić to raz
$dbrp2->query("SELECT category_id FROM #__{vm}_product_category_xref WHERE product_id='$rel_prod[0]'");
$cat_id1 = $dbrp2->f("category_id");

//pobieram nazwę pierwszego produktu powiązanego

$dbrp->query("SELECT product_name FROM #__{vm}_product WHERE product_id='$rel_prod[0]'");
/*if($dbrp->next_record()) {*/
$prod_name1 = $dbrp->f("product_name");


//tworzę URL pierwszego powiązanego produktu z wcześniej wyciągniętych danych

$url_wlasny1=$riwiera[6].'?'."page=shop.product_details&amp;flypage=flypage_new_apar tament.tpl&amp;product_id=" . $rel_prod[0] . "&amp;category_id=" . $cat_id1;


//tak samo postępuję z kolejnymi produktami, czyli pobieram nazwę kolejnego produktu powiązanego i tworzę jego url

$dbrp->query("SELECT product_name FROM #__{vm}_product WHERE product_id='$rel_prod[1]'");
$prod_name2 = $dbrp->f("product_name");
$url_wlasny2=$riwiera[6].'?'."page=shop.product_details&amp;flypage=flypage_new_apar tament.tpl&amp;product_id=" . $rel_prod[1] . "&amp;category_id=" . $cat_id1;

$dbrp->query("SELECT product_name FROM #__{vm}_product WHERE product_id='$rel_prod[2]'");
$prod_name3 = $dbrp->f("product_name");
$url_wlasny3=$riwiera[6].'?'."page=shop.product_details&amp;flypage=flypage_new_apar tament.tpl&amp;product_id=" . $rel_prod[2] . "&amp;category_id=" . $cat_id1;

$dbrp->query("SELECT product_name FROM #__{vm}_product WHERE product_id='$rel_prod[3]'");
$prod_name4 = $dbrp->f("product_name");
$url_wlasny4=$riwiera[6].'?'."page=shop.product_details&amp;flypage=flypage_new_apar tament.tpl&amp;product_id=" . $rel_prod[3] . "&amp;category_id=" . $cat_id1;

$dbrp->query("SELECT product_name FROM #__{vm}_product WHERE product_id='$rel_prod[4]'");
$prod_name5 = $dbrp->f("product_name");
$url_wlasny5=$riwiera[6].'?'."page=shop.product_details&amp;flypage=flypage_new_apar tament.tpl&amp;product_id=" . $rel_prod[4] . "&amp;category_id=" . $cat_id1;

$dbrp->query("SELECT product_name FROM #__{vm}_product WHERE product_id='$rel_prod[5]'");
$prod_name6 = $dbrp->f("product_name");
$url_wlasny6=$riwiera[6].'?'."page=shop.product_details&amp;flypage=flypage_new_apar tament.tpl&amp;product_id=" . $rel_prod[5] . "&amp;category_id=" . $cat_id1;

?>



<div id="oferta-pole">
<div id="naglowek"><div id="sciezka">Chorwacja > <?php echo $category_name; ?> > <?php echo $product_name; ?></div><div id="product-id">Nr: <?php echo $product_id ?></div></div>
<div id="o-budynku">
<div id="zdjecie-budynku"><a href="<?php echo $product_flypage ?>" title="<?php echo $product_details ?>"><?php echo ps_product::image_tag( urldecode($product_thumb_image), 'class="browseProductImage" border="0" title="'.$product_name.'" alt="'.$product_name .'"' ) ?>

</a></div>
<div id="oferta-info">
<div id="adres">
<a href="<?php echo $product_flypage ?>" title="<?php echo $product_details ?>">

<?php echo $product_name ?></a> </div>
<div id="informacje-dodatkowe">
<p class="dod_info">Odległość do morza: <?php echo $product_info_1 ?></p><p class="dod_info">Odległość do centrum: <?php echo $product_info_2 ?></p><p class="dod_info">Widok na morze: <?php echo $product_info_3 ?></p>

</div>
</div>
<div id="apart">
<div id="lewe_apart">

<?php

//wstawiam podlinkowane nazwy powiązanych produktów - idea jest taka że mają być 2 kolumny, w każdej po 3 powiązane produkty. Jeśli będzie ich więcej wyświetlą sie w szczegółach produktu głównego. Przed wstawieniem produktu powiązanego sprawdzam czy taki istnieje

if ($prod_name1) {
$link1 = '<a href="oferta/'.$url_wlasny1.'" title="'.$product_details.'">'.$prod_name1.'</a><br />';
echo $link1;
};
if ($prod_name2) {$link2 = '<a href="oferta/'.$url_wlasny2.'" title="'.$product_details.'">'.$prod_name2.'</a><br />';
echo $link2;};
if ($prod_name3) {$link3 = '<a href="oferta/'.$url_wlasny3.'" title="'.$product_details.'">'.$prod_name3.'</a><br />';
echo $link3;};

?>
</div>
<div id="prawe_apart">

<?php
if ($prod_name4) {
$link4 = '<a href="oferta/'.$url_wlasny4.'" title="'.$product_details.'">'.$prod_name4.'</a><br />';
echo $link4;
};
if ($prod_name5) {$link5 = '<a href="oferta/'.$url_wlasny5.'" title="'.$product_details.'">'.$prod_name5.'</a><br />';
echo $link5;};
if ($prod_name6) {$link6 = '<a href="oferta/'.$url_wlasny6.'" title="'.$product_details.'">'.$prod_name6.'</a><br />';
echo $link6;};
?>
</div>


<?php //echo $product_s_desc;
//echo $rel_prod[1]; ?>
</div>
</div>
</div>



Oto rezultat działania:
6576
Wynik działania powyzszego skryptu to jeden wiersz zawierający zdjęcie, informacje, powiązane produkty. Pozycje z prawej strony (dwie kolumny po 3 apartamenty) to własnie powiązane produkty. Mam prośbe - czy ktoś z mistrzów PHP i Mysql mógłby rzucić okiem i stwierdzić, czy wszystko w skrypcie się trzyma kupy? Czy np nie powinienem zamykać połączenia z bazą danych (choć tylko pobieram dane więc chyba nie)? Czy nie ma błedów, które mogą wyniknąć z mojej niewiedzy i braku doswiadczenia?