1 Отредактировано Сергей Дмитриевич (13.06.2016 18:29:21)

Тема: Страница регистрации вместо 404-страницы

Подскажите, как выдавать посетителю страницу с формой регистрацией вместо 404-страницы ошибки, если страница, на которую он переходит с закрытым доступом?

Поясню.
Скачать прайс-лист в XLS может только зарегистрированный пользователь, при этом ссылка на страницу с прайсом ему видна, а сам прайс доступен только после регистрации.

Сейчас, если поставить убрать у страницы статус "Публичная", то ее никто не видит и выходит 404-страница. Также если в правах ограничить доступ к этой странице, то тоже выдается 404 страница.

Простыми словами: Как сделать так, что если доступ к странице ограничен только одной группе пользователей, выдавать страницу с формой регистрации, а не 404-ошибку.

Повысить оценку Понизить оценку

2

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:

Подскажите, как выдавать посетителю страницу с формой регистрацией вместо 404-страницы ошибки, если страница, на которую он переходит с закрытым доступом?

Поясню.
Скачать прайс-лист в XLS может только зарегистрированный пользователь, при этом ссылка на страницу с прайсом ему видна, а сам прайс доступен только после регистрации.

Сейчас, если поставить убрать у страницы статус "Публичная", то ее никто не видит и выходит 404-страница. Также если в правах ограничить доступ к этой странице, то тоже выдается 404 страница.

Простыми словами: Как сделать так, что если доступ к странице ограничен только одной группе пользователей, выдавать страницу с формой регистрации, а не 404-ошибку.


Думаю подойдёт вариант:

{if $current_user->inGroup('VIP-User')}
          <a href="/vip-price/">Прайс для VIP клиентов</a>
{elseif $is_auth}
          <a href="/price/">Прайс для авторизованных</a>
{else}
           <a href="/auth/">Зарегистрироваться для просмотра прайса</a>
{/if}

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Да, спасибо, такая конструкция работает и имеет право на существование. Но!

Если имя файла прайса меняется при каждой загрузке, а это раз в неделю примерно, то каждый раз нужно менять tpl-файл.

Я же думал, что может это можно как-то сделать с помощью настроек, а не создания шаблонов и написания кода.
Просто, чтобы менеджер зашел и загрузил файл и больше ни о чем не думал.

Если бы в ReadyScript был какой-нибудь файловый менеджер, то и вопроса бы такого не было.

Повысить оценку Понизить оценку

4

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:

Да, спасибо, такая конструкция работает и имеет право на существование. Но!

Если имя файла прайса меняется при каждой загрузке, а это раз в неделю примерно, то каждый раз нужно менять tpl-файл.

Я же думал, что может это можно как-то сделать с помощью настроек, а не создания шаблонов и написания кода.
Просто, чтобы менеджер зашел и загрузил файл и больше ни о чем не думал.

Если бы в ReadyScript был какой-нибудь файловый менеджер, то и вопроса бы такого не было.

Если загружать прайс в папку шаблона?

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Андрей пишет:

Если загружать прайс в папку шаблона?

Нет, менеджер должен зайти на страницу "Прайс-лист" и загрузить его в папку по кнопке "Загрузить файл"

Повысить оценку Понизить оценку

6

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:
Андрей пишет:

Если загружать прайс в папку шаблона?

Нет, менеджер должен зайти на страницу "Прайс-лист" и загрузить его в папку по кнопке "Загрузить файл"

Страница прайс-лист - какой тип имеет?
Можно ссылку.

Сайт в облаке?

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Сайт не в облаке.

Страница должна иметь тип - Статья (т.к. только в этом типе есть визуальный редактор)

Если делать тип - Страница, то подходит вариант из вашего первого ответа.

Повысить оценку Понизить оценку

8 Отредактировано Андрей (14.06.2016 13:38:19)

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:

Сайт не в облаке.

Страница должна иметь тип - Статья (т.к. только в этом типе есть визуальный редактор)

Если делать тип - Страница, то подходит вариант из вашего первого ответа.

Ну и отлично. Раз сайт не в облаке.
Почему бы не сделать кнопку загрузить прайс на php?
Чтобы менеджер загружал прайс через собственный загрузчик по нужному пути и с нужным названием?
Советую сюда заглянуть http://ruseller.com/lessons.php?id=2200

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Ну это же костыли получаются.
Проще сделать не публичную статью и на ней загружать файл в папку. А на странице скачивания встраивать статическую ссылку на файл.
Но мы немного отклонились от темы ))

Помоему показывать 404 ошибку на закрытый контент не логично.
На удаленную с сайта страницу или перемещенную - да, но не закрытую. Вводит посетителя в ступор. Он же ждет, что ему сейчас форму авторизации сунут, а ему 404.

Повысить оценку Понизить оценку

10

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:

По моему показывать 404 ошибку на закрытый контент не логично.
На удаленную с сайта страницу или перемещенную - да, но не закрытую. Вводит посетителя в ступор. Он же ждет, что ему сейчас форму авторизации сунут, а ему 404.

