Всем привет!
Нужно сделать такой рерайт ссылок, чтобы, например, /cargo_refrigerator.html заменаялась на лету на /cargorefrigerator.html (таких ссылок много) и /st.petersburg.html на /stpetersburg.html (такая ссылка одна).
Подскажите, как это делается?
Ясно. Никак, значит...
Тут дело к сожалению не в том, хочу я или не хочу, а в том, что код ядра реализован топорно. Если я изменю его, то последующие обновления могут поломать мои доработки. Хуки ядра тоже не предусмотрены. А в скриптах joomla данный метод везде вызывается только как JRoute::_() , и это тоже не перепишешь - это почти весь фронтенд движка.
Вот такая петрушка...(
Но загвоздка в том, что в двмжке метод всегда вызывается без объявления класса,
JRoute::_(...), и поэтому переопределить его не удаётся. Можно как-то это обойти?
Всем привет.
Нужно организовать динамическую подмену lang.site.com/URI на site.com/lang/URI.
Папки lang в реальности не существует, это путь ЧПУ. Ни разу такого не делал, и не могу найти наиболее полного руководства. Есть лишь разрозненные сведения, что нужно присваивать DNS в панели провайдера и править httpd.conf.
Кто уже делал подобное, просветите пошагово, пожалуйста!
Всем привет.
Есть такая задача: нужно установить куку, которая будет срабатывать только для одного модуля. Ссылки на модули выглядят так:
/admin.php?module=adminmenu
/admin.php?module=users
К примеру, такая конструкция работает:
но если к пути добавляется, например, номер страницы
/admin.php?module=adminmenu&page=4
или еще что-нибудь
/admin.php?module=adminmenu&filter=name+&page=4
то кука, установленная для /admin.php?module=adminmenu перестаёт работать.
Вопрос: можно как-то с этим бороться?
Как вариант можно было бы сделать наследование классов и все настройку класса core сохранить в статические поля - таким образом не пришлось бы держать экзмепляр одного класса внутри экземпляра другого
Я сделал вложенность экземпляров для того, чтобы все свойства и методы были доступны по одному указателю - тогда не возмникает путаницы с доступом.
Если просто применить extends, то так просто все не получится...
- соответственно функция getConfig должна быть статической потому что классы не отнаследовны друг от друга и экземпляр не указан - таким образом и сам массив $config тоже должен быть статическим иначе у вас получается смесь сатических и инкапсулированных данных класса
Да это $this->params = core::getConfig(); появилось в ходе экспериментов и все равно желаемого результата не дает. Проблема собственно в чем: при объявлении класса создается объект $core->config, а вот как до него из других классов добраться и при этом не нарушить инкапсуляцию, я понять не могу. (Добавление)
Ура, нашлось решение!
class Core{
public $config;
function loadClass($path){
require($path);
$classname = strtolower(substr(basename($path), 0, -strlen(strrchr($path, '.'))));
$this->$classname = new $classname($this)
}
class DataBase{
private $table;
private $limit;
public $dbhdl;
public $config; private $core;
function __construct($core){ $this->core = $core;
}
}
SindBAD Попробуйте добавить модификатор global и объявить функцию как статическую
Я тоже об этом думал. Так же думал о передаче параметров через loadClass.
Но в случае с global ООП вообще потеряет смысл, т.к. объявлять глобальной придется каждую вторую переменную. А в случае с параметрами мне придется таскать много хвостов из класса в класс, причем неизвестно, какие параметры для уже написанных классов могут понадобиться в процессе разработки.
/*вот собственно проблемный участок. getConfig() мне не удалось заставить работать так, как мне нужно. Метод начинает искать $config в классе DataBase. Собственно, в том и вопрос: как заполучить сюда $config?*/
$this->params= core::getConfig();
}
}
?>
См. комментарии в коде. Если что-то пояснил непонятно - спрашивайте, допоясню)
UPD: Оказалось, core::getConfig() возвращает именно core->config, но почему-то пустую, т.е. в том виде, в каком она была объявлена...
JustUserR, здесь засада в том, что в реальном времени эти данные не дают, а выносят на сайты с задержкой в 15-30 минут. Я уже выяснил, что к примеру РТС и ММВБ дают такие данные только по платной подписке и запрещают бесплатную раздачу с задержкой менее чем в 15 минут.