Ответить Новая тема Новый опрос 
Всего: 2 < 1 2
 Сортировка категорий
MrHok
Новичок
Сообщений: 38
Регистрация: 17-02-2011


18-02-2011 22:23
Не работает этот метод.

Мне по наследству достались категории без цифер впереди и в них подкатегории и товары есть, т.е. удалить и пересоздать не вариант.

Я как тут написано прописал перед названием каждой категории 01. 02. и т.д.

Изменил значения в ЧПУ
добавил к каждому 01- 02- и т.п.

А на главной все равно выводится как и раньше !

А если делаю создать новую категорию и там где выбрать Родительскую категорию выпадает список с такой последовательности как я пронумеровал...

Чего ж не хватает для правильной сортировки на Главной странице ???
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


18-02-2011 22:37
Не в ЧПУ а в названии категории (для 1.3). В версии 1.4 сортировка работает также как для продуктов.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
MrHok
Новичок
Сообщений: 38
Регистрация: 17-02-2011


19-02-2011 04:13
Цитата:( ors @ 18-02-2011 17:37 Смотреть сообщение )
Не в ЧПУ а в названии категории (для 1.3). В версии 1.4 сортировка работает также как для продуктов.


Я ж написал, что прописал в названиях категорий тоже.
Не работает. Движок 1.3
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
dneese
Новичок
Сообщений: 1
Регистрация: 17-02-2011


20-02-2011 02:10
есть модуль сортировки категорий вручную простым перетягиванием, но в нём кирилица неотображается, только английкими. с кодировками проблемка.


Сообщение отредактировано dneese 20-02-2011 03:11 ...


Вложения:

Вложения sortcategories.rar( Размер файла: 51.19KB Скачиваний: 160 )
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
MrHok
Новичок
Сообщений: 38
Регистрация: 17-02-2011


20-02-2011 22:01
Хороший модуль. Спасибо.

Я думал что в этом движке все так можно перетаскивать как и в расположении модулей. Было бы очень удобно, но получается что не все )
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
MrHok
Новичок
Сообщений: 38
Регистрация: 17-02-2011


25-02-2011 22:00
В каком файле формируется вывод категорий для блока Категории ???
Подскажите хотя бы это, я дальше сам придумаю что делать ...

Там скорей всего стоит сортировка по номеру ID.
А мне нужно будет изменить на сортировку по Названию категории.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
MrHok
Новичок
Сообщений: 38
Регистрация: 17-02-2011


25-02-2011 22:24
К сожалению не очень хорошо разбираюсь в ПХП тем более в этом движке совсем тяжко.

Нашел код отвечающий за вывод категорий в блоке...
Но где тут выставить сортировку вывода категорий по category_name не могу понять.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
MrHok
Новичок
Сообщений: 38
Регистрация: 17-02-2011


25-02-2011 22:39
сам пишу сам....
сам проблему нашел и рам решил...
может поможет кому то

в файле modules/blockcategories/blockcategories.php

в функции function hookLeftColumn($params)

есть строка
ORDER BY `level_depth` ASC, cl.`name` ASC'
вот в ней я и заменил сортировку с id_catagory на name

теперь все сортирует как положено !
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
dsda


Новичок
Сообщений: 1
Регистрация: 05-03-2011


05-03-2011 00:19
Вот Вам этот модуль рабочий, который отображает кодировку нормально. Но сразу скажу, что он меняет адреса категорий подставляя к ним цифры.

Чтобы решить пролблему, надо добавить в ps_category_lang поле sort и написать отдельный модуль, который будет пересортировывать именно это поле.

Тут косяк в том, что скорее-всего после обновления это все слетит. Тогда надо

Короче надо подождать, может в сл. версиях это появится...
Код:
<?php

/**
* Author: Sariha Chabert
* Web: http://www.platinumrds.com
* Email: sariha@free.fr
* Created: 2009-10-02
*
* File: sortcategories.php
* Provides:
*  Ability to sort categories..
*
*/
class SortCategories extends Module
{
    function __construct()
    {
         $this->name = 'sortcategories';
         $this->tab = 'Tools';
         $this->version = '0.4';

         parent::__construct();

         /* The parent construct is required for translations */
        $this->page = basename(__FILE__, '.php');
        $this->displayName = $this->l('Sort Categories ');
        $this->description = $this->l('Allows you to sort the categories manually. ');
        $this->confirmUninstall = $this->l('remove this module?');
    }
    
    function install()
    {
         if (!parent::install()){
            return false;
         }else{
            return true;
        }
    }
    
