We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 34733
    • 6 Posts
    Добрый день.

    Задача стоит так: нужно привязать тексты ссылок к каждой странице сайта. Привязку пытался сделать по $id. Но при вводе mysql-запроса, в идентификаторе вместо числа (например, 15), передается название переменной ( [*id*] ):

    Так выглядит строка:
    $query = "SELECT `linkname` FROM `modx_site_content` WHERE `id`=’".$id."’";

    Так выглядит содержимое переменной $query:
    SELECT `linkname` FROM `modx_site_content` WHERE `id`=’15’

    Т.е. значение идентификатора ( 15 ) в запрос передается, но не воспринимается mysql.

    Значение переменной получаю в чанке:
    [[GetLinkName? &alias=`[*alias*]` &id=`[*id*]`]]

    В сниппете сразу пытаюсь работать с переменной:

    $data = mysql_fetch_array($modx->db->select("linkname", "modx_site_content", "id=’$id’", "", ""));
    echo $data[0];

    Люди, я с modX недавно познакомился, как вы работаете с идентификатором страницы? Как его передать в запрос mysql?
      • 785
      • 2,113 Posts
      Вообще непонятно, что пытаетесь сделать, и зачем выполняются запросы к базе. Id не надо передавать в сниппет, в коде можно легко определить Id текущей страницы, поля linkname в таблице site_content нет, утверждение «в запрос передается, но не воспринимается mysql» – полнейший бред, для получения информации о текущей странице не надо обращаться к базе, она уже в памяти. В общем, все сделано не так, как надо. Кстати, еще при вопросах надо указывать версию MODX.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 34733
        • 6 Posts
        Quote from: AKots at Jul 26, 2011, 01:14 AM

        Вообще непонятно, что пытаетесь сделать, и зачем выполняются запросы к базе. Id не надо передавать в сниппет, в коде можно легко определить Id текущей страницы, поля linkname в таблице site_content нет, утверждение «в запрос передается, но не воспринимается mysql» – полнейший бред, для получения информации о текущей странице не надо обращаться к базе, она уже в памяти. В общем, все сделано не так, как надо. Кстати, еще при вопросах надо указывать версию MODX.

        Версия modx 1.0.5

        Каким образом определить Id текущей страницы в коде?
        Поле linkname было добавлено мною, там хранятся строки текста.
        Насчет бреда - это Вы погорячились, запрос формируется совершенно определенно с числом, команды echo $query достаточно, чтобы в этом убедиться. И от mysql приходит совершенно точно пустой ответ. Такой ответ возможен лишь в случае, если переменная $id будет пустой. В иных случаях не числовое значение $id будет воспринято как ноль и ответ от mysql придет. Проверьте сами.

        Не знаю, понятно ли я излагаю...

        Если есть более простые способы, то просветите. Нужно достать из таблицы site_content одну запись, соответствующую странице.
        Как это описать в чанке? Или в сниппете
          • 1788
          • 1,103 Posts
            • 785
            • 2,113 Posts
            Quote from: domark at Jul 26, 2011, 02:21 AM

            Насчет бреда - это Вы погорячились, запрос формируется совершенно определенно с числом, команды echo $query достаточно, чтобы в этом убедиться. И от mysql приходит совершенно точно пустой ответ.
            То есть верите в чудеса? А вот я не верю, если запрос правильный, а в базе есть нужная запись, она будет выдана системой.
            Quote from: domark at Jul 26, 2011, 02:21 AM

            Поле linkname было добавлено мною, там хранятся строки текста.
            То есть, не зная системы, уже умудрились ее испохабить? Для хранения дополнительных параметров специально имеются переменные TV, но раз таблица испорчена, система не поддерживает ее нормальную работу, вот и приходится лишние запросы к базе делать…

            Quote from: domark at Jul 26, 2011, 02:21 AM

            Каким образом определить Id текущей страницы в коде?
            А немного познакомиться с API перед написанием программ слабо? Например, Id определяется так:
            $modx->documentIdentifier

            Quote from: domark at Jul 26, 2011, 02:21 AM

            Если есть более простые способы, то просветите.
            Есть более простой способ – делать ВСЕ совершенно не так, не портить стандартные таблицы базы и использовать API MODX.
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации
              • 34733
              • 6 Posts
              Quote from: AKots at Jul 26, 2011, 02:48 AM

              Quote from: domark at Jul 26, 2011, 02:21 AM

              Насчет бреда - это Вы погорячились, запрос формируется совершенно определенно с числом, команды echo $query достаточно, чтобы в этом убедиться. И от mysql приходит совершенно точно пустой ответ.
              То есть верите в чудеса? А вот я не верю, если запрос правильный, а в базе есть нужная запись, она будет выдана системой.
              Quote from: domark at Jul 26, 2011, 02:21 AM

              Поле linkname было добавлено мною, там хранятся строки текста.
              То есть, не зная системы, уже умудрились ее испохабить? Для хранения дополнительных параметров специально имеются переменные TV, но раз таблица испорчена, система не поддерживает ее нормальную работу, вот и приходится лишние запросы к базе делать…

              Quote from: domark at Jul 26, 2011, 02:21 AM

              Каким образом определить Id текущей страницы в коде?
              А немного познакомиться с API перед написанием программ слабо? Например, Id определяется так:
              $modx->documentIdentifier

              Quote from: domark at Jul 26, 2011, 02:21 AM

              Если есть более простые способы, то просветите.
              Есть более простой способ – делать ВСЕ совершенно не так, не портить стандартные таблицы базы и использовать API MODX.



              echo $modx->documentIdentifier дает пустой ответ, т.е. в нем нет id страницы.

              AKots, будьте любезны, читайте повнимательнее, что написано. К чему пустая полемика? Споры с пеной у рта? Вместо того, чтоб написать несодержательный текст со своими домыслами, лучше б сказали, как сделать правильно. Получили б от меня огромный респект и уважение.

              Надеюсь, на содержательный разговор.
                • 34733
                • 6 Posts
                Quote from: antey at Jul 26, 2011, 02:46 AM

                http://www.modx-cms.ru/dokumentatsiya/razrabotka/programmirovanie/modx-api.html

                не могу ничего сказать на счет полезности изучения, вот например:

                Системные переменные
                documentIdentifier
                Идентификатор текущего ресурса

                int documentIdentifier

                Содержит ID документа на котором был вызван код.

                Пример
                <?php
                echo "ID ресурса: " . $modx->documentIdentifier;
                ?>

                Так в моем случае ответ пустой. Т.е. системная переменная неким образом опустошена.
                  • 785
                  • 2,113 Posts
                  Quote from: domark at Jul 26, 2011, 03:08 AM

                  AKots, будьте любезны, читайте повнимательнее, что написано. К чему пустая полемика? Споры с пеной у рта? Вместо того, чтоб написать несодержательный текст со своими домыслами, лучше б сказали, как сделать правильно.
                  Я внимательно прочитал и увидел, что ВСЕ сделано неверно и правильно будет ВСЕ переделать. Но за Вас это никто делать не будет…

                  Quote from: domark at Jul 26, 2011, 03:08 AM

                  echo $modx->documentIdentifier дает пустой ответ, т.е. в нем нет id страницы.
                  Если сниппет:
                  <?php
                  echo $modx->documentIdentifier;
                  ?> 
                  не выдает Id ресурса, то судя по всему, MODx сломан. Так как неизвестно, что кроме таблиц, Вы там исправляли, единственный совет – установить систему заново и нечего в ней не изменять.
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 34733
                    • 6 Posts
                    Quote from: AKots at Jul 26, 2011, 03:40 AM

                    Quote from: domark at Jul 26, 2011, 03:08 AM

                    AKots, будьте любезны, читайте повнимательнее, что написано. К чему пустая полемика? Споры с пеной у рта? Вместо того, чтоб написать несодержательный текст со своими домыслами, лучше б сказали, как сделать правильно.
                    Я внимательно прочитал и увидел, что ВСЕ сделано неверно и правильно будет ВСЕ переделать. Но за Вас это никто делать не будет…

                    Quote from: domark at Jul 26, 2011, 03:08 AM

                    echo $modx->documentIdentifier дает пустой ответ, т.е. в нем нет id страницы.
                    Если сниппет:
                    <?php
                    echo $modx->documentIdentifier;
                    ?> 
                    не выдает Id ресурса, то судя по всему, MODx сломан. Так как неизвестно, что кроме таблиц, Вы там исправляли, единственный совет – установить систему заново и нечего в ней не изменять.


                    Переустанавливать - точно не вариант. Это клиентский сайт, в нем уже под тысячу страниц, и какие еще изменения сделаны - неизвестно. Да и программировать под modx пока не планирую, у меня другой хлеб - оптимизация и раскрутка сайтов.

                    Может у кого-то есть еще варианты, как сделать привязку к странице? Или как передать [*id*] в mysql-запрос?
                      • 785
                      • 2,113 Posts
                      Quote from: domark at Jul 26, 2011, 03:44 AM

                      Переустанавливать - точно не вариант. Это клиентский сайт, в нем уже под тысячу страниц, и какие еще изменения сделаны - неизвестно. Да и программировать под modx пока не планирую, у меня другой хлеб - оптимизация и раскрутка сайтов.
                      Так бы сразу и написали – есть сайт, горе-программистами неизвестно как переделанный. Решений тут может быть два – самому разбираться в том, что там наделали или нанимать кого-то, кто разберется. Простыми советами на форуме обойтись вряд ли получится, так как на сайте уже не MODX, а неизвестно что.

                      Хотя вообще-то в действительности [*id*] в mysql нормально передается, просто нужно разбираться с тем, какой запрос надо сделать и как обработать результаты.
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации