Сортировка меню по алфавиту JS

D
На сайте с 28.06.2008
Offline
997
388

Есть сайт на Джумле, где меню выводится немного не стандартно.

Сами пункты меню стандартные. Мне нужно их отсортировать по алфавиту.

Единственный путь - это сортировать вручную в админке джумлы перетаскиванием.

У меня 100 пунктов, это больше часа нудной работы. Пробовал отсортировать в админке Джумлы встроенными средствами и нажать "Перестроить" - но оно зараза не сохраняется. Почем не понятно.

Может быть можно добавить сортировку в JS который выводит эти пункты?

Вот код отвечающий за показ меню

var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
jQuery.ajax({
type: 'GET',
url: '/index.php?option=com_menus&view=item&format=raw&cached=1',
success: function (data) {
jQuery('#menu2').html(data);
//
jQuery(".nav li a").each(function() {
if (jQuery(this).next().length > 0) {
jQuery(this).addClass("parent");
}
});
jQuery(".toggleMenu").click(function(e) {
e.preventDefault();
jQuery(this).toggleClass("active");
jQuery(".nav").toggle();
});
adjustMenu(width);
}
});
gribbo
На сайте с 01.03.2012
Offline
66
#1
Мой выбор хостинга (https://beget.com/p461662) \ Создаю сайты (/ru/forum/1009089)
D
На сайте с 28.06.2008
Offline
997
#2

В общем сам разобрался. За сортировку отвечают поля lft и rgt в таблице _menu

И если у вас большое меню сортирнуть можно так.

Заходите в майдамин, выбираете нужное меню (по родительскому элементу) и сортируете по lft.

Запоминаете наименьшее значение и далее выполняете из коря сайта этот скрипт.

<?php

set_time_limit(0);
const _JEXEC = 1;
error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', 1);
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__)); // если не в корне - добавить выше сколько надо
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_LIBRARIES . '/import.legacy.php';
require_once JPATH_LIBRARIES . '/cms.php';
// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';

$db = JFactory::getDBO();
$query = $db->getQuery(true);



$db->setQuery("SELECT id,lft,rgt FROM `bw173_menu` WHERE `parent_id` = 245 ORDER BY `bw173_menu`.`title` ASC");
$result = $db->loadAssocList();
$lft=55; //сюда подставляете ваши значения (на 1 меньше чем запомнили)
$rgt=56; //сюда подставляете ваши значения (на 1 меньше чем запомнили)
foreach ($result as $item){
$lft++;
$rgt++;
$db->setquery("UPDATE `bw173_menu` SET `lft` = '{$lft}', `rgt` = '{$rgt}' WHERE `bw173_menu`.`id` = {$item["id"]};");
$db->query();
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий