PDA

Zobacz pełną wersję : Virtuemart błędnie wyświetla część kategorii a część poprawnie



bapraster
18-11-2011, 01:27
Pilnie proszę o pomoc.
Zupełnie nie wiem jak to możliwe i co się dzieje ale virtuemart wyświetla błędnie kilka kategorii a kilka poprawnie.

Oto link do strony z kategorią błędnie wyświetlaną:
http://test.aoc.ie/index.php?page=shop.browse&category_id=6&option=com_virtuemart&Itemid=54

A to link do strony z przykładową kategorią która wyświetla się dobrze:
http://test.aoc.ie/index.php?page=shop.browse&category_id=16&option=com_virtuemart&Itemid=56

W szablonie stworzone są miejsca na moduły o nazwach klas mainuser3 oraz mainuser4, normalnie wyświetlane są one pod div-em "content" w którym jest div vmMainPage i służą do wyświetlania modułów jak latest products. Na stronach nazwijmy to uszkodzonych te div-y wchodzą do środka diva vmMainPage przez co wszystko się źle wyświetla. Nie mam pojęcia czemu się tak dzieje. Jest to dla mnie nie logiczne, skoro są błędy w kodzie to czemu część kategorii wyświetla się poprawnie a część nie???

Serdecznie proszę o pomoc! Jestem zdesperowany nie wiem gdzie mam szukać rozwiązania.

---------- Post dodany o 23:57 ---------- Poprzedni post był o 23:07 ----------

chyba wiem gdzie jest błąd. Wydaje mi się, że znajduje on się w pliku szablonu sklepu a dokładnie w templates/browse/includes/btowse_orderbyform.tpl.php , ostatnio troszkę go edytowałem aby poprawić wygląd strony i chyba coś delikatnie naknociłem. Obecnie kod w nim zawarty ma taką postać:

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

<!-- ORDER BY .... FORM -->
<form action="<?php echo $mm_action_url."index.php" ?>" method="get" name="order" class="orderbyform">
<div class="productsFilter">
<div class="sortBy">
<?php
if( !empty( $VM_BROWSE_ORDERBY_FIELDS )) {
echo $this->fetch( 'browse/includes/browse_orderbyfields.tpl.php');

// This is the toggle button for Descending / Ascending Order
// It is wrapped into a JS function with a noscript area to keep it accessible
echo mm_writeWithJS('&nbsp;<input type="hidden" name="DescOrderBy" value="'.$asc_desc[0].'" /><a href="javascript: document.order.DescOrderBy.value=\''.$asc_desc[1].'\'; document.order.submit()"><img src="'. $mosConfig_live_site."/images/M_images/$icon" .'" border="0" alt="'. $VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_'.$asc_desc[0].'ENDING_ORDER') .'" title="'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_'.$asc_desc[0].'ENDING_ORDER') .'" width="12" height="12" /></a>',
'<select class="inputbox" name="DescOrderBy">
<option '.$selected[0].' value="DESC">'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_DESCENDING_ORDER').'</option>
<option '.$selected[1].' value="ASC">'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_ASCENDING_ORDER').'</option>
</select>
<input class="button" type="submit" value="'.$VM_LANG->_('PHPSHOP_SUBMIT').'" />');
}
?>
</div>
<input type="hidden" name="Itemid" value="<?php echo $Itemid ?>" />
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="shop.browse" />
<input type="hidden" name="category_id" value="<?php echo $category_id ?>" />
<input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id ?>" />
<input type="hidden" name="keyword" value="<?php echo $keyword ?>" />
<input type="hidden" name="keyword1" value="<?php echo $keyword1 ?>" />
<input type="hidden" name="keyword2" value="<?php echo $keyword2 ?>" />

<div class="displayHowMany">
<?php
if( !empty( $product_type_id )) {
echo '<input type="hidden" name="product_type_id" value="'.$product_type_id.'" />';
echo $ps_product_type->get_parameter_form($product_type_id);
}

