Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация 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.

Блок с произвольным набором данных

Опубликовано:

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

Фид блоки довольно удобны, но в них можно только жестко указывать, с каких, например, форумов брать темы. Т.е. выборка идет по forum_id.

А если я хочу более гибко выбирать какие данные передавать в мой фид блок, из разных таблиц, допустим? Можно это как-то средствами создания блоков в IP.Contente сделать? Вроде как, тип блока "Plugin" то, что нужно. Но из того, что он дальше предлагает (Site Poll, Online Friends, etc), мне оно как-то не сильно подходит.

 

Или только перегружать скин отвечающий за главную IP.Contentа?

Рекомендованные сообщения

Опубликовано:
  • Автор

Разобрался как делать Plugin блоки, только одного не пойму (кстати, инфы по этой части очень мало, это все, что нашел: http://community.invisionpower.com/resources/documentation/index.html/_/documentation/administrator-control-panel/ipcontent/blocks-r177 ).

Вот на примере плагин блока с юзерами онлайн (стандартный, в ипб есть):

 

public function returnPluginInfo()
{
	return array(
				'key'			=> 'online_users',
				'name'			=> $this->lang->words['plugin_name__online_users'],
				'description'	=> $this->lang->words['plugin_description__online_users'],
				'hasConfig'		=> false,
				'templateBit'	=> 'block__online_users',
				);
}

 

templateBit = 'block__online_users' - это название шаблона, который появится на 4 шаге создания блока "Template"?

 

В стандартных ипб плагин блоках делают так:

 

public function executePlugin( $block )
{
	...

	$templateBit	= $pluginConfig['templateBit'] . '_' . $block['block_id'];

	ob_start();
		$_return	= $this->registry->output->getTemplate('ccs')->$templateBit( $block['block_name'], $active );
		ob_end_clean();
		return $_return;
}

 

getTemplate('ccs') - означает, что мы берем далее шаблон из группы 'ccs', но такой нету в разделе редактирования шаблонов в АЦ, там есть skin_ccs_global. Но я в нем не нашел ни online_users ни любого другого templateBit из стандартных плагин блоков ипб.

 

Посмотрел еще в АЦ в разделе шаблонов для блоков - там тоже нету ничего похожего.

Итак, что такое templateBit или как мне вызвать нужный шаблон для моего плагин блока? :)

Опубликовано:

У IP.Content своя собственная независимая система шаблонов. Они создаются/редактируются отдельно, в разделе Templates, подразделе Block Templates на странице этого приложения в админке, и вызываются коротким обращением $this->registry->output->getTemplate('ccs')->имя_шаблона(параметры).

 

Screenshot-74.png

 

От обычных шаблонов их отделили ради:

- удобства поиска - рядом с выводимым контентом,

- красоты - можно загружать превьюшки шаблонов,

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

Опубликовано:
  • Автор

Смущает, что в подразделе Block Templates можно создать кучу шаблонов с одним и тем же именем :)

Как тогда выбрать нужный?

Опубликовано:

На самом деле нельзя. Т.е. вы можете создать много блоков с однинаковыми "клиентскими именами", но это всего лишь текстовая строка для удобства и красоты пользователя. "Техническое" же имя шаблона публично нигде не доступно и генерируется автоматически. Для его задействования и используется $templateBit, который получает "техническое название" со страницы настроек блока блока из селектора существующих темплейтов :)

 

Второй вариант - создание своего шаблона с "красивым" именем через xml. Посмотрите на файл /admin/applications_addon/ips/ccs/xml/plugin_block_templates.xml. Там хранятся premade-шаблоны, которые названы "красиво". Можете создать такой же файл со своими блоками и импортировать/добавить к своему приложению для авто импорта. Тогда ваши шаблоны получат фиксированные имена и их можно будет вызывать из кода "железно", без необходимости выбора нужного шаблона в настройках блока вручную.

Опубликовано:
  • Автор
Для его задействования и используется $templateBit, который получает "техническое название" со страницы настроек блока блока из селектора существующих темплейтов

Можно на этом месте немного по подробнее? Не совсем понял вас.

 

На сколько я понимаю, вы имеете ввиду это:

 

public function returnPluginInfo() {

  return array(
                   'key'           => 'online_users',
                   'name'          => 'ololo',
                   'description'   => 'ololo',
                   'hasConfig'     => false,
                   'templateBit'   => 'block__online_users',
                   );
  }

Вот тут 'templateBit' => 'block__online_users'. По логике это должно быть каким-нибудь именем шаблона ("клиентским" или "техническим", хоть каким-нибудь), который будет по умолчанию предложен при создании плагин-блока данного типа, так ведь? Или я вообще не правильно понимаю назначение этого templateBit? Я заметил, что templateBit во всех случаях присваивают строку, начинающуюся на block__ а дальше key данного плагин-блока. Не понимаю этой логики.

 

Дальше, во всех примерах (стандартные в ипб которые, никаких внятных мануалов по данному разделу я не нашел) этот templateBit используют как я писал уже:

 

public function executePlugin( $block ) {

  ...

  $pluginConfig = $this->returnPluginInfo();
  $templateBit  = $pluginConfig['templateBit'] . '_' . $block['block_id'];

  ob_start();
  $_return = $this->registry->output->getTemplate('ccs')->$templateBit( $block['block_name'], $data );
  ob_end_clean();
  return $_return;
}

 

Вот тут templateBit = $pluginConfig['templateBit'] . '_' . $block['block_id'];

Что там? Шаблон? Он создается вручную в АЦ в разделе Block Templates?

 

Если не пойму этого, попробую через xml сделать:)

Опубликовано:
  • Автор

С ума сойти. В /admin/applications_addon/ips/ccs/xml/plugin_block_templates.xml дописал вручную свой шаблон. В <tpb_name> прописал нужное мне имя, которое я использую в templateBit в методе returnPluginInfo. Все сделал по образу и подобию стандартного.

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

Еще очень разочаровала, что в АЦ в разделе Block Templates при создании шаблона для блока невозможно указать какие параметры должен принимать этот шаблон.

Кстати, пробежался взглядом по шаблонам, которые лежат в /admin/applications_addon/ips/ccs/xml/plugin_block_templates.xml так там вообще нету ни одного шаблона из тех, которые я вижу в админке в разделе шаблонов для боков (смотрел по содержимому элемента <tpb_content>).

Как тут не сойти с ума?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.