Оригинально. чем то на битрикс похоже
Чур! Чур меня! )))
Форум ReadyScript Сообщения от Михаил
Страницы 1
Оригинально. чем то на битрикс похоже
Чур! Чур меня! )))
А чем мой способ плох? Зачем целый модуль?
Не всегда странице соответствует какой-то пункт меню, поэтому опираться на $menu_item.id я не могу.
Ну и, к тому же, мне показалось более удобным управлять всем, просто формируя нужную структуру на файловой системе, чем делать то же самое и вдобавок редактировать дополнительный шаблон. Файлы ведь все равно придется класть куда надо.
Если честно, все это мысли задним числом. На момент разработки своего решения про способ, описанный в вашем, я не знал.
Я пока плохо знаю ReadyScript, так что, возможно, выбрал не самый лучший вариант.
Ярослав, Александр, спасибо за советы.
В итоге я написал свой модуль (возможно, изобрел велосипед), который позволяет делать такие страницы, просто создав для неё каталог с нужными файлами.
Например, хочу страницу /custom/contact/.
Для этого создаю каталог $THEME_DIR/custom_pages/contact, в него кладу файлы:
content.tpl - будет обработан как шаблон и вставлен в качестве содержимого страницы
*.css - все файлы, находящиеся в каталоге, будут подключены на странице после общих стилей темы; если файл подключать не нужно, надо дать ему имя, начинающееся с _ (знак подчеркивания)
*.js - любые javascript файлы, аналогично css; будут подключены в футере
Что это за страница? Скорее всего Вам нужно просто проверить идентификатор внутренней сущности.
Например, страница с контактной информацией. Пусть это обычная текстовая страница с адресом вида /text-/что-то/.
Я не совсем понял про идентификатор сущности.
Самый простой способ - в режиме просмотра html текста это страницы добавить CSS правила.
Это не очень удобно. Там их много, хочется держать их в отдельном файле, а не инлайн. Есть риск их попортить при редактировании, если кто-нибудь включит визульный редактор.
Ну и этот способ точно не сработает для javascript-кода. Редактор его не пропускает, насколько я понял.
Есть страница с текстом нестандартного оформления, которое требует дополнительных CSS-правил, актуальных только для этой страницы (поэтому в общий CSS их вставлять не хочется). Эти правила сложены в отдельный файл.
Подобная ситуация и с javascript: странице нужен специальный код лично для нее.
Как такую страницу сделать?
Я пока вижу единственный вариант: делать под неё специальный модуль, который будет отвечать на соотв. маршрут.
Есть ли какой-то более простой способ? Или действительно без модуля не обойтись?
Вариант с listproducts.my.inc.php работает, спасибо. Пока остановлюсь на нём.
Вам нужно событие getroute в нем нужно создать тот же самый маршрут, что и в модуле каталога
А где это событие перехватывается? Как мне создать такой маршрут и передать ему управление?
Мне, получается, нужно создать для этого отдельный модуль?
Стоит задача разместить в каталогах определенных категорий подарки, разбавив ими список товаров.
Самое простое, что пришло в голову:
1. Сами подарки реализовать в виде отдельной категории.
2. При формировании списка товаров получить набор подарков и замешать их в этот список.
Этот вариант попробовали, и он сработал.
Проблема в том, что код, отвечающий за п.2, нужно вставлять в метод модуля \Catalog\Controller\Front\ListProducts::actionIndex() (файл modules\catalog\controller\front\listproducts.inc.php), который перепишется при первом же обновлении модуля (если я правильно понимаю).
Подозреваю, что нужно каким-то образом создать свой дочерний класс и там этот метод переопределить, но он тако-о-ой длиннющий и непонятный, что подобное потребует бездумного копипаста 95% этой массы кода и потому чревато ошибками.
Как здесь следует поступить?
Спасибо, помогло.
Пытаюсь с помощью этой функции добавить скрипт с другого домена - {addjs file="https://..."}.
Получается /templates/тема/resource/js/https://...
Можно ли как-то указать функции, что не надо к адресу ничего дописывать?
В ответ на любой запрос показывает пустое содержимое страницы, есть только шапка.
Например, https://readyscript.ru/dev-manual/searc … eadyScript
Было б хорошо, если бы работал. А то так иногда легче прямо в коде с помощью IDE искать, чем через дерево навигации слева
с той вкладки галочки падают не в базу, а в файл /config.auto.php
А этот файл разве не переписывается при каждом нажатии кнопки Сохранить?
Я так и хотел сделать. Но свойства \Setup::$SM_COMPILE_CHECK не существует
Три других есть, а этого нет.
Хотелось бы через _local_setting.php это провернуть: если понадобится обновить базу с рабочей копии, галочки придется выставлять заново.
Какие настройки отвечают за три из них, вроде бы, понятно:
\Setup::$SM_COMPILE_CHECK = TRUE; // Всегда проверять шаблоны на предмет модификации
\Setup::$DETAILED_EXCEPTION = TRUE; // Подробно отображать информацию об исключениях
\Setup::$CACHE_ENABLED = FALSE; // Выключить кэширование данных
А вот настройкой "Включить кэширование Smarty" как управлять через \Setup?
Хочу отключить кэш, чтобы изменения в шаблонах сразу отражались на странице.
Пробовал следующее (предварительно вручную удалив папку cache):
1. В _local_settings.php установил
\Setup::$CACHE_ENABLED = FALSE;
Не помогло вообще: при первом же обращении папка cache снова создалась и при последующих обращениях не менялась (видно по времени модификации). Не менялось, очевидно, и содержимое страниц, пока не удалишь папку вручную.
Файл _local_settings.php точно читается, т.к. иначе не прошло бы соединение с базой данных.
2. В index.php добавил строчку:
(new \RS\Cache\Manager)->invalidateAll();
Очищается только папка cache/engine. Остальные не меняются.
Что я делаю не так?
Лучше иметь именно в виде явного SQL-запроса, чтобы можно было потом использовать в скриптах.
Например, хочется работать на актуальных данных с рабочего сервера, которые время от времени обновлять.
Снять дамп, скопировать его и распаковать можно несложной командной.
А вот вручную каждый раз лазить что-то исправлять, тыкая мышкой - это не комильфо.
Поэтому должен быть скрипт, который накладывается на дамп и проводит все необходимые для локальной копии изменения.
Другими словами, примерно так:
ssh site.ru "mysqldump site_db" | mysql site_local_db # сняли и распаковали дамп
mysql site_local_db < fix.sql # применили изменения
И можно ничего не исправлять вручную
надо просто научиться пользоваться sql-клиентом типа HeidiSQL
Открыть таблицу sites, перейти в Данные - и вот оно всё, бери и меняй.
Кстати, графический SQL-клиент обычно показывает реальный запрос, который он выполнил, чтобы применить изменения. (За Heidi конкретно не скажу, но наверняка и там это есть.)
Разобрался сам, порывшись в коде платформы.
Нужно сделать две вещи:
1. Подсоединиться к базе данных и выполнить там запрос вида
UPDATE префикс_sites
SET redirect_to_https = 0
WHERE id = <ID> ;
Какой у вас префикс, можно узнать, посмотреть на свои таблицы.
ID сайта: если он у вас один, то id = 1. Если сомневаетесь - сделайте SELECT * FROM префикс_sites и там посмотрите.
Цивилизованно эта операция должна делаться через административную панель, где у сайта нужно снять галочку "Перенаправлять на https". Но сайт-то через браузер недоступен, поэтому панель не откроешь.
2. Очистить кэш ReadyScript.
Самый простой способ это сделать - удалить папку cache в корневом каталоге сайта.
Разворачиваю локальную копию сайта (скажем, somesite.local).
Сайт перебрасывает на адрес https://somesite.local, что приводит к ошибке, т.к. нет сертификата (и возиться с ним не хочется, т.к. на локальной копии он совершенно ни к чему).
Можно ли как-то отучить механизм сайта перенаправлять с http на https?
Страницы 1
Форум ReadyScript Сообщения от Михаил