Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
TemKa_SD

Формирование фильтра

Recommended Posts

Здравствуйте. Сделал систему рецептов для крафта вещей: https://wc3.games/recept/ столкнулся с несколькими проблемами.

 

Основная проблема в том, что, не правильно формируются предметы для рецепта, они встают в неправильную позицию. Вот взять второй рецепт:


  •  
  • Меч света - должен быть на первой позиции.
  • Браслет прозрения на второй.
  • Третьим должен быть камень целителя.

 

Формирование происходит в той последовательности, в которой указаны ингредиенты в поле типа "список выбора", скажите, реально это как-то преобразовать в нужном мне виде? При этом, в самом фильтре ингредиенты должны идти по алфавиту.

 

Второй вопрос на засыпку: Эти рецепту относятся к этой карте: https://wc3.games/maps/4-heroic-town/ сами карты реализованы через "клубы", можно ли сделать интеграцию страницы с этим?

 

Шаблон:

 

{{$rowIds = array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{$iposted = $table ? $table->contentPostedIn : array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}

   {{$ingridient_key = explode( ',', $row->field_7);}}
   {{$ingridient_value = explode( ',', $row->customFieldDisplayByKey('ingredients', 'processed'));}}
     <li class="ipsGrid_span3 ipsStreamItem ipsStreamItem_contentBlock cTopMembers_member ipsAreaBackground_reset ipsPad ipsType_center">
         {{if $trophy}}
         <span class="ipsLeaderboard_trophy ipsLeaderboard_trophy_{$trophy}">
             <i class="fa fa-trophy"></i>
         </span>
         {{endif}}
         <span class='ipsUserPhoto ht_items ht_items-{$ingridient_key[0]}' data-ipstooltip _title="{$ingridient_value[0]}"></span>
         <div class='ipsStreamItem_container'>
             <div class='ipsStreamItem_header ipsSpacer_top ipsSpacer_half'>
                 <h2 class='ipsType_reset ipsStreamItem_title ipsTruncate ipsTruncate_line'>
                     {$ingridient_value[0]}
                 </h2>
             </div>

             <hr class='ipsHr ipsHr_small'>

             <ul class='ipsList_reset ipsGrid'>
                 <li class='ipsGrid_span5 ipsList_reset ipsType_center'>
                   <span class='ipsUserPhoto ht_items ht_items-{$ingridient_key[1]}' data-ipstooltip _title="{$ingridient_value[1]}"></span>
                 </li>
               <li class='ipsGrid_span1 ipsList_reset ipsType_center'>+</li>
                 <li class='ipsGrid_span5 ipsList_reset ipsType_center'>
                   <span class='ipsUserPhoto ht_items ht_items-{$ingridient_key[2]}' data-ipstooltip _title="{$ingridient_value[2]}"></span>
                 </li>
             </ul>
           	<hr class="ipsHr ipsHr_small">
           <p class="ipsType_reset ipsType_medium">{$row->customFieldDisplayByKey('contentfield_3', 'listing')|raw}</p>
         </div>
     </li>

{{endforeach}}

post-60255-0-41812200-1533426643_thumb.png

Edited by TemKa_SD

Share this post


Link to post
Share on other sites

Формирование происходит в той последовательности, в которой указаны ингредиенты в поле типа "список выбора", скажите, реально это как-то преобразовать в нужном мне виде?

Как пишите, так и отображается:

$ingridient_value[0] - браслет

$ingridient_value[1] - камень

$ingridient_value[2] - меч

можно ли сделать интеграцию страницы с этим?

Что именно?

Share this post


Link to post
Share on other sites

Как пишите, так и отображается:

$ingridient_value[0] - браслет

$ingridient_value[1] - камень

$ingridient_value[2] - меч

Да, я понимаю. Но мне нужно иначе реализовать, чтобы 0 - был меч, при этом, не передвигая список выбора.

Что именно?

Ну как минимум бреадкапм, чпу, шаблон подкрутить под клубы.

Share this post


Link to post
Share on other sites
Да, я понимаю. Но мне нужно иначе реализовать, чтобы 0 - был меч, при этом, не передвигая список выбора.

У Вас там много мечей.

Что делать если юзер выберет 3 меча?

 

Ну как минимум бреадкапм, чпу, шаблон подкрутить под клубы.

Еще более запутанно. Что куда нужно внедрить?

Share this post


Link to post
Share on other sites

У Вас там много мечей.

Что делать если юзер выберет 3 меча?

 

Ну да, позиций там много, а ингредиентов порядка 400. Если юзер выберет 3 произвольных меча - такого рецепта скорей всего не будет, именно по этим трем полям. Может вам помогут понять сами рецепты: https://w3map.jimdo.com/%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B/%D1%80%D0%B5%D1%86%D0%B5%D0%BF%D1%82%D1%8B

 

Еще более запутанно. Что куда нужно внедрить?

 

Вот в клубы https://wc3.games/maps/4-heroic-town/ нужно интегрировать страницу https://wc3.games/recept/ чтобы у странице было:

1. Бреадкамп вместо Главная > Рецепты было Главная > Карты > Heroic Town > Рецепты.

2. Интегрировать шаблон клубов к СТРАНИЦЕ, хотя бы ШАПКУ и меню.

3. ЧПУ вместо https://wc3.games/recept/ было https://wc3.games/maps/4-heroic-town/recept/.

Share this post


Link to post
Share on other sites

Не поможете?

Share this post


Link to post
Share on other sites

Ну да, позиций там много, а ингредиентов порядка 400. Если юзер выберет 3 произвольных меча - такого рецепта скорей всего не будет, именно по этим трем полям. Может вам помогут понять сами рецепты: https://w3map.jimdo....%BF%D1%82%D1%8B

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

Что-то типа

{{$first = '';}}
{{$things = array('sword1', 'sword2', 'sword3');}}
{{foreach explode(',', $row->field_7) as $key}}
{{if in_array($key, $things)}}
	{{$first = $key;}}
	{{break;}}
{{endif}}
{{endforeach}}

 

 

Создайте папки в Pages

folders.png

2. Интегрировать шаблон клубов к СТРАНИЦЕ, хотя бы ШАПКУ и меню.

В шаблон страницы добавляете

{{ $club = null; try { $club = \IPS\Member\Club::load(1); } catch (\OutOfRangeException $e) {} }}
{{if $club}}
{{\IPS\Output::i()->breadcrumb = array(array(\IPS\Http\Url::internal('app=core&module=clubs&controller=directory', 'front', 'clubs_list'), \IPS\Member::loggedIn()->language()->addToStack('module__core_clubs')), array($club->url(), $club->name));}}
{{if \IPS\Settings::i()->clubs_header != 'sidebar'}}
	{template="header" group="clubs" app="core" params="$club"}
{{endif}}
{{endif}}

1. Бреадкамп вместо Главная > Рецепты было Главная > Карты > Heroic Town > Рецепты.

Share this post


Link to post
Share on other sites

Хнык

post-60255-0-83149300-1533632831_thumb.png

Share this post


Link to post
Share on other sites

https://wc3.games/recept/ браслет прозрения во втором рецепте пропал.

 

И еще по шапке клуба, есть может какой-то функционал, чтобы вставить ссылку в меню клуба? Или нужно через шаблон ток? Какие переменные тут будут (см скрин)?

post-60255-0-65388200-1533634661_thumb.png

Edited by TemKa_SD

Share this post


Link to post
Share on other sites

Хнык

Значит нужно что-то другое придумывать.

 

https://wc3.games/recept/ браслет прозрения во втором рецепте пропал.

 

Я же только пример дал.

{{$things = array('sword1', 'sword2', 'sword3');}}
{{$count = count($things);}}
{{foreach $rows as $row}}
{{$resultKey = null;}}
{{$ingridient_key = explode(',', $row->field_7);}}
{{$ingridient_value = explode( ',', $row->customFieldDisplayByKey('ingredients', 'processed'));}}
<li class="ipsGrid_span3 ipsStreamItem ipsStreamItem_contentBlock ipsAreaBackground_reset ipsPad ipsType_center">
	{{foreach $ingridient_key as $k => $v}}
		{{if in_array($v, $things)}}
			{{$resultKey = $k;}}
			{{break;}}
		{{endif}}
	{{endforeach}}
	{{if $resultKey !== null}}
		<span class='ipsUserPhoto ht_items ht_items-{$ingridient_key[$resultKey]}' data-ipstooltip _title="{$ingridient_value[$resultKey]}"></span>
		<div class='ipsStreamItem_container'>
			<div class='ipsStreamItem_header ipsSpacer_top ipsSpacer_half'>
				<h2 class='ipsType_reset ipsStreamItem_title ipsTruncate ipsTruncate_line'>
				  {$ingridient_value[$resultKey]}
				</h2>
			</div>
			<hr class='ipsHr ipsHr_small'>
			<ul class='ipsList_reset ipsGrid'>
				{{foreach $ingridient_key as $k => $v}}
					{{if $resultKey != $k}}
						<li class='ipsGrid_span5 ipsList_reset ipsType_center'>
							<span class='ipsUserPhoto ht_items ht_items-{$ingridient_key[$k]}' data-ipstooltip _title="{$ingridient_value[$k]}"></span>
						</li>
						{{if ($count-1) != $k}}
							{{if (($count-1) == $resultKey) and (($resultKey-1) == $k)}}
								{{continue;}}
							{{endif}}
							<li class='ipsGrid_span1 ipsList_reset ipsType_center'>+</li>
						{{endif}}
					{{endif}}
				{{endforeach}}
			</ul>
			<hr class="ipsHr ipsHr_small">
			<p class="ipsType_reset ipsType_medium">{$row->customFieldDisplayByKey('contentfield_3', 'listing')|raw}</p>
		</div>
	{{else}}
		Какой-то левый рецепт
	{{endif}}
</li>
{{endforeach}}

 

есть может какой-то функционал, чтобы вставить ссылку в меню клуба?

Нет.

Какие переменные тут будут (см скрин)?

request.app == 'cms' and request.module == 'pages' and request.controller == 'page'

Share this post


Link to post
Share on other sites

Спасибо огромное, вроде работает. Подскажите еще как вот это убрать и всё )))

post-60255-0-44532400-1533651928_thumb.png

Share this post


Link to post
Share on other sites

Подскажите еще как вот это убрать и всё )))

Поправил пост.

Share this post


Link to post
Share on other sites

Никаких изменений, кеш чистил.

Share this post


Link to post
Share on other sites

Дайте доступ в АЦ.

Share this post


Link to post
Share on other sites

Зарегитесь, потом удалю аккаунт. А то у меня вход через соц сети, от них доступ давать нужно.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...