Skocz do zawartości
  • 0
TENAZ

Jak utworzyć widget?

Pytanie

Witam,

Zainstalowałem na forum tryb developera, wszystko fajnie śmiga, lecz podczas dodania widgetu w tym trybie nie mogę nic tam dodać, jak to zrobić, aby wyświetlał się tam jakiś tekst np.: test

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

25 odpowiedzi na to pytanie

Polecane posty

  • 0

W trybie dev dodajesz wszystko tak jak normalnie, tyle że pluginy widgety muszą być w wersji dev, tzn domyślne aplikacje to mają jak pobierzesz paczkę ze strony ips'u, ale dodatkowe rzeczy nie mają takich danych

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner pobrałem ze strony IPS'u, lecz nie widzę tam opcji dodania tekstu/zawartości do tego. Ręcznie trzeba? Jak tak to gdzie dokładnie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ale tworzysz własny widget czy jak bo nie wiem co chcesz osiągnąć i przy użyciu czego?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

ok, a jaki masz kod? bo musisz albo utworzyć szablon dla takiego widgetu albo zwrócić z niego tekst i po wstawieniu na stronę będzie się wyświetlać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner podstawowy:

<?xml version="1.0" encoding="UTF-8"?>
<plugin name="test" version_long="10000" version_human="1.0.0" author="xxx" website="xxx" update_check=""><hooks><hook type="S" class="\IPS\Theme\class_forums_front_index" filename="test"><![CDATA[//<?php

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

class hook6 extends _HOOK_CLASS_
{

/* !Hook Data - DO NOT REMOVE */
public static function hookData() {
 return array_merge_recursive( array (
  'index' => 
  array (
    0 => 
    array (
      'selector' => 'section > ol.ipsList_reset.cForumList[data-controller=\'core.global.core.table, forums.front.forum.forumList\'] > li.cForumRow.ipsBox.ipsSpacer_bottom',
      'type' => 'add_after',
      'content' => 'eqweqweweqewqeqwe',
    ),
  ),
), parent::hookData() );
}
/* End Hook Data */


}
]]></hook></hooks><tasks/><widgets><widget key="test" class="\IPS\Widget" restrict="sidebar,cms" default_area="" allow_reuse="" menu_style="menu" embeddable=""><![CDATA[<?php
/**
 * @brief		test Widget
 * @author		<a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
 * @copyright	(c) 2001 - 2016 Invision Power Services, Inc.
 * @license		http://www.invisionpower.com/legal/standards/
 * @package		IPS Community Suite
 * @subpackage	test
 * @since		14 Jan 2017
 * @version		SVN_VERSION_NUMBER
 */

namespace IPS\plugins\<{LOCATION}>\widgets;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * test Widget
 */
class _test extends \IPS\Widget
{
	/**
	 * @brief	Widget Key
	 */
	public $key = 'test';
	
	/**
	 * @brief	App
	 */
	public $app = '';
		
	/**
	 * @brief	Plugin
	 */
	public $plugin = '<{ID}>';
	
	/**
	 * Initialise this widget
	 *
	 * @return void
	 */ 
	public function init()
	{
		// Use this to perform any set up and to assign a template that is not in the following format:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' ), $this->key ) );
		// If you are creating a plugin, uncomment this line:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) );
		// And then create your template at located at plugins/<your plugin>/dev/html/test.phtml
		
		$this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', 'core', 'front' ), $this->key ) );
	}
	
	/**
	 * Specify widget configuration
	 *
	 * @param	null|\IPS\Helpers\Form	$form	Form object
	 * @return	null|\IPS\Helpers\Form
	 */
	public function configuration( &$form=null )
	{
 		if ( $form === null )
		{
	 		$form = new \IPS\Helpers\Form;
 		}

 		// $$form->add( new \IPS\Helpers\Form\XXXX( .... ) );
 		// return $form;
 	} 
 	
 	 /**
 	 * Ran before saving widget configuration
 	 *
 	 * @param	array	$values	Values from form
 	 * @return	array
 	 */
 	public function preConfig( $values )
 	{
 		return $values;
 	}

	/**
	 * Render a widget
	 *
	 * @return	string
	 */
	public function render()
	{
		return "";
		// Use $this->output( $foo, $bar ); to return a string generated by the template set in init() or manually added via $widget->template( $callback );
		// Note you MUST route output through $this->output() rather than calling \IPS\Theme::i()->getTemplate() because of the way widgets are cached
	}
}]]></widget></widgets><htmlFiles/><cssFiles/><jsFiles/><resourcesFiles/><lang/><versions/></plugin>

 

