foxayb
@foxayb
newbie

Как загрузить данные нажав на «Раскрыть блок»?

Понимаю, что есть Серверная часть, есть клиентская, но не знаю как решить следующую задачу:
Необходимо чтобы пользователь нажимал на "Раскрыть фильтр" и туда загружалась информация (св-ва фильтра).

Сейчас св-ва фильтра грузятся всегда:
5f7f54006f9b8030954294.jpeg

А необходимо чтобы они подгружались только при раскрытии:
5f7f550351c15893149218.jpeg

Т.к. сейчас они грузятся всегда то и выглядит это на стороне PHP вот так:
php-код
if (in_array($type, $frontendTypes)) {
...
		} else {  //фильтры загружаются начиная с этого момента
			$htmlOpt = DispatcherWpf::applyFilters('getTaxonomyOptionsHtml', $htmlOpt, array(
				'type' => $type,
				'settings' => $filter,
				'terms' => $productAttr,
				'selected' => $attrSelected,
				'showed' => $showedTerms,
				'counts' => $countsTerms,
				'excludes' => $excludeIds,
				'includes' => false,
				'display' => $layout,
				'class' => $inLineClass
			));
		}

		$blockStyle = ( !$showFilter || ( !$show_all_atts && self::$isLeerFilter ) ? 'display:none;' : '' ) . $blockStyle;
		if (!empty($blockStyle)) {
			$this->setFilterCss('#' . self::$blockId . ' {' . $blockStyle . '}');
		}

		$noActive  = ReqWpf::getVar($filterName) ? '' : 'wpfNotActive';
		$noActive  = !ReqWpf::getVar($filterName) && $hidden_atts ? 'wpfHidden' : $noActive;
		$showCount = $filter['settings']['f_show_count'] ? ' wpfShowCount' : '';

		$html  =
			'<div id="' . self::$blockId .
				'" class="wpfFilterWrapper ' . $noActive . $showCount .
				'" data-filter-type="' . $filter['id'] .
				'" data-display-type="' . $type .
				'" data-get-attribute="' . $filterName .
				'" data-query-logic="' . $logicSlug .
				'" data-slug="' . esc_attr($filterNameSlug) .
				'" data-radio="' . ( 'radio' === $type ? '1' : '0' ) .
				'" data-taxonomy="' . $attrName .
				'" data-label="' . $attrLabel .
				'" data-show-all="' . ( (int) $show_all_atts ) . '"' . $filter['blockAttributes'] .
			'>';
		$html .= $this->generateFilterHeaderHtml($filter, $filterSettings);
		$html .= $this->generateDescriptionHtml($filter);
		$html .= $this->generateSearchFieldList('<div class="wpfCheckboxHier">' . $htmlOpt . '</div>', $settings, $labels);
		$html .= '</div>';//end wpfFilterContent
		$html .= '</div>';//end wpfFilterWrapper

		return $html;
	}


Запрос
$html .= $this->generateSearchFieldList('<div class="wpfCheckboxHier">' . $htmlOpt . '</div>', $settings, $labels);

выводит фильтры под заголовком (сейчас сразу)
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
Варианты:
1) (попроще) грузить - всё же сразу, но изначально просто блок с вариантами скрыт (CSS). А при нажатии на "+" блок отображается (JS или jQuery).
2) (посложнее) изначально вообще не грузить варианты, при нажатии на "+" средствами JS производить AJAX запрос к специальному php-файлу, который отдаст эти варианты, и на странице вывести эти варианты в нужном виде.
Я бы выбрал 1 вариант в данном случае.
Но в вопросе больше намёк на 2 вариант ("необходимо чтобы они подгружались только при раскрытии"). Хотя, возможно, это лишнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RecruitIT Москва
от 100 000 до 160 000 ₽
Сбер Москва
До 240 000 ₽
RecruitIT Москва
от 120 000 до 150 000 ₽
21 окт. 2020, в 21:24
7000 руб./за проект
21 окт. 2020, в 20:16
400000 руб./за проект
21 окт. 2020, в 19:57
5000 руб./за проект