Jump to content

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


TemKa_SD
 Share

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
Link to comment
Share on other sites

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

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

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

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

$ingridient_value[2] - меч

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

Что именно?

Link to comment
Share on other sites

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

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

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

$ingridient_value[2] - меч

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

Что именно?

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

Link to comment
Share on other sites

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

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

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

 

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

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

Link to comment
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/.

Link to comment
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 > Рецепты.

Link to comment
Share on other sites

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

 

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

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

Edited by TemKa_SD
Link to comment
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'

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

Link to comment
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
 Share

  • Recently Browsing   0 members

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