Jump to content

Создание плагина

Featured Replies

comment_156188

Таблица core_members_history

insert into `core_member_history` values( и тут по порядку нужные поля добавляем );

  • Replies 94
  • Просмотров 8,7k
  • Created
  • Последний ответ

Лучшие авторы в теме

Most Popular Posts

  • Человеку, похоже, хочется вставить в шаблон готовый спагетти-код и совершенно не хочется заморачиваться с ООП, и разделением логики и представления. Вобщем-то, логично будет посоветовать подойти к воп

  • Там вообще ничего не нужно городить и вообще лезть редактировать этот файл в ручную. При создании Theme Hook достаточно в содержимом указать свой шаблон типа: {template="templateName" group="plugi

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

Posted Images

  • Author
comment_156189

Desti а вот еще нашел в member.php

/**
     * Log Member Action
     *
     * @param    mixed        $app            The application action applies to
     * @param    string        $type            Log type
     * @param    mixed        $extra            Any extra data for the type
     * @param    mixed        $by                The member performing the action. NULL for currently logged in member or FALSE for no member
     *
     * @return    void
     */
    public function logHistory( $app, $type, $extra=NULL, $by=NULL )

описание скудновато. Не понятно для чего эта функция. Пробовал позапускать в различных вариациях - 50х ошибки.

Edited by aplayer

comment_156190

Ну если она из members, то и запускаться должна от members

типа $this->members->logHistory( 'core', 'login');

 

 

comment_156192
2 часа назад, aplayer сказал:

$by=NULL

он по умолчанию NULL, не надо его передавать в параметрах. 

  • 2 недели спустя...
  • Author
comment_156474

Еще вопрос.

Не могу разобраться как использовать класс select для работы с БД.

Например мне надо получить все ID картинок из галереи старше определенной даты.

$select = \IPS\Db::i()->select('image_id', 'gallery_images', array('image_updated>?', '1538300099'),'image_id DESC', array( 0, 10 ) );

Не могу сообразить как из $select вытащить массив данных. Функция var_dump($select); выводит объект с какой-то служебной информацией и структурами таблиц.

Я же запросил Вывести 10 штук image_id возраст которых старше метки времени 1538300099.

Если использовать метод first() то она выводит первое полученное значение. То-есть я на верном пути и ошибок в запросе нет.

Есть еще метод next() но он в цикле с первого же раза возвращает null.

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

 

 

 

comment_156477

Зависит от того - что за массив вы хотите получить:

$select = array();

foreach( \IPS\Db::i()->select('image_id', 'gallery_images', array('image_updated>?', '1538300099'),'image_id DESC', array( 0, 10 ) ) as $row )
{
	//$select[] = $row;
	$select[ $row['image_id'] ] = $row['gallery_images'];
}

 

Сори, за копипастом не уследил. Правильно в Вашем случае так:

$select = array();

foreach( \IPS\Db::i()->select('image_id', 'gallery_images', array('image_updated>?', '1538300099'),'image_id DESC', array( 0, 10 ) ) as $row )
{
	$select[] = $row;
}

 

  • 1 месяц спустя...
  • Author
comment_157263

если я зайду в профиль другого пользователя, не в свой профиль, мой плагин должен узнать его id ник итп

Как такое реализовать?

comment_157265
49 минут назад, aplayer сказал:

если я зайду в профиль другого пользователя

Если это хук модуля profile.php то $this->member

  • 6 месяцев спустя...
  • Author
comment_160557

при разработке плагина использовал в хуке функцию in_array

мне выдает такую ошибку

Цитата

You have used a function (in_array) that should be called from the root namespace for performance reasons

Не могу понять что это такое и как с этим бороться. Я так понимаю движок не дает мне использовать эту функцию в открытом виде. Что делать?

  • Author
comment_160561

В документации много где сказано, что в шаблон можно передать параметры чрез эту строку. И больше ни слова ка именно их передавать.

<ips:template parameters="$param1" /> 

Как я не пытаюсь эти параметры передать мне все пишет  ошибку типа $param1 не определена или об отсутствии аргументов у функции.

Как мне из хука   перекинуть несколько параметров в шаблон phtml?

вот пример хука

//<?php
/* To prevent PHP errors (extending class does not exist) revealing path */
if (!\defined('\IPS\SUITE_UNIQUE_KEY')) {
    exit;
}

class hook49 extends _HOOK_CLASS_ {
    /* !Hook Data - DO NOT REMOVE */

    public static function hookData() {
        $secret_key = "secret_key";
        $content = '{template="phtml" group="plugins" location="global" app="core"}';

        return array_merge_recursive(array(
            'globalTemplate' =>
            array(
                0 =>
                array(
                    'selector' => '#ipsLayout_mainArea',
                    'type' => 'add_before',
                    'content' => $content, 
                ),
            ),
                ), parent::hookData());
    }

    /* End Hook Data */
}

Как отправить переменную $secret_key  в шаблон PHTML чтобы ее можно было отобразить на странице?

  • Author
comment_160564

WaNted 

вот такой код завершается ошибкой

Whoops \ Exception \ ErrorException (E_NOTICE)
Undefined variable: secret_key
<ips:template parameters="$secret_key" />

<div>{$secret_key}</div>

 

  • Author
comment_160568

И еще такой вопрос.

Когда я правлю файлы хуков и шаблоны phtml, то какое-то время сайт реагирует на изменения. Но через некоторое время перестает.

То-есть я вношу правки в файлы, а сайт продолжает работать как будто ничего не изменилось.

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

А можно ли что нибудь сделать так чтобы не пришлось переустанавливать плагин? Ведь какое-то время изменения применяются без переустановки.

  • Author
comment_160570
1 час назад, WaNted сказал:

Режим разработчика включен?

да включен.

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

  • Author
comment_160572

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

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

На сайте на котором разрабатывался плагин, все хорошо. Наверно из за режима разработчика.

  • Author
comment_160573

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

//<?php

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	exit;
}

class hook73 extends _HOOK_CLASS_
{

/* !Hook Data - DO NOT REMOVE */
public static function hookData() {
    $content = time();
 return array_merge_recursive( array (
  'globalTemplate' => 
  array (
    0 => 
    array (
      'selector' => '#ipsLayout_mainArea',
      'type' => 'add_inside_start',
      'content' => $content,
    ),
  ),
), parent::hookData() );
}
/* End Hook Data */


}

Он должен при обновлении страницы выводить результат функции time()

Если сменить пользователя, то он тоже видит цифру, которая была сгенерирована у предыдущего пользователя.

  • Author
comment_160604

Вопрос стоит очень остро.

версия форума 4.4.9

прилагаю тестовый плагин с исходниками.

Тестировал на разных сайтах. Итог один. Если выключить режим разработчика PHP выполняется 1 раз и результат выполнения замораживается для всех пользователей навсегда.

Тестовый плагин  при каждом обновлении страницы, между навигатором и контентом должен выводить результат функции time() - постоянно увеличивающееся число. Но но выводит только постоянное число.

 

plugins.7z

  • Author
comment_160606
12 минут назад, WaNted сказал:

Попробуйте так:


'content' => '{expression="time()"}'

 

Вроде заработало.

Надеюсь

\IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' )->phtml( $params );

в этой конструкции будет работать без кеширования

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.