Владимир

Владимир

С нами с 22 мая 2018; Место в рейтинге пользователей: #488

Снова про каталог ядра в открытом доступе или как получить 404 для core (nginx+apache)?

Хостинг sprinthost.ru — nginx самостоятельно обрабатывает запросы только к статическим данным, передавая все остальные Apache.

Следовательно мы получаем ошибку «Каталог ядра в открытом доступе», даже если htaccess переименован.

Выносить core не вариант.
Дополнение в htaccess не помогло:
IndexIgnore */*
<Files *.*>
    Order Deny,Allow
    Deny from all
</Files>

В техподдержке подсказали:
«Чтобы все обращения к директории core обрабатывались только Apache, можно изменить права доступа для этого каталога, установив запрет на всё для всех (цифра 0 в конце), например, 750, 640 и так далее. В этом случае запросы будут отклоняться с кодом ответа 403.»

Выставил 750 и да, теперь я получаю 403, доступа к файлу changelog.txt нет и надпись с ошибкой исчезла, но как мне получить теперь 404 ошибку по адресу site.ru/core/?

Владимир
24 июля 2018, 20:05
modx.pro
1 150
0

pdoResources и фильтр TV

Привет сообщество!

Есть раздел портфолио (parent id = 11) с работами, есть страницы услуг (parent id = 10).
На странице услуги необходимо вывести вывести работу, которая относится к этой услуге, я сделал так:

1) TV «show_in_service» (список, одиночный выбор), разделитель "," + «возможные значения»
@EVAL return $modx->runSnippet('select_portfolio_service');

2) Сниппет «select_portfolio_service» который тянет список услуг с id = 10
<?php
$output = '';
$q = $modx->newQuery('modResource');
$q->where(array(
	"parent"    => "10"
));
$q->sortby('pagetitle','ASC');
$q->select(array(
	"modResource.id",
	"modResource.pagetitle",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)){
	$data[] = "{$row['pagetitle']}=={$row['id']}";
}
$output = implode("||", $data);
return $output;

3) в работе портфолио выбираю необходимую услугу в этом TV и вывожу на странице самой услуги:
{$_modx->runSnippet('!pdoResources', [
	'tpl' => ''
	'parents' => 11,
	'includeTVs' => 'show_in_service'
	'tvFilters' => 'show_in_service===' ~ $_modx->resource.id
])}

С одиночным выбором всё работает отлично, но работы портфолио могут относиться к нескольким услугам, если сменить TV на множественный выбор, а в работе указать несколько услуг, то в массиве я уже получаю вместо [tv.show_in_service] => 17 — [tv.show_in_service] => 17||16||15 и соответственно выборка pdoResources не работает :(

Как правильно вывести каждую работу, которая относится к этой услуге?
Владимир
11 июня 2018, 01:47
modx.pro
1
3 164
0

Как перенести неопубликованные ресурсы в другой каталог

Есть структура вида:

Мероприятия (id1)
— Мероприятие 3
— Мероприятие 4

Архив мероприятий (id2)
— Мероприятие 1
— Мероприятие 2

Как сейчас всё работает: для каждого мероприятия выставляется дата снятия с публикации, после снятия с публикации мероприятие руками перетягивается в каталог «Архив мероприятий (id2)» и публикуется (чтобы анонимы могли видеть мероприятия из архива).

Вопрос: как это автоматизировать? полагаю что через cron, но не имею понятия как это сделать. Прошу помощи!
Владимир
26 мая 2018, 21:03
modx.pro
707
0

Подскажите правильную реализацию

Добрый день, на сайте есть 2 основных раздела — услуги и категории. Каждая услуга может находиться в нескольких категориях. Как правильно организовать такую структуру? Прикрепил картинкой для лучшего восприятия.

Мои мысли:
Внутри каждой услуги заводить TV множественный выбор и через @EVAL тянуть категории, далее отмечать необходимые, ну а в самой категории выводить отмеченные ID услуг через pdoResources?

1. Может есть более изящное решение? Или я на правильном пути?

2. Как быть с хлебными крошками и URL? Ведь хочется получить всё по-красоте:
/cat_1/service_1/
/cat_1/service_2/
/cat_2/service_1/
/cat_2/service_2/
Владимир
22 мая 2018, 19:48
modx.pro
3
1 001
0