Jump to content

id категории из под виджета


Exception

Recommended Posts

Пока ищу, может кто сталкивался уже. Нужна функция которая может получить id категории в которой мы находимся
В этих никакой инфы не нашел:

\IPS\Request::i();
\IPS\Dispatcher::i();
\IPS\Output::i();

 

Edited by ZIKURIK
Link to comment
Share on other sites

6 часов назад, Respected сказал:

Для какого урла например ?

имеешь ввиду достать id из url адреса? я думал про это, но нужно обрабатывать id категории находясь в самой категории например в files/category/3-mycategory/ и так же вывести id категории когда я уже нахожусь в записи /files/file/2-myfile/ (2 это уже id записи). Должен быть метод достать данные такие глобально из обоих вариантов?

Edited by ZIKURIK
Link to comment
Share on other sites

Это свойство container() для файла (итема).  Что-то глобальное - сомневаюсь, судя по коду они стараются работать в пределах одной сущности, т.е. если конечный элемент - получают контейнер, если запрос по категории, то она есть в Request

Link to comment
Share on other sites

Сорри, не разглядел "виждета".

Думаю, в виджете только анализом \IPS\Dispatcher::i()->* (appl, module, controller) и получением соотв. данных из Request или итема.

Link to comment
Share on other sites

1 час назад, Desti сказал:

Сорри, не разглядел "виждета".

Думаю, в виджете только анализом \IPS\Dispatcher::i()->* (appl, module, controller) и получением соотв. данных из Request или итема.

Жесть папаша вот это они курят там явно что-то, я еле дошел до этого:

$cat_furl = \IPS\Dispatcher::i()->dispatcherController->file->container()->url()->friendlyUrlComponent;

обновили бы они внутренний код своих приложений, я так понял CMS новее их всех? Ибо там присутствует dispatcher внутри который тупо выводит нужные данные и в категории и в записи (писал выше)

Link to comment
Share on other sites

20 минут назад, ZIKURIK сказал:

вот это они курят там явно что-то

На коленках писанный код группой энтузиастов.

Link to comment
Share on other sites

		if ( isset( \IPS\Request::i()->id ) )
		{
			if ( \IPS\Dispatcher::i()->application->directory == 'downloads' )
			{
				if ( \IPS\Dispatcher::i()->controller == 'browse' )
				{
					$load = \IPS\downloads\Category::load( \IPS\Request::i()->id );
					$myvar = $load->myvar;
				}
				elseif ( \IPS\Dispatcher::i()->controller == 'view' )
				{
					$file = \IPS\downloads\File::load( \IPS\Request::i()->id );
					$load = \IPS\downloads\Category::load( $file->cat );
					$myvar = $load->myvar;
				}
			}
		}

Может проще как то получить экземпляр загруженных классов из виджета? Но что-то я не нашел такой возможности

Link to comment
Share on other sites

34 минуты назад, ZIKURIK сказал:

Может проще как то

А что вас смущает? Хотите побыстрее - обращайтесь напрямую к БД, а вообще код вполне себе. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...