We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1611
    • 591 Posts
    Здравствуйте, объясните пожалуйста как на MODx реализовать такую вещь:
    У меня есть таблица в базе с некоторыми данными. Например список продаваемых программ. В таблице несколько полей, разного типа.
    1. Как реализовать в админке функции добавления, редактирования, и удаления этих данных.
    2. Как выводить на странице список этих программ (здесь догадываюсь, что нужен снипет делающий запрос к базе, вроде просто)
    3. Можно ли реализовать задачу стандартными средствами MODx?

    По поводу третьего пункта мне в голову приходит только такой вариант:
    Заводить каждую программу в виде отдельного документа с набором TV, а после этого выводить их списком в каком либо документе (это вроде как может Dittto, правильно я думаю?)
    Плюс такого подхода, что автоматически у нас появляется возможность сделать более подробное описание каждой програмы в ее собственном документе.
    А минус я вижу в том, что нет какой-то таблицы в базе данных где сконцентрированны все данные по программам, и если придется делать поиск, или выборку по параметрам, то где искать данные в базе?
      • 12736
      • 259 Posts
      1) Переключите кодировку браузера на автоопределение, а то тяжело читать ваш пост так как кракозябры.

      2)Про TV и про Ditto правильно абсолютно мыслите - именно так строятся каталоги в MODx. Если так сделать то отпадает ваш первый вопрос - наполнение каталога, редактирование отдельных позиций через обычные средства админки.
      По поводу минусов - да, данные по каталогу будут разбиты по нескольким таблицам в бд. Все штатные поля title, introtext, content и тд - лежат в таблице modx_site_content. Все данные введенные через TV параметры лежат в modx_site_tmplvar_contentvalues .

      3) Поиск позиций каталога по параметрам можно также реализовать через всесильный Ditto - http://modx.ru/blog/409.

      4) Из вашего поста понял, что основная заруба заключается в том что у вас уже есть готовая база с каталогом и вы хотите как можно проще ее вписать. Честно сказать, не знаю что и посоветовать - если все делать через Ditto и TV - то базу все равно предется перебивать или писать какой-нибудь скрипт, который ее распихает по таблицам MODx. Хотя надо подождать, что скажут здешние спецы - они тут всегда что-нибудь дельное советуют.

      5) Вот здесь гляньте http://modxcms.com/forums/index.php/topic,15257.0.html это может пригодится при переносе каталога на modx
        • 15610
        • 15 Posts
        Доброго времени суток.

        Если Вы знакомы с php, то могу посоветовать написать собственный скрипт для обработки данных из таблицы. Так же для управления данными из админки можно расширить функциональность manager-а в modx. К примеру, я добавил кнопочку в manager "Панель управления БД" из которой я просматриваю программные продукты, редактирую, удаляю и т.д. Сделал свою таблицу с веб-пользователями (стандартная меня не устроила).

        Если есть вопросы по реализации, могу рассказать подробней...
          • 1611
          • 591 Posts
          Конечно интересно, и, думаю, не только мне.

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

          Но пока этот подход смущает, может быть это стереотип, но хочется нормальную админку для пользователя с ограниченным функционалом.
            • 17459
            • 268 Posts
            если делать 1 документ - 1 запись в таблице, то получится очень много документов (наверное), левое меню в админке будет глючить, мне кажется логичнее сделать сниппет, который бы делал самые частые вещи: вытаскивал данные из таблицы, добавлял бы новую строчку или удалял.

            ну а где-нибудь сделать 2 странички...

            на одной данные показываются и есть кнопка delete справа от каждой строчки
            на другой форма добавления новой строчки

            я думаю, что так было бы проще..
              • 1788
              • 1,103 Posts
              Quote from: Lord at May 12, 2008, 09:35 PM

              если делать 1 документ - 1 запись в таблице, то получится очень много документов (наверное), левое меню в админке будет глючить, мне кажется логичнее сделать сниппет, который бы делал самые частые вещи: вытаскивал данные из таблицы, добавлял бы новую строчку или удалял.
              На 1500 документов (использую дерево) влияет только время.
                • 1611
                • 591 Posts
                Quote from: antey at May 13, 2008, 12:22 AM

                На 1500 документов (использую дерево) влияет только время.
                Что вы имеете в виду? Долго загружается страница админки? Или тормозит при редактировании элементов, при раскрытии контекстного меню?
                  • 15610
                  • 15 Posts
                  Для того, чтобы добавить дополнительную панель в `manager` (с нужной для вас конфигурацией) достаточно три шага!

                  1. Расширяем функционал! Существует файл /manager/index.php , в котором и происходит все управление. Там следует добавить в оператор `switch` свои конфиги. К примеру:

                  case 401:
                  include_once "actions/my_script1.php";
                  break;
                  и т.д. (сколько угодно, только чтобы они были не заняты!)

                  2. Добавляем кнопочки! Тут нужен файл /manager/frames/menu.php ? в который мы перед записью `// Output Menus where there are items to show` добавляем строки, что-то типа:

                  //MyMenu
                  $mymenu = ’’;
                  $mymenu .= ’<li><a onclick="this.blur();" href="index.php?a=401" target="main">My Script 1</a></li>’."\n";
                  $mymenu .= ’<li><a onclick="this.blur();" href="index.php?a=402" target="main">My Script 2</a></li>’."\n";
                  $mymenu .= ’<li><a onclick="this.blur();" href="index.php?a=403" target="main">My Script 3</a></li>’."\n";
                  $mymenu .= ’<li><a onclick="this.blur();" href="index.php?a=404" target="main">My Script 4</a></li>’."\n";

                  И ещё в самом конце скрипта, после всех ` if `, нужно добавить свой:

                  if ($mymenu) {
                  echo ’<li id="limenu10"><a href="#menu10" onclick="new NavToggle(this); return false;">Моя Панелька</a>’."\n";
                  echo ’<ul class="subnav" id="menu10">’ . $mymenu . ’</ul>’."\n";
                  echo ’</li>’."\n";
                  }

                  3. Вот и всё! Можно запустипь и посмотреть что вышло! Только для того чтобы все заработало так как надо, создаем файл /manager/actions/my_script1.php и в нем делаем все что угодно! Делаем запросы к своей БД, выводим результат на экран! Можно создать ещё пару скриптов на редактирование и удаление данных из таблицы. Все в Ваших руках!!!
                    • 1611
                    • 591 Posts
                    Спасибо! Будем пробовать.
                      • 12736
                      • 259 Posts
                      kem_steep
                      Спасибо - очень ценные разъяснения