проблема с ajax в zencart

У меня есть несколько основных категорий и подкатегорий каждой основной категории. У меня есть раскрывающийся список, содержащий основную категорию, когда я выбираю основную категорию, в раскрывающемся списке подкатегорий отображаются подкатегории этой основной категории. Я использую следующий код для этого , но это показывает, что поле подкатегории содержит всю страницу с верхним и нижним колонтитулом...

<select name="main_category" id="main_category" onchange="showSubCategory(this.value)">
        <option>--Select--</option>
</select>


<script type="text/javascript">
        function showSubCategory(str)
        {

            if (str.length==0)
            {
                document.getElementById("txtHint").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            { 
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    alert(xmlhttp.responseText);
                    document.getElementById("subcategory").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","index.php?main_page=getsubcategory&cid="+str,true);
            xmlhttp.send();
        }
    </script>

в tpl_subcategory_default.php содержится

<?php
$cid=$_GET['cid'];
$sql="select cd.categories_name, cd.categories_id
                             from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd
                             where c.parent_id = '" . (int) $_GET['cid'] . "'
                             and c.categories_id = cd.categories_id
                             and c.categories_status= 1";

$r=mysql_query($sql);

while($row=mysql_fetch_array($r))

{
echo "<option value=$row[categories_id]>$row[categories_name]</option>";
}

?>

person Natasha    schedule 10.05.2012    source источник


Ответы (2)


Он показывает всю страницу с верхним и нижним колонтитулом, потому что вы обращаетесь к «странице» через index.php?main_page=foo, но не добавили архитектуру для замены обычных выходных данных системы шаблонов вашим собственным выводом, специфичным для страницы... т.е. : чтобы перейти непосредственно к выводу без предварительного вызова обычных вещей, которые появляются на каждой странице.

На ваш вопрос нельзя точно ответить, не зная также, что вы сделали в файле /includes/modules/pages/subcategory/header_php.php или даже создали его. Скорее всего, код, который вы поместили в tpl_subcategory_default.php, может войти в упомянутый выше файл header_php.php, за которым следует оператор die() в конце, и выполнить то же самое, что вы, кажется, ищете.

Было бы легче полностью ответить на ваш вопрос, если бы вы предоставили больше информации о том, что вы уже сделали.

person Zen Cart    schedule 13.05.2012

Чтобы удалить заголовок, нижний колонтитул и т. д., вы можете переопределить файл tpl_main_page.php. Перейдите в этот каталог /includes/templates/custom template. Согласно вашей информации, вы создали страницу main_page=getsubcategory. поэтому создайте папку с именем getsubcategory в этом каталоге. затем скопируйте tpl_main_page.php из include/templates/custom template/common/ и вставьте его в /includes/templates/ваш пользовательский шаблон/getsubcategory. Затем внесите указанные ниже изменения в файл tpl_main_page.php.

if (in_array($current_page_base,explode(",",'getsubcategory')) ) {

    $flag_disable_left = true;
    $flag_disable_header = true;
    $flag_disable_footer = true;

}
person Manas Sahoo    schedule 24.07.2015