Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

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

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

Most Popular Posts

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

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

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

Posted Images

  • Author

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

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

Еще вопрос.

Не могу разобраться как использовать класс 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.

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

 

 

 

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

$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 месяц спустя...
  • 6 месяцев спустя...
  • Author

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

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

Цитата

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

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

  • Author

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

<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

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

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

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

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

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

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

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

да включен.

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

  • Author

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

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

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

  • Author

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

//<?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

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

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

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

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

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

 

plugins.7z

  • Author
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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.