С каких пор она изменилась? И какая версия MODX у вас? Если вы ничего не делали, то либо настройки хостинга изменились, либо сайт поломали. Вря ди есть какие-то другие причины.
В том то и дело — что никаких изменений не было. Но в менюшках везде буква И заменилась на �?
А в связи с чем кодировка съехала? Меняли хостинг или что? Или изначально так было? Просто так кодировка не начинает съезжать.
Здравствуйте Николай! Пропало описание ряда ресурсов и чанков (тех, где съехала кодировка на сайте, часть текста заменилась на такие символы: �? НДУСТР�? АЛЬНЫЕ ПРОДУКТЫ) Я вижу ресурсы в админке — но описание пустое. На сайте вся информация отображается, но поправить слетевшие символы не могу — так как не вижу их в описании) Раньше все отображалась, чем может быть вызвана данная проблема? Спасибо
Довольно интересная задачка сегодня встала: есть каталог с радиаторами и вентилями (различаются по шаблону). В каталоге есть возможность вывести отдельно радиаторы, отдельно вентили, а можно сразу выводить все товары скопом. Так вот, возникла задача фильтровать радиаторы по отдельным параметрам, при этом иметь возможность выводить сразу и товары, и вентили. При этом у вентилей, понятное дело, даже нет тех параметров, по которым будут фильтроваться радиаторы. Как же сделать выборку так, чтобы учесть условия отдельно для радиаторов, отдельно для вентилей, и при этом иметь общие условия (опубликован, не скрыт в меню, не удален), да еще и не плодить SQL-запросы?
xPDO-запрос получился такой:
public function prepareQueryBeforeCount(xPDOQuery $c) { $c = parent::prepareQueryBeforeCount($c); $alias = $c->getAlias(); // Поиск по модели радиатора $radiators_where = array(); if($radiator_model_id = $this->getProperty('radiator_model_id')){ $categories = array(); $this->getCategories($radiator_model_id, $categories); if($categories){ $radiators_where['parent:IN'] = $categories; } unset($categories); } if($radiator_height = (int)$this->getProperty('radiator_height')){ $c->leftJoin('modTemplateVarResource', 'tv_radiator_height', "tv_radiator_height.tmplvarid = 4 AND tv_radiator_height.contentid = {$alias}.id"); $radiators_where[] = "CAST(tv_radiator_height.value as UNSIGNED) <= {$radiator_height}"; } if($radiators_where){ $c->where(array( array( "template" => 5, $radiators_where, ), "OR:template:!=" => 5, )); } return $c; }
Если у нас не переданы специальные условия для фильтра радиаторов, то у нас формируется обычный запрос:
SELECT modResource.* FROM `modx_site_content` AS `modResource` JOIN `modx_shopmodx_products` `Product` ON `modResource`.`id` = `Product`.`resource_id` WHERE ( `modResource`.`deleted` = 0 AND `modResource`.`hidemenu` = 0 AND `modResource`.`published` = 1 )
А если мы передадим в вызов «radiator_height» => 350, то получим такой:
SELECT modResource.* FROM `modx_site_content` AS `modResource` JOIN `modx_shopmodx_products` `Product` ON `modResource`.`id` = `Product`.`resource_id` LEFT JOIN `modx_site_tmplvar_contentvalues` `tv_radiator_height` ON tv_radiator_height.tmplvarid = 4 AND tv_radiator_height.contentid = modResource.id WHERE ( ( `modResource`.`deleted` = 0 AND `modResource`.`hidemenu` = 0 AND `modResource`.`published` = 1 ) AND ( ( `modResource`.`template` = 5 AND CAST(tv_radiator_height.value as UNSIGNED) <= 350 ) OR `modResource`.`template` != 5 ) )
Обратите внимание, что у нас есть один обособленный блок условий по статусам публикации, и есть второй блок, в котором условия прописаны буквально «где шаблон 5 И Все условия по радиаторам ИЛИ шаблон не 5».
Таким образом мы можем составлять довольно сложные запросы индивидуально для радиаторов, и отдельно для всех товаров в целом.
Вот более сложная выборка, если мы передаем такие параметры:
$params = array( "radiator_height" => 650, "radiator_depth" => 200, "radiator_model_id" => [ 1248, 19, ], "where" => [ "template" => 5, ], );
В данном случае мы запросили только радиаторы (добавив условие по шаблону), указали определенные модельные линейки радиаторов (параметр radiator_model_id) и максимальную высоту и глубину секций. Вот такой SQL-запрос получился:
SELECT modResource.* FROM `modx_site_content` AS `modResource` JOIN `modx_shopmodx_products` `Product` ON `modResource`.`id` = `Product`.`resource_id` LEFT JOIN `modx_site_tmplvar_contentvalues` `tv_radiator_height` ON tv_radiator_height.tmplvarid = 4 AND tv_radiator_height.contentid = modResource.id LEFT JOIN `modx_site_tmplvar_contentvalues` `tv_radiator_depth` ON tv_radiator_depth.tmplvarid = 7 AND tv_radiator_depth.contentid = modResource.id WHERE ( ( `modResource`.`deleted` = 0 AND `modResource`.`hidemenu` = 0 AND `modResource`.`published` = 1 ) AND ( ( `modResource`.`template` = 5 AND ( `modResource`.`parent` IN (1248,19,27,230,1249) AND CAST(tv_radiator_height.value as UNSIGNED) <= 650 AND CAST(tv_radiator_depth.value as UNSIGNED) <= 200 ) ) OR `modResource`.`template` != 5 ) )
Судя по всему просто дело в правах на файлы. На одном сайте поигрались, перенесли на другой (вместе с кешем старого сайта). assets/commponents/phpthumbof/cache, к слову, на то и называется cache, что не является рабочей папкой, а папка для уже конечного результата, потому в одном с ней контексте говорить «все картинки, которые использовались в этом дополнении улетели» не совсем корректно. Это сайт работал с уже имеющимися в ней картинками, а вот phpthumbof уже ничего не мог с этой папкой делать (опять-таки, судя по всему из-за отсутствия прав). Потому когда вы их удалили, phpthumbof не смог ничего в эту папку записать.
То же самое и с УРЛами. Что-то смогло закешироваться, а что-то нет. Когда вы перенесли обратно на первый сайт, перенесли с кешем второго сайта. «Кэш чистил» — опять-таки: как чистили? Через админку? Админка ничего не скажет, если не сможет какие-то файлы кеша удалить при сбросе. Она только скажет «кеш очищен», но был ли он очищен или нет — знать не будете. Только физическое удаление папки core/cache по ftp или ssh (когда вы видите, что папка удалилась) гарантирует вам, что он удален (в случае, если используется дефолтный кеш-провайдер). А так, если у вас кеш-файлы со старого сайта остались, не удивительно, что с УРЛами фигня получилась.
В общем, не гарантия на все это, но скорее всего именно так.
Доброй ночи. расскажу историю, и хотел бы получить какие-то ответы, что делал не так. Сайт переезжал с одного хостинга на другой. залил сайт на новый хост — все чудесно, все летает. После было принято перекинуть этот же сайт на другого пользователя этого хоста, слил бекапы, перелил на нового пользователя. Вроде как все работало, некоторые моменты по сайту поправили, и в конце выяснилось что phpthumbof работает как-то не правильно, т.е. на некоторых страницах не подтягиваются картинки, в консоле выдавалось на картинки 404, по пути assets/commponents/phpthumbof/cache этих картинок нету. После удаления папки assets/commponents/phpthumbof/cache папка с файлами на создалась, в итоге все картинки, которые использовались в этом дополнении улетели. Проверка и установка прав доступа к файлам и папкам, повторная переустановка компонента, обращение в сапорт хоста результата не дали. мучался долго и нудно, в итоге все надоело и решил перекинуть все внесенные изменения с второго акка на первый(куда был изначально влит сайт, поскольку у него phpthumbof работал нормально, и проблем с ним не было). Внес последние изменения на сайт на первом акке и решил переносить на второй акк уже нормальный, рабочий сайт, удаляю тот сайт где phpthumbof выделывался, заливаю туда рабочий и… все работает, phpthumbof работает, последние изменения тоже, НО, какого-то черта сылки (НЕ ВЕЗДЕ), вели на тестовый домен(test.site.ru где был первый акк). Кэш чистил, base прописан, .htaccess есть, путя прописаны верно, в некоторых местах сайта сылки выглядели так test.site.ru/, а в некоторых так site.ru/http://test.site.ru/. начал копать откуда такой линк вылазит, на сайте несколько контекстов, и что бы отображать некоторые страницы было накостылено что-то вроде replace, в pdoMenu в плейсхолдере [[+link]] подтягивался test.site.ru, вообще непонятно откуда, как, и зачем(раньше все работало как часы, а после определенного переноса, сылки слетели, повторюсь, не везде). Только после того как я взял исходный бекап, залил его сразу на второй акк, внес там все изменения/доработки он заработал в прежнем режиме.
Для меня остались загадтой глюкавая работа phpthumbof и больше всего очень странные линки. Может этому есть какое-то объяснение?
Ладно, мы вероятно о разных вещах говорим и друг друга не понимаем. Проехали.
Там в пояснениях написано, что 14% верхней части страницы могут быть отображены без загрузки стилей — я об этом говорю. Тогда перестанет ругаться и не будет просить убрать ссылку из подвала.