Skocz do zawartości
  • 0
X3nO

Widget w aplikacji IPS 4.1

Pytanie

Cześć, mam pytanie jak dodać widget/blok do istniejącej już aplikacji pod IPS 4.1?

Na razie mam takie coś:

<?php
namespace IPS\monitor\widgets;
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}
class _lgslmon extends \IPS\Widget
{
	public $key = 'lgslmon';
	public $app = 'monitor';
	public $plugin = '';
	public function init()
	{
		parent::init();
	}
 
	public function render()
	{
		require 'IPS\monitor\sources\table.php';
	}
}

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

3 odpowiedzi na to pytanie

Polecane posty

  • 0

Ogólnie jeśli to istniejąca apka, to musisz w centrum developera najpierw dodać widget. wtedy będzie on dostępny na liście widgetów.

Swoją drogą nie polecam używania require .... w widgecie. Lepiej stworzyć jakiś tam obiekt z Twojej apki i wtedy wywołać na obiekcie np. render(). require to złe praktyki :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Mogę prosić o przykładowe użycie funkcji render?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Wszystko zależy jeszcze dla jakiego typu zawartości robisz widget. Jeśli jest to content jak np. wpis w kategorii (temat, wpis na blogu, ogłoszenie w (SD) Sales Portal Pro itp) to nie musisz robić metody render, wtedy dajesz coś takiego:

class _Offers extends \IPS\Content\Widget
{
	/**
	 * @brief	Widget Key
	 */
	public $key = 'Offers';
	
	/**
	 * @brief	App
	 */
	public $app = 'sdsalespro';
		
	/**
	 * @brief	Plugin
	 */
	public $plugin = '';
	
	/**
	 * Class
	 */
	protected static $class = 'IPS\sdsalespro\Offer';
	
	/**
	 * Initialise this widget
	 *
	 * @return void
	 */ 
	public function init()
	{
		$this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' ), $this->key ) );

		parent::init();
	}
}

A jeśli nie da się pominąć to to jest przykład metody render()

/**
	 * Render a widget
	 *
	 * @return	string
	 */
	public function render()
	{
	    if( !\IPS\Settings::i()->sd_newsletter_turnon )
	    {
	        return '';
	    }
	    
	    if( \IPS\Member::loggedIn()->member_id && \IPS\sdnewsletter\Address::checkIsMemberSubscribe( \IPS\Member::loggedIn()->member_id ) )
	    {
	        return '';
	    }
	    
	    $form = new \IPS\Helpers\Form( 'sd_newsletter', 'sd_newsletter_subscribe_button', \IPS\Http\Url::internal( 'app=sdnewsletter&module=newsletter&controller=core&do=subscribe', 'front', 'sdnewsletter' ), array( 'data-controller' => 'sdnewsletter.front.subscribe.form' ) );
	    $form->class = 'ipsForm_vertical';
	    $form->add( new \IPS\Helpers\Form\Text( 'sd_newsletter_address_name', \IPS\Member::loggedIn()->member_id ? \IPS\Member::loggedIn()->name : '', TRUE ) );
	    $form->add( new \IPS\Helpers\Form\Email( 'sd_newsletter_address_email', \IPS\Member::loggedIn()->member_id ? \IPS\Member::loggedIn()->email : '', TRUE ) );
	    
	    $options = array();
	    
	    $options[ 0 ] = \IPS\Member::loggedIn()->language()->addToStack( 'sd_newsletter_default_subscribe' );
	    
	    foreach( \IPS\DB::i()->select( '*', 'sdnewsletter_newsletter', null, 'newsletter_title ASC' ) as $row )
	    {
	        $options[ $row[ 'newsletter_id' ] ] = $row[ 'newsletter_title' ];
	    }
	    
	    if( count( $options ) > 1 )
	    {
	        $form->add( new \IPS\Helpers\Form\CheckboxSet( 'sd_newsletter_type_subscribe', array( 0 ), TRUE, array( 'options' => $options, 'parse' => 'normal', 'disabled' => array( 0 ) ) ) );
	    }
	    
	    \IPS\Member::loggedIn()->language()->words[ 'sd_newsletter_regulation' ] = sprintf( \IPS\Member::loggedIn()->language()->get( 'sd_newsletter_regulation' ), \IPS\Http\Url::internal( 'app=sdnewsletter&module=newsletter&controller=core&do=regulation', 'front', 'sdnewsletter_regulation' ), 'data-ipsDialog data-ipsDialog-size="wide" data-ipsDialog-title="' . \IPS\Settings::i()->sd_newsletter_regulation_title . '"' );
	    
	    $form->add( new \IPS\Helpers\Form\Checkbox( 'sd_newsletter_regulation', NULL, TRUE, array(), function( $val )
	    {
	        if ( !$val )
	        {
	            throw new \InvalidArgumentException( 'sd_newsletter_not_agreed_terms' );
	        }
	    } ) );
	    
		return $this->output( $form );
	}

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.