Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
stud

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

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

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

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

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

×
×
  • Создать...