Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

Здравствуйте. Сделал систему рецептов для крафта вещей: 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

Изменено пользователем TemKa_SD

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

Опубликовано:

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

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

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

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

$ingridient_value[2] - меч

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

Что именно?

Опубликовано:
  • Автор

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

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

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

$ingridient_value[2] - меч

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

Что именно?

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

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

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

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

 

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

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

Опубликовано:
  • Автор

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

Что делать если юзер выберет 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/.

Опубликовано:
  • Автор

Не поможете?

Опубликовано:

Ну да, позиций там много, а ингредиентов порядка 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 > Рецепты.

Опубликовано:
  • Автор

Хнык

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

Опубликовано:
  • Автор

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

 

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

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

Изменено пользователем TemKa_SD

Опубликовано:

Хнык

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

 

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'

Опубликовано:
  • Автор

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

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

Опубликовано:

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

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

Опубликовано:
  • Автор

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

Опубликовано:

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

Опубликовано:
  • Автор

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

Опубликовано:
  • Автор

Что-то не получается, как правильно написать условие: Если категориид = 5 то загружать клуб 4.

post-60255-0-65629200-1533745130_thumb.png

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.