    public function getContent()
    {
        global $cookie;
        
        $output = '<h2>'.$this->displayName.'</h2>';
                
        if (Tools::isSubmit('submitNewOrder'))
        {

                $new_order = $_POST['new_order'];
                
                
                foreach($new_order as $new_position){
                    //print_r($id);
                    $id_cat = $new_position['id_category'];
                    $position = $new_position['position'];
                    $nom = addslashes(html_entity_decode($new_position['nom']));
                    
                    $nouveau_nom = $position.'.'.$nom;
                    
                    
                    $table = _DB_PREFIX_.'category_lang';
                    $type = 'UPDATE';
                    $values['name'] = $nouveau_nom;
                    $where = ' id_category = '.$id_cat;
                    $where .= ' AND id_lang = '.$cookie->id_lang;
                    
                    if(Db::getInstance()->autoExecute($table, $values, $type, $where)){
                        $result = $this->l('Categories have been sorted successfully !');
                    }else{
                        $errors[] .= $this->l('An error occured while inserting the new order for : ').$nouveau_nom;
                    }
            }
            
            if($result){
                echo '<div class="conf confirm">'.$result.'</div>';
            }
            
            if($errors){
                foreach ($errors AS $error){
                        echo '<div class="alert error">'. $error .'</div>';
                    }
            }
            
        }
        return $output.$this->displayForm();
    }
    
    function ischildren($id_parent)
    {
        global $cookie;
        
        $categories = Category::getChildren($id_parent,intval($cookie->id_lang),true);
        $nb_children = count($categories);
        
        if($nb_children>1){
            return $nb_children;
        }else{
            return false;
        }
    }
    
    function getCategories($params)
    {
        global $smarty, $cookie, $currentIndex;
        
        $base_link = $currentIndex.'&configure=sortcategories&token='.$_GET['token'];
        $modules_dir = _MODULE_DIR_;

        $parent = $_GET['id_parent'];
        if(!$parent){ $parent = 1; }
        
        if (!$result = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'category` ,`'._DB_PREFIX_.'category_lang`
        WHERE `'._DB_PREFIX_.'category`.`id_category` = `'._DB_PREFIX_.'category_lang`.`id_category`
        AND `'._DB_PREFIX_.'category`.`active` = 1
        AND `'._DB_PREFIX_.'category_lang`.`id_lang` = '.$cookie->id_lang.'
        AND `'._DB_PREFIX_.'category`.`id_parent` = '.$parent.'
        ORDER BY `'._DB_PREFIX_.'category_lang`.`name`
        ') )
        return;

//print_r($result);
$i=0;
        foreach ($result as $row)
        {    
            $nom_tmp = explode('.', $result[$i]['name'], 2);
            if($nom_tmp[1] && is_numeric($nom_tmp[0])){
                $elements[$i]['position'] = $nom_tmp[0];
                $elements[$i]['nom'] = htmlentities($nom_tmp[1], ENT_QUOTES | ENT_IGNORE, "UTF-8");
            }else{
                $elements[$i]['position'] = '000';
                $elements[$i]['nom'] = htmlentities($result[$i]['name'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
            }
            
            $elements[$i]['id_category'] = $result[$i]['id_category'];
            $elements[$i]['level_depth'] = $result[$i]['level_depth'];
            $elements[$i]['id_parent'] = $result[$i]['id_parent'];
        
            if ($this->ischildren($result[$i]['id_category'])){
                 $elements[$i]['link'] = $base_link.'&id_parent='.$result[$i]['id_category'];
            }else{
                 $elements[$i]['link'] = '';
            }
            
            $i++;
        }

        //print_r($elements);
        
        $smarty->assign('elements', $elements);
        $smarty->assign('base_link', $base_link);
        $smarty->assign('modules_dir', $modules_dir);
        return $this->display(__FILE__, 'sortcategories.tpl');
    }
    
    
    public function displayForm()
    {
        global $currentIndex;
        
        $base_link = $currentIndex.'&configure=sortcategories&token='.$_GET['token'];
        
        $html_output = '';
        
        $style = '<style type="text/css" media="screen">
            .sortables {
                width: 350px;
                border: 1px solid silver;
                padding: 3px 3px 3px 15px;
                margin: 2px;
                cursor:move;
            }
        </style>';
        
        $html_output .= '
        '.$style.'
        <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
            <fieldset>
                <legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Sort Manually').'</legend>
                <div align="center"><a href="'.$base_link.'&id_parent=1" class="small">'.$this->l('Back to Home').'</a></div>
                <div class="margin-form">
                    '.$this->getCategories($params).'
                </div>
                <center><input type="submit" name="submitNewOrder" value="'.$this->l('Save').'" class="button" /></center>
            </fieldset>
        </form>';
        
        $html_output .= '
            <script type="text/javascript" charset="utf-8">
            $(document).ready(function(){
                $("#sort").sortable({
                      update : function () {
                            sort_my_cat();
                      }
                });
            
            sort_my_cat();
            
                function sort_my_cat() {
                $(".sortables").each(function (i) {
                    i = zeroPad(i, 3);
                    var id_tmp = this.id;
                    var id = id_tmp.split("_");
                    
                    $("#position_"+id[1]).attr("value",i);
                });
                  }
            
            
                function zeroPad(num,count)
                {
                var numZeropad = num + \'\';
                while(numZeropad.length < count) {
                numZeropad = "0" + numZeropad;
                }
                return numZeropad;
                }
            
            });
            </script>
        ';
        
        return $html_output;
    }
    
}
?>




Сообщение отредактировано dsda 04-03-2011 20:20 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 2 < 1 2