Мартин Очоа
С нами с 30 мая 2017; Место в рейтинге пользователей: #352Спрятать от доступа категории, но оставить товары из них в выборке mFilter2
Привет!
Подскажите, как сделать так, чтобы категории были недоступны посетителям сайта по их url (нельзя было их открыть на фронтенде) — хочу оставить категории, только через фильтр. Но при этом вложенные в эти категории товары показывались в результатах выбора mFilter2.
Ситуация: в фильтре mFilter2 добавляю подкатегории текущей категории:
Выбранные категории в фильтре преобретают красивые url, мета-теги и т.д. с помощью дополнения seoFilter.
site.ru/category1/ и т.д.
Повторю, задача: скрыть категории, чтобы пользователь не мог попасть на них по url.
Подскажите, как сделать так, чтобы категории были недоступны посетителям сайта по их url (нельзя было их открыть на фронтенде) — хочу оставить категории, только через фильтр. Но при этом вложенные в эти категории товары показывались в результатах выбора mFilter2.
Ситуация: в фильтре mFilter2 добавляю подкатегории текущей категории:
[[!mFilter2?
&limit=`15`
&parents=`[[*id]]`
&element=`msProducts`
&setMeta=`1`
&filters=`
parent:categories,
`
&aliases=`
resource|parent==category,
`
&_filterOptions=`{"autoLoad":0}`
&tpls=`tpl.msProducts.row2`
&class=`msProduct`
&sort=`ms_product|menuindex:asc`
&tplOuter=`tpl.mFilter2.outer.2`
&paginator=`pdoPage`
&ajaxMode=`scroll`
]]
Выбранные категории в фильтре преобретают красивые url, мета-теги и т.д. с помощью дополнения seoFilter.
site.ru/category1/ и т.д.
Повторю, задача: скрыть категории, чтобы пользователь не мог попасть на них по url.
mFilter2 - из метода boolean убрать значение "нет"
Здравствуйте!
Помогите, пожалуйста, доработать метод фильтрации. У товара есть поле ms|favorite. У некоторых товаров это поле отмечено (чекбокс). Нужно в фильтре вывести только одну галочку, по клику на которую бы фильтровались товары. Можно выводить методом boolean, но тогда будет выбор «да» и «нет».
Нашел направление, куда копать.
Создал новый метод Positive, присвоил:
Грубо говоря, из метода boolean, который я взял за основу, нужно убрать те варианты, где поле не отмечено (нулевое?). Далее чистый boolean с исправленными названиями на positive.
Помогите, пожалуйста, доработать метод фильтрации. У товара есть поле ms|favorite. У некоторых товаров это поле отмечено (чекбокс). Нужно в фильтре вывести только одну галочку, по клику на которую бы фильтровались товары. Можно выводить методом boolean, но тогда будет выбор «да» и «нет».
Нашел направление, куда копать.
Создал новый метод Positive, присвоил:
&filters=`ms|favorite:positive`
Но дальше эксперименты-правки не увенчались успехом. Грубо говоря, из метода boolean, который я взял за основу, нужно убрать те варианты, где поле не отмечено (нулевое?). Далее чистый boolean с исправленными названиями на positive.
<?php
class myCustomFilter extends mse2FiltersHandler {
public function buildPositiveFilter(array $values, $name = '') {
if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
return array();
}
$results = array();
foreach ($values as $value => $ids) {
$empty = empty($value) || (is_numeric($value) && (int)$value === 0);
$title = $empty
? $this->modx->lexicon('mse2_filter_positive_no')
: $this->modx->lexicon('mse2_filter_positive_yes');
if (!isset($results[$title])) {
$results[$title] = array(
'title' => $title,
'value' => (int)!$empty,
'type' => '<b>positive</b>',
'resources' => $ids,
);
}
else {
$results[$title]['resources'] = array_merge($results[$title]['resources'], $ids);
}
}
ksort($results);
return $results;
}
public function filterPositive(array $requested, array $values, array $ids) {
$matched = array();
$tmp = array_flip($ids);
foreach ($requested as $value) {
foreach ($values as $k => $resources) {
$empty = empty($k) || (is_numeric($k) && (int)$k === 0);
if ((empty($value) && !$empty) || (!empty($value) && $empty)) {
continue;
}
foreach ($resources as $id) {
if (isset($tmp[$id])) {
$matched[] = $id;
}
}
}
}
return $matched;
}
}
Fenom вырубается скриптами в шапке
День добрый!
Не работает FENOM на странице интернет-магазина minishop2 (есть дополнения mSearch2 и seofilter).
Комментирую блок [[!mFilter2… ]] — тогда дальнейшний проверочный код на странице работает:
Сравнением кода шапки с работающим блоком [[!mFilter2… ]] и закомментированным, выяснил, что в шапку подставляются такие стили и скрипты (ниже код). Наверное в них и проблема? В каких файлах лежат то, что подставляется сюда — хочу обернуть содержимое {ignore}{/ignore}.
Не понятно, почему разработчики сразу их не комментируют {ignore}{/ignore}, если это выбивает Fenom.
Не работает FENOM на странице интернет-магазина minishop2 (есть дополнения mSearch2 и seofilter).
Комментирую блок [[!mFilter2… ]] — тогда дальнейшний проверочный код на странице работает:
{if $_modx->resource.id == 14}
Работает!!!
{/if}
Нагуглил, что Fenom может отрубаться из-за присутствия на странице открывающей фигурной скобки и последующего символа без побела. Сравнением кода шапки с работающим блоком [[!mFilter2… ]] и закомментированным, выяснил, что в шапку подставляются такие стили и скрипты (ниже код). Наверное в них и проблема? В каких файлах лежат то, что подставляется сюда — хочу обернуть содержимое {ignore}{/ignore}.
Не понятно, почему разработчики сразу их не комментируют {ignore}{/ignore}, если это выбивает Fenom.
Редирект URL со слэшем в конце на без слэша
Это не вопрос, а решение.
Ниже код плагина, который решает задачу: редирект URL со слэшем в конце на URL без слэша в конце.
Гугл/яндекс в течение часа дал ответ на обратную задачу (редирект без слэша в конце на со слэшем).
Делюсь доработкой с надеждой, что это вылезет в топ и поможет сохранить время следуюшим поколениям :)
Также сделаны настройки по пунктам 1-6 отсюда.
Плагин настраивается на событие OnLoadWebDocument:
Ниже код плагина, который решает задачу: редирект URL со слэшем в конце на URL без слэша в конце.
Гугл/яндекс в течение часа дал ответ на обратную задачу (редирект без слэша в конце на со слэшем).
Делюсь доработкой с надеждой, что это вылезет в топ и поможет сохранить время следуюшим поколениям :)
Также сделаны настройки по пунктам 1-6 отсюда.
Плагин настраивается на событие OnLoadWebDocument:
<?php
if ($modx->event->name == 'OnLoadWebDocument') {
$request = $_SERVER['REQUEST_URI'];
$params = '';
if (strpos($request, '?') !== false) {
list($request, $params) = explode('?', $request);
}
$uri = $request;
if(!empty($uri) && strpos($uri, '.') === false && substr($uri, -1, 1) == '/') {
$uri = substr($uri, 0, -1);
if (!empty($params)) {
$uri .= '?' . $params;
}
$modx->sendRedirect($uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
}