Перейти к содержанию

aplayer

Актив
  • Постов

    407
  • Зарегистрирован

  • Посещение

  • Победитель дней

    9

Сообщения, опубликованные aplayer

  1. хотя кешируется он только для гостей.

    Странно.

    10 минут назад, WaNted сказал:

    Я думаю если вы выводите какие-либо статьи, 30 секунд или минута тут не критично. 

    я не хочу  публично обсуждать подробности подробности поставленной мне задачи.

    Но кеширование вызовет проблему при тестировании. Сам понимаешь, ждать каждый раз по 30 секунд при проверке работы скрипта тоже не вариант.

  2. 5 минут назад, WaNted сказал:

    Попробуйте напрямую вставить свой код в содержимое Theme Hook, где вставляли тег своего шаблона.

    не помогает. Кешируется на 30 секунд. То-есть в течении 30 секунд обновлял страницу и ничего не менялось

  3. WaNted я уже решил переключиться на шаблонизаторы. Потому что инклюд все равно я так понимаю не возможен.

     

    Вот новая проблема

    <ips:template parameters="" />
    
    {{$test = strftime('%d.%m.%Y %H:%M:%S', time());}}
    
    
    {$test}

    Этот код выводит текущее время на сервере. Но при обновлении страницы выводимое время не обновляется в  около минуты. То-есть результат работы этого кода где-то кэшируется.

    Мне кэширование в этом плагине не нужно. Динамичный контент должен выводиться всегда обновленным. где-то можно выключить кэш этого шаблона?

  4. Только что, WaNted сказал:

    Хм... Зачем использовать эти функции, когда шаблон итак уже выводит своё содержимое?

    Надо выводить динамическое содержимое.

    Например заголовки статей с новостного сайта. То-есть такое содержимое которое заранее не известно, постоянно изменяется, а иногда даже не существует

  5. 8 минут назад, WaNted сказал:

    А чем Вам скобочки не угодили?

    Ну это как в анекдоте про армию: "Берете ломы, идете подметать плац..."

    Мы не в армии. И если надо что-то подметать, то лучше всего это делать метелкой а не ломами.

    если в dev/html создать файл с таким кодом:

    <ips:template parameters="" />
    
    {{echo "test";}}

    то сайт не грузится, а выводится только такой текст и больше ничего:

    theme_core_global_plugins_test
    test
    
    {{echo "test";}}

    Где-то я читал, что в шаблонах нельзя использовать функции вывода информации на экран. Это совсем край. Для чего тогда вся эта возможность разработки плагинов придумана если в ней нельзя использовать php на 100%?

  6. Проблема заключается в том, что при компиляции плагина удаляются все файлы котрые я создал вручную не через центр разработчика.

    При создании хука темы а папке hooks создается файл с таким содержимым.

    //<?php
    /* To prevent PHP errors (extending class does not exist) revealing path */
    if (!defined('\IPS\SUITE_UNIQUE_KEY')) {
        exit;
    }
    
    class hook35 extends _HOOK_CLASS_ {
        /* !Hook Data - DO NOT REMOVE */
    
        public static function hookData() {
            require 'file.php'; //здесь сделать инклюд который сформаирует перпменную $content
            return array_merge_recursive(array(
                'globalTemplate' =>
                array(
                    0 =>
                    array(
                        'selector' => '#ipsLayout_header',
                        'type' => 'add_after',
                        'content' => $content, //вывод переменной в блоке сайта
                    ),
                ),
                    ), parent::hookData());
        }
    
        /* End Hook Data */
    }
    

    В коде уже описано, что я хочу сделать.

    А именно. Не хочу городить 1000 строк кода в теле функции hookData(), а сделать инклюд который сформирует переменную $content.

    Но компилятор плагина удаляет все файлы которые я создаю сам вручную. В гугле информации ноль. Только несколько скудных абзацев на офсайте из которых я понял, что хуки кода не предназначены для решения моей проблемы. А если создать еще один хук темы и не привязывать его к месту в шаблоне, а потом сделать его инклюд, то при запуске сайта возникают различные ошибки на неопределённые классы и переменные.

     

    Моя задача. Сделать на сайте блок который будет выводить динамическую информацию средствами php.

    Из все й информации что мне удалось нарыть я понял, что сделать это можно через хук, код которого представлен выше, через элемент массива 'globalTemplate' => ....=>'content' в функции hookData().

    Если есть какие-то другие способы, то расскажите о них.

     

  7. 1 час назад, Lumenq сказал:

    Столкнулся с подобной проблемой, но с Redis, может кто-то подскажет?

    недавно включал memcached. Там надо было установить модуль  php-memcached

    для редиса скорее всего точно так же.

    После перезапустить всё

    apt-get install php7.0-memcached

     

    и перезапустить всё

  8. На чистом форуме все хорошо заработало.

    Но на всякий случай зашел в техподдержку и выбрал Something isn't working correctly (что-то работает не так)

    И вот:

    Screenshot_20190303_203710.thumb.png.e0fc6973e06af5c48c641320729d81e4.png

    Со временем на сервере все нормально, синхронизируется. Часовой пояс Москва, +3 от Гринвича.

     

  9. 3 минуты назад, siv1987 сказал:

    Почему нет смысла увеличить время выполнения?

    скорее всего где-то бесконечный цикл зациклился..

    поставил 120 секунд. не помогло

    Наверно придется на чистый форум этот режим ставить. Хотя я все что можно удалить и отключить, отключил и удалил.

  10. Подскажите. Не могу зайти на сайт под админом.

    Whoops \ Exception \ ErrorException (E_ERROR)

    Maximum execution time of 30 seconds exceeded

    Ошибка ни о чем. Думаю нет смысла увеличивать время работы скрипта.

    под гостем и обычным пользователем все заходит без проблем и ошибок.

    Админу запрещено входить на сайт в этом режиме?

  11. siv1987 слушай. Ты случайно не знаешь как поменять customFieilds через локальные api, которые не REST?

    Через вызов типа \IPS\Member::i()->Set_customFields($member_id, customFields[id], $field_value) или что-то в этом роде?

    А то мне кажется, что обращаться через curl к rest api на локальном сервере это моветон.

    Как пользоваться \IPS\Db я уже разобрался, но вдруг получится так, что я буду трясти базу в то время как есть готовые api для решения моих задач.

     

     

  12. LANIAKEA насколько я знаю, на Украине яндекс блокируется. Это значит, что посетители не увидят страницу оплаты если не будут использовать средства обхода блокировок.

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

    Для Украины надо искать украинские системы эквайринга или другие дружелюбные к этой стране.

    Кстати яндекс проводит платежи для физлиц. Это значит не надо подавать никаких заявок и чего-то ждать. https://tech.yandex.ru/money/doc/payment-buttons/reference/notifications-docpage/

    Но все скрипты надо сделать самому. Там ничего сложного нет. Где-то здесь был плагин для коммерции под яндекс.

    Но c Украиной он вряд ли заработает в полной мере.

  13. 18 часов назад, siv1987 сказал:

    непонятный скриншот

    Для понимания ситуации.

    На этом скриншоте часть данных полученных при get-запросе к rest api:  api/core/members/$member_id

    Скорее всего это страница исходного кода браузера на которой выведен результат print_r или var_dump  функции member_get();, которая приведена выше.

  14. 2 часа назад, siv1987 сказал:

    Какая многоуровневая структура у обычного массива? Какой информации в интернете нет вообще? Достаточно открыть документацию, хотя бы на том же сркиншоте у ТСа есть вся необхадмая информация, из которой он не понял что customFieilds  это обычный массив в виде ид поле => значение.

    Я тоже по началу въехать не мог. Когда мы делаем гет-запрос нам приходит json типа

    customfields

    ___2

    _____fields

    __________2

    _______________name

    _______________value

    __________3

    _______________name

    _______________value

     

    Это массив элементами которого являются массивы. Не знаю как у вас называется эта структура, я называю его многоуровневый массив, может ошибаюсь.

    А вот в пост-запросе нам надо отправить одномерный массив customfields[id]=value

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

    Что там написано в документации? Array of custom fields as fieldId => fieldValue. Ну и как мне из этой строки понять, что массив должен иметь имя customfields и никак иначе?

     

  15. Еще добавлю комент к своим функциям

    Надо проверять их значение на false. Оно должно возвратиться если сервер с rest api недоступен.

    у меня скрипт выполнялся на одном сервере с форумом. Тоесть я считал, что если сервер с rest api недоступен то и скрипт не сможет выполниться. Сервер-то один. Однако оказалось что скрипт вполне может выполняться когда rest api недоступен. Не знаю как это происходит, но факт подтвержденный.

     

    siv1987 я бы не стал выкладывать код слепленный на коленке. Информации по этим полям в интернете нет вообще. Я целый месяц ломал голову, как до этих полей добраться. Оно же имеет многоуровневую структуру. Однако ларчик просто открывался - надо в пост запросе указывать только последний элемент ветки.

    Если ваш код не правильный, то вы введете в заблуждение много людей. Поиск в гугле по запросу customFieilds скорее всего будет выдавать эту страницу потому-что больше нигде эта проблема не обсудается.

     

    А так да. Можно любым образом оптимизировать код.

    мои функции сделаны с расчетом на одиночные удары.

     

     

×
×
  • Создать...