Перейти к содержимому
Русский язык для Invision Community 5

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

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

Фид блоки довольно удобны, но в них можно только жестко указывать, с каких, например, форумов брать темы. Т.е. выборка идет по 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>).

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

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.