We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 23065
    • 5 Posts
    здравствуйте.
    я только начал изучать modx (да и пхп, хтмл, яваскрипт тоже:). начал сразу с практики, и думал поиском решений в интернете обойдусь, но все равно многие вопросы хотелось бы узнать из какого-нибудь нормального источника.

    1. например написал сниппет, который берет из базы некоторые данные и возвращает хтмл код и назвал его например сниппет1. потом написал небольшой яваскрипт в шаблоне страницы, в котором попытался вызвать сниппет [[сниппет1]], и ничего не получилось. вообще возможно ли как-нибудь вызывать сниппеты в скриптах?

    2. или еще одна проблема - попытался передать этот же сниппет параметром в чанк. тоесть написал чант, который возвращает например див с закругленными углами. а параметром в этот чанк передается содержимое этого дива. так вот при указании {{чанк1? &text=[[сниппет1]]}} ничего не работает. возможно сначала срабатывает сниппет1, который возвращает хтмл код, который в свою очередь передается параметром в чанк. но само содержание этого хтмл кода ломает структуру вызова чанка... я не знаю.

    3. или например я знаю что есть предопределенные параметры типа: [*pagetitle*], а где можно посмотреть все такие параметры, чтобы иметь возможность их использовать? потому что хочется в шаблоне страницы прописать вызов сниппета, в который передавать параметр, содержащий id текущей страницы. может для этого тоже есть предопределенный параметр?

    вот такие элементарные вопросы хотелось бы узнать в каких нибудь простых мануалах или здесь, потому что перечитывать многотонные документации к сожалению времени нет. или подскажите какой-нибудь грамотный мануал. заранее спасибо за помощь
      • 785
      • 2,113 Posts
      Надо сначала все же основы веб-программирования лучше изучить, чтобы не пытаться программу на PHP (сниппет) вызывать из JavaScript (это можно только с помощью AJAX).
      В административной части MODx специально написано при редактировании чанков:
      Чанки - это куски (X)HTML-кода, используемые в неизменном виде в нескольких местах. Чтобы иметь возможность централизованно редактировать повторяющийся код, вынесите его в чанк. Чанки не могут прямо содержать исполняемый код, однако могут включать в себя вызовы сниппетов и/или параметров (TV), обеспечивающих динамическую логику.
      И как можно передавать параметры в код HTML?
      В целом один ответ – будьте внимательнее и все же сначала изучите основы, а потом что-то спрашивайте.
      А значения [* *] соответствуют полям таблицы контента и параметрам TV.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 23065
        • 5 Posts
        на счет чанков понял что параметры туда не передать, мой косяк. с тв параметрами спасибо, понял.
        все же хочется по подробрее узнать хотя бы можно ли вызывать сниппет в скритпах с помощью MODx API: $modx->runSnippet(’snippetName’);? и где вообще доступен вызов MODx API?

        пишу панель чтобы дать возможность некоторым пользователям (не web) добавлять записи (страницы) в базу, причем не все поля для заполнения им будут доступны (например только заголовок страницы и контент). так вот по кнопке "сохранить" как лучше добавить запись? я думал написать сниппет и вызвать его через апи под кнопкой. понимаю что это не очень грамотно. но если я буду постить эти данные на какой-то локальный пхп скрипт, то будут ли там доступны апи типа: $modx->getFullTableName("site_content");?
          • 785
          • 2,113 Posts
          MODx – программа на PHP, как и сниппеты. PHP работает на сервере. JavaScript работает на компьютере клиента (в браузере). Напрямую вызов невозможен. На JavaScript можно написать программу, которая будет обращаться к серверу и запускать там программы на PHP, получая результаты. Для этого можно выполнить запросы GET или POST (для работы в синхронном режиме) или воспользоваться технологией AJAX (в асинхронном режиме). Если непонятно, о чем речь, изучайте основы.
          А вообще, абсолютно непонятно, что надо. Некоторые пользователи (не веб) – это менеджеры? Они могут добавлять записи (страницы) в базу из административной части сайта. Если же задача совсем иная, то при чем тут MODx?
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 23065
            • 5 Posts
            я так понял что апи работают только на сервере. тоесть я пишу пхп скрипт, сохраняю его в файл на сервере, и в этом скрипте могу обращаться к апи? например могу вызвать $modx->runSnippet(’snippetName’);?
            про гет, пост и аякс понял. про то, что вызывать апи в яваскриптах нельзя - тоже понял.
            поясню что хотел сделать: не веб пользователи, да это менеждеры сайта. но я не хочу давать им возможность добавлять записи из административной части сайта, так как хочу облегчить им работу, написав специальную панель, в которой им будет доступен ввод только минимально требуемых данных.
            вообще я делаю чтото вроде каталога товаров. и каждый каталог это страница, созданная на основе специального шаблона. задача моей панели управления заключается в том, чтобы дать возможность менеджеру просто иерархически перемещаться по каталогам и на любом уровне создавать, редактировать или удалять подкаталог. при этом от менеждера потребудется минимум ввода информации при создании подкаталога и ничего напутать с предкамии и шаблонами он не сможет, потому что основные параметры задавать буду я по умолчанию. вот.

            кстати а проблема со снипетами для меня еще не решена. приведу пример:
            [[make_rounded]] сниппет который возвращает див с закругленными углами. ему надо передавать параметры: $text, $angle и $color.
            пишу так:
            [[make_rounded? &text=rounded div 1 &angle=5 &color=blue]]
            [[make_rounded? &text=rounded div 2 &angle=5 &color=red]]

            рисует правильно 2 дива с нужными параметрами.
            а пишу так:
            [[make_rounded? &text=[[make_rounded? &text=rounded div 2 &angle=5 &color=red]] &angle=5 &color=blue]]

            результат не корректен. хотя в админке написано: "В качестве параметров вызова сниппета можно использовать вызов других сниппетов (также с параметрами) или чанков."

            может я не правильно оформляю вызов сниппета?
              • 785
              • 2,113 Posts
              Изменить внешний вид административной части для группы менеджеров можно с помощью плагина ManagerManager, также можно написать свой модуль, реализующий все, что надо. Вложенный вызов сниппетов доступен только не кэшируя внешний сниппета и кэшируя внутренний. Все это много раз обсуждалось на этом форуме.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 23065
                • 5 Posts
                большое спавибо за ответы. все понял