Согласен. По логике вещей должна быть хотя бы 403 ошибка

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Может быть нужно что-то в htaccess править? Где идет обработка 404 страницы, не знаете?

Повысить оценку Понизить оценку

12

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:

Может быть нужно что-то в htaccess править? Где идет обработка 404 страницы, не знаете?

Дайте ссылку на прайс.... Может подскажу как в htaccess настроить

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Если бы в ReadyScript был какой-нибудь файловый менеджер, то и вопроса бы такого не было.

В RS есть файловый менеджер когда статью редактируете. Там и можно загрузить ваш прайс.

А вы каждый раз с новым названием прайс генерируете? Не проще ли с один и тем же названием перезаливать файл.

Re: Страница регистрации вместо 404-страницы

Закусило Александр пишет:

Если бы в ReadyScript был какой-нибудь файловый менеджер, то и вопроса бы такого не было.

В RS есть файловый менеджер когда статью редактируете. Там и можно загрузить ваш прайс.

А вы каждый раз с новым названием прайс генерируете? Не проще ли с один и тем же названием перезаливать файл.

Проще, но заказчик или клиент любит видеть в названии архива или doc. файла дату его обновления.

_____________________________________________

Пока менеджер будет заливать файл с одним и тем же названием с заменой файла.

_____________________________________________

И еще. Если знать полный путь до файла прайса, то и регистрироваться не надо.. все и так дает скачать smile Но это мелочи, никто же его не знает

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Андрей пишет:
Сергей Дмитриевич пишет:

Может быть нужно что-то в htaccess править? Где идет обработка 404 страницы, не знаете?

Дайте ссылку на прайс.... Может подскажу как в htaccess настроить

http://2016.rd43.ru/price/

Но я там уже немного начудил..

Повысить оценку Понизить оценку

16

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:
Андрей пишет:
Сергей Дмитриевич пишет:

Может быть нужно что-то в htaccess править? Где идет обработка 404 страницы, не знаете?

Дайте ссылку на прайс.... Может подскажу как в htaccess настроить

http://2016.rd43.ru/price/

Но я там уже немного начудил..

Кстати о костылях...

Что если сделать ссылку, доступную авторизованным
ссылка /download/
Будет запускать скрипт php
Который отдаст xls файл из определенной папки, сделать так чтобы скрипт сам находил текущий прайс самый свежий и всё

Всё предельно просто.

Повысить оценку Понизить оценку

Re: Страница регистрации вместо 404-страницы

Андрей пишет:

Кстати о костылях...

Что если сделать ссылку, доступную авторизованным
ссылка /download/
Будет запускать скрипт php
Который отдаст xls файл из определенной папки, сделать так чтобы скрипт сам находил текущий прайс самый свежий и всё

Всё предельно просто.


Был бы у меня такой скрипт, сделал бы так ) Но я не на столько продвинутый. Да и ReadyScript изучаю только 4й день

Повысить оценку Понизить оценку

18 Отредактировано Андрей (15.06.2016 09:20:24)

Re: Страница регистрации вместо 404-страницы

Сергей Дмитриевич пишет:

Был бы у меня такой скрипт, сделал бы так ) Но я не на столько продвинутый. Да и ReadyScript изучаю только 4й день

Как работает:
Кладём скрипт в папочку, например download с именем index.php
В переменную $allfiles - мы должны указать путь к папке с прайсами
Всё, в нужно месте указать ссылку: <a href="mydomenvasya/download">Получить прайс</a>

<?php
$allfiles = glob( 'price/*.*' );
$no_file = array('.', '..');
if (!in_array($allfiles, $no_file)) {
array_multisort(
array_map( 'filemtime', $allfiles ),
SORT_NUMERIC,
SORT_DESC,
$allfiles
);
}
$price = $allfiles[0];
file_force_download($price);

function file_force_download($price) {
  if (file_exists($price)) {
    if (ob_get_level()) {
      ob_end_clean();
    }
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($price));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($price));
    readfile($price);
    exit;
  }
}

Думаю, что в целях избежания конфликта с RS, можно прайсы и данный скрипт разместить на поддомене.

Повысить оценку +3 Понизить оценку

Re: Страница регистрации вместо 404-страницы

Спасибо, Андрей. Работает!

Вот только что изменил:
В RS cсылка должна идти прямо на index.php - <a href="mydomenvasya/download/index.php">Получить прайс</a> Иначе 404 ошибка. Заметил только на RS, пробовал на другом домене, работает без index.php

Строку в скрипте:

$allfiles = glob( 'price/*.*' );

переделал на

$allfiles = glob("../путь к папке с прайсами/{*.xls,*.zip,*.doc}", GLOB_BRACE);

это из-за того, что менеджер может туда (по ошибке) залить не только прайс, но и фото или что-то еще smile По опыту знаю. Поэтому поставил, что отдавать только эти типы файлов.

Повысить оценку +1 Понизить оценку

Re: Страница регистрации вместо 404-страницы

Спасибо Вам Андрей за подсказки.