Edytowano przez TENAZ

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
public function render()
	{
		return "";
		// Use $this->output( $foo, $bar ); to return a string generated by the template set in init() or manually added via $widget->template( $callback );
		// Note you MUST route output through $this->output() rather than calling \IPS\Theme::i()->getTemplate() because of the way widgets are cached
	}

no i tutaj masz że widget ma zwracać pusty ciąg.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Nie, do tego musisz mieć szablon, albo zrobić to normalnym php

\IPS\Member::load( 4 )->link()

I poczytaj może dokumentacje IPS'u jak chcesz kodować

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner a może wstawić w return takie coś:

{template="test" group="plugins" location="global" app="core"}

i tam zapisać to:{member="link()" id="4" raw="true"}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Nie. masz napisane w komentarzu pod returnem jak masz zwracać szablon

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

w sensie masz w zmiennej $test tekst i chcesz go pokazać czy jak?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner 

$test = "{member='link()' id='4' raw='true'}";
$this->output( $test );

Takie coś ma być?

Edytowano przez TENAZ

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Nie. możesz dać output() samo a to co usilnie chcesz wstawić wszędzie a nie umiesz tego wstawić wklejasz do szablonu, który znajduje się w takiej lokalizacji:

core -> front -> widgets

A bit szablonu nosi nazwę test

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner dałem:

$this->output();

Dodałem do szablonu tekst: test i podczas dodawania bloku wyskoczył error w bloku (Sam napis: Error)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
/**
	 * @brief	Widget Key
	 */
	public $key = 'test';
	
	/**
	 * @brief	App
	 */
	public $app = '';
		
	/**
	 * @brief	Plugin
	 */
	public $plugin = '<{ID}>';
	
	/**
	 * Initialise this widget
	 *
	 * @return void
	 */ 
	public function init()
	{
		// Use this to perform any set up and to assign a template that is not in the following format:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' ), $this->key ) );
		// If you are creating a plugin, uncomment this line:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) );
		// And then create your template at located at plugins/<your plugin>/dev/html/test.phtml
		
		$this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', 'core', 'front' ), $this->key ) );
	}

a ten fragment pliku wygląda tak samo?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner

/**
 * test Widget
 */
class _test extends \IPS\Widget
{
	/**
	 * @brief	Widget Key
	 */
	public $key = 'test';
	
	/**
	 * @brief	App
	 */
	public $app = '';
		
	/**
	 * @brief	Plugin
	 */
	public $plugin = '<{ID}>';
	
	/**
	 * Initialise this widget
	 *
	 * @return void
	 */ 
	public function init()
	{
		// Use this to perform any set up and to assign a template that is not in the following format:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' ), $this->key ) );
		// If you are creating a plugin, uncomment this line:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) );
		// And then create your template at located at plugins/<your plugin>/dev/html/test.phtml
		$this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', 'core', 'front' ), $this->key ) );
	}
	
	/**
	 * Specify widget configuration
	 *
	 * @param	null|\IPS\Helpers\Form	$form	Form object
	 * @return	null|\IPS\Helpers\Form
	 */
	public function configuration( &$form=null )
	{
 		if ( $form === null )
		{
	 		$form = new \IPS\Helpers\Form;
 		}

 		// $$form->add( new \IPS\Helpers\Form\XXXX( .... ) );
 		// return $form;
 	} 
 	
 	 /**
 	 * Ran before saving widget configuration
 	 *
 	 * @param	array	$values	Values from form
 	 * @return	array
 	 */
 	public function preConfig( $values )
 	{
 		return $values;
 	}

	/**
	 * Render a widget
	 *
	 * @return	string
	 */
	public function render()
	{
		$this->output();
		// Use $this->output( $foo, $bar ); to return a string generated by the template set in init() or manually added via $widget->template( $callback );
		// Note you MUST route output through $this->output() rather than calling \IPS\Theme::i()->getTemplate() because of the way widgets are cached
	}

 

Edytowano przez TENAZ

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

a masz taki szablon stworzony? jak tworzysz plugin to w katalogu pligina/dev/html

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

ale jak jesteś w trybie dev. to ma być w Twoim pluginie

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

No przecież pisze w trybie dev jak tworzysz plugin to plik szablonu ma być w dev/html tego pluginu

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.