if( $show_top_navigation ) {
?>
<?php echo $VM_LANG->_('PN_DISPLAY_NR') ?><?php $pagenav->writeLimitBox(); ?>
<noscript><input type="submit" value="<?php echo $VM_LANG->_('PHPSHOP_SUBMIT') ?>" /></noscript>
</div>
</div>
<!-- PAGE NAVIGATION AT THE TOP -->

<div class="pageNavatTop">
<div class="pagesLinks">
<?php $pagenav->writePagesLinks( $search_string );?>
</div>
<div class="pagesCounter">
<?php $pagenav->writePagesCounter();?>
</div>
</div>

<?php

}
?>
</form>

Problem polega na tym, że jeśli w kategorii jest mniej produktów niż domyślna wartość w oknie wyboru ilości wyświetlanych produktów na stronie to strona wyświetla się źle, natomiast gdy ta liczba jest mniejsza niż ilość produktów w kategorii wyświetla się dobrze.
Z php-a jestem zielony i mam dopiero plany zacząć się uczyć w wolnym czasie. Proszę o pomoc, jak edytować kod aby wszystko wyświetlało się poprawnie.
Opcja wyboru ilości produktów wyświetlanych nie musi znikać w momencie gdy kategoria ma mniej produktów niż minimalna liczba wyswietlanych produktów na stronie.

---------- Post dodany 18-11-2011 o 00:27 ---------- Poprzedni post był 17-11-2011 o 23:57 ----------

Po kilku godzinach intensywnego grzania mózgu jakoś metodą prób i błędów udało mi się to naprawić i teraz działa dobrze. Wątpię by ktoś kiedyś miał podobny problem bo wynikł on ze specyfiki kodu ale by temat nie pozostał bez rozwiązania przedstawiam kod który już działa.
Oto on:

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

<!-- ORDER BY .... FORM -->
<form action="<?php echo $mm_action_url."index.php" ?>" method="get" name="order" class="orderbyform">
<div class="productsFilter">
<div class="sortBy">
<?php
if( !empty( $VM_BROWSE_ORDERBY_FIELDS )) {
echo $this->fetch( 'browse/includes/browse_orderbyfields.tpl.php');

// This is the toggle button for Descending / Ascending Order
// It is wrapped into a JS function with a noscript area to keep it accessible
echo mm_writeWithJS('&nbsp;<input type="hidden" name="DescOrderBy" value="'.$asc_desc[0].'" /><a href="javascript: document.order.DescOrderBy.value=\''.$asc_desc[1].'\'; document.order.submit()"><img src="'. $mosConfig_live_site."/images/M_images/$icon" .'" border="0" alt="'. $VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_'.$asc_desc[0].'ENDING_ORDER') .'" title="'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_'.$asc_desc[0].'ENDING_ORDER') .'" width="12" height="12" /></a>',
'<select class="inputbox" name="DescOrderBy">
<option '.$selected[0].' value="DESC">'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_DESCENDING_ORDER').'</option>
<option '.$selected[1].' value="ASC">'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_ASCENDING_ORDER').'</option>
</select>
<input class="button" type="submit" value="'.$VM_LANG->_('PHPSHOP_SUBMIT').'" />');
}
?>
</div>
<input type="hidden" name="Itemid" value="<?php echo $Itemid ?>" />
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="shop.browse" />
<input type="hidden" name="category_id" value="<?php echo $category_id ?>" />
<input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id ?>" />
<input type="hidden" name="keyword" value="<?php echo $keyword ?>" />
<input type="hidden" name="keyword1" value="<?php echo $keyword1 ?>" />
<input type="hidden" name="keyword2" value="<?php echo $keyword2 ?>" />

<div class="displayHowMany">

<?php echo $VM_LANG->_('PN_DISPLAY_NR') ?><?php $pagenav->writeLimitBox(); ?>
<noscript><input type="submit" value="<?php echo $VM_LANG->_('PHPSHOP_SUBMIT') ?>" /></noscript>
</div>
</div>
<!-- PAGE NAVIGATION AT THE TOP -->

<div class="pageNavatTop">
<div class="pagesLinks">
<?php $pagenav->writePagesLinks( $search_string );?>
</div>
<div class="pagesCounter">
<?php $pagenav->writePagesCounter();?>
</div>
</div>


</form>

Po raz kolejny przepraszam za zaśmiecanie forum i proszę Admina o zamknięcie tematu! :)