Чорд, а ведь и правда про винду забыл. А с амазоновским хранилищем не работал никогда — поэтому даже не представляю как это работает…
Ну и я не подумал, что нужно будет разделение по 2 разным папкам. Хотя может быть я не прав. Спишу на нехватку опыта работы в этом фреймворке.
core/ — это закрытая папка, там только серверные файлы. assets — это для паблика. Конечно придется две папки юзать.
Надо могу только одно ответить: можете написать новый движок. Только не забудьте про то, что существуют винды всякие и т.п., а так же не только файловые медиасорсы, но и другие, типа облачного Amazon3S и т.п.
На тот момент голова не читала досконально :) Ну и я не подумал, что нужно будет разделение по 2 разным папкам. Хотя может быть я не прав. Спишу на нехватку опыта работы в этом фреймворке. Спасибо, что возились со мной :)
Да и еще вопрос, для того, чтобы сделать страницы отличающиеся от главной, тоже насоздавать шаблонов или есть более элегантный путь?
Единственно что, так это я не понял нафига делать такую замудренность в виде base(Path/Url)Relative. Ведь можно же было всё это автоматически определять по наличию/отсутствию слэша/MODX_BASE_PATH в начале строки basePath/baseUrl медиасоурса и, исходя из этого, формировать конечный адрес. Т.е., к примеру, вот кусок кода моего компонента:
function getFileUrl ($input) { $fileUrl = $this->fileHandler->getDirectoryFromFile($input); // если в $input из сниппета пришла строка вида - "filename.ext", т.е. без слэшей и папок if ($fileUrl == './') { $fileUrl = ''; } $inputUrlType = ''; // если адрес относительный if (!$this->isAbsoluteUrl($fileUrl)) { // значит пришёл адрес вида "images/picture.jpg" $inputUrlType = 'relative'; } // если абсолютный, но не существующий и не содержащий MODX_BASE_PATH в начале строки else if (!file_exists($fileUrl) && strpos($fileUrl, $this->basePath) !== 0) { // значит пришёл адрес вида "/images/picture.jpg" $inputUrlType = 'absolute'; } else { // иначе пришёл полный физический путь. // так сделаем же из него абсолютный! $fileUrl = '/'. substr($fileUrl, strlen($this->basePath)); $inputUrlType = 'absolute'; } $fileUrl = $this->fileHandler->sanitizePath($fileUrl); $fileUrl = $this->fileHandler->postfixSlash($fileUrl); $this->inputUrlType = $inputUrlType; $this->fileUrl = $fileUrl; return $this->fileUrl; } function getFilePath () { switch ($this->inputUrlType) { // если файл пришёл в виде относительного урл case 'relative': $filePath = $this->basePath .'/'. $this->baseUrl .'/'. $this->fileUrl; break; // если файл пришёл в виде абсолютного урла case 'absolute': $filePath = $this->basePath .'/'. $this->fileUrl; break; } $this->filePath = $this->fileHandler->sanitizePath($filePath); return $this->filePath; } function isAbsoluteUrl ($path) { $path = $this->fileHandler->sanitizePath($path); return (substr($path, 0, 1) == '/'); }
И вот здесь абсолютно пофигу — пришёл ли относительный путь, абсолютный или вообще полный физический — всё корректно обработается и вернутся правильные fileUrl и filePath. Поэтому эти 2 настройки (base(Path/Url)Relative) поначалу меня и ввели в замешательство — я думал, что такое, как и у меня, должно на автомате обрабатываться :-)
Ты методы разных объектов спутал :-)
Эвона как! © Ну значит, я ССЗБ :-) А ту вашу статью видел (она даже в закладках у меня есть), но когда писал вопрос — забыл про неё совершенно). Теперь со всем разобрался :-) Спасибо большое!
И это нашел. Стили и Скрипты должны лежать в месте отличном от core/components/modxsite/templates/vk-prom/styles?
Думаю косяки с путями {$template_url} Я отсюда путь тащу, скорее всего тут косяк.