Можно узнать, обновление в чем заключалось? Систему сменили, или просто дизайн перекрутили, просто интересно, и было бы интереснее если бы картинку прошлого варианта поставили для сравнения.))) А так в целом полезно просто понимать что обновлялось и для чего)
Тоже интересует тема мультиязычности, так как например у нас в Казахстане вообще приветствуются сайты с тремя языками отображения казахский, русский, английский. Николай спасибо за комментарий, буду тоже пробовать использовать согласно пояснений.
Только там еще не все переведено. Я подал заявку в команду переводчиков, если одобрят, так хоть пару самых важных слов переведу :-)
Приятная новость) Пошел переключаться на русский)
Хорошая новость для наших клиентов: сервис bitbucket.org в настоящее время активно переводится на русский язык. Уже можно переключиться на русский язык, и хоть и не все, но что-то уже будет на русском языке. Так как над переводом работает сообщество, думаю, очень скоро будет довольно полный перевод. Учитывая, что большинству из нас придется довольно плотно работать с этой системой (там проходят все наши заявки и т.п.), и не все знают английский язык, это улучшение не может не радовать.
UPD: Как сменить язык.
Светлана, здравствуйте! Отписался вам на почту.
Здравствуйте, если здесь есть кто-нибудь)) У меня на странице надо создать типа каталога тренингов
Слева — картинка, а справа — описание тренинга
Картинку вставляю легко, а описание не получается поставить прямо напротив картинки. Пробовала заходить в Положение, выравнивание там выбирала «по центру» «по левому краю» и вообще все что там есть. но все равно где-то то вверху, то внизу надпись выходит
Кроме того, в процессе попыток, одна картинка сдвинулась направо (средняя), и сколько потом я ее не пыталась вернуть на место, она становится на место в подготовке, а когда нажимаю сохранить и просмотреть — на сайте та же ерунда. Прям не знаю, что делать, казалось бы простое дело, а не получается Никто не может объяснить, что надо делать? Спасибо
Сегодня столкнулся с одной интересной задачей: мне надо было дважды подсчитать количество документов по условию и с группировкой данных. Вот запрос (запрос с искажениями, сокращен для лучшей читабельности):
<?php // Формируем запрос $q = $modx->newQuery('modResource'); $q->select(array( 'modResource.*')); // Добавляем группировку $q->groupby('parent'); // Считаем $count = $modx->getCount('modResource', $q); // Добавляем новую группировку $q->groupby('pagetitle'); // Опять считаем $count = $modx->getCount('modResource', $q);
Казалось бы, все замечательно, но давайте сформируем конечный SQL-запрос после второго метода группировки:
SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY parent, pagetitle
И вот здесь уже и кроется проблема. Метод xPDOQuery::groupby() не замещает поле, по которому надо сгруппировать, а добавляет его. То есть вместо того, чтобы сначала посчитать с группировкой по полю parent, а потом по полю pagetitle, после второго вызова ->groupby() у нас в условии группировки появилось два поля. А нам нужно только одно.
Конечно, если у нас запрос не большой, то можно и просто второй запрос накидать. А если запрос большой? Да еще и условия всякие? А еще и лень справедливо давит… В общем неплохо было бы просто объект $q скопировать в другую переменную, например $q2, и только после этого $q сгруппировать по parent и посчитать результат, и $q2 сгруппировать по pagetitle и посчитать результат с новым условием группировки. Тогда мы посчитаем количество записей в $q2, и не примешаем лишнюю группировку к объекту $q.
Давайте попробуем:
<?php // Формируем запрос $q = $modx->newQuery('modResource'); $q->select(array( 'modResource.*')); // Выводим SQL для $q $q->prepare(); print $q->toSQL(); print '<br /><br />'; // Копируем объект-переменную $q2 = $q; // Добавляем новую группировку $q2->groupby('pagetitle'); // Выводим SQL для $q $q2->prepare(); print $q2->toSQL(); print '<br /><br />'; // Добавляем группировку $q->groupby('parent'); // Опять выводим SQL для $q $q->prepare(); print $q->toSQL(); print '<br /><br />'; // Опять выводим SQL для $q2 $q2->prepare(); print $q2->toSQL(); print '<br /><br />';
То есть мы сформировали запрос, потом скопировали $q в переменную $q2, после чего уже добавили группировку отдельно для $q и отдельно для $q2. По идее мы должны для разных объектов получить различные условия группировки. Но что мы видим?
SELECT modResource.* FROM `modx_site_content` AS `modResource` SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY pagetitle SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY pagetitle, parent SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY pagetitle, parent
То есть мы видим, что на выходе мы получили абсолютно одинаковые SQL-запросы для обоих объектов. Почему так произошло? Потому что в современном PHP при присвоении одного объекта из переменной другой переменной, объект не копируется (то есть не передается значение), а присваивается только ссылка на объект, и меняя любую из переменных, меняется единственный общий объект. В общем все почти как в Javascript. Так вот, для копирования (клонирования) объектов существует специальный операнд clone. Вот так будет выглядеть наш конечный запрос:
<?php // Формируем запрос $q = $modx->newQuery('modResource'); $q->select(array( 'modResource.*')); // Выводим SQL для $q $q->prepare(); print $q->toSQL(); print '<br /><br />'; // Копируем объект-переменную $q2 = clone $q; // Добавляем новую группировку $q2->groupby('pagetitle'); // Выводим SQL для $q $q2->prepare(); print $q2->toSQL(); print '<br /><br />'; // Добавляем группировку $q->groupby('parent'); // Опять выводим SQL для $q $q->prepare(); print $q->toSQL(); print '<br /><br />'; // Опять выводим SQL для $q2 $q2->prepare(); print $q2->toSQL(); print '<br /><br />';
Вот теперь мы получили уникальные SQL-запросы для каждого объекта в отдельности.
SELECT modResource.* FROM `modx_site_content` AS `modResource` SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY pagetitle SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY parent SELECT modResource.* FROM `modx_site_content` AS `modResource` GROUP BY pagetitle
И теперь мы можем посчитать собственные результаты для этих запросов.
И напоследок кратко о методе __clone(); Если этот метод объявлен в классе, то он будет вызван на клонируемом объекте автоматически (именно на копии). Это может понадобиться для автоматического переопределения каких-либо свойств склонированного объекта.
Документация по clone: www.php.net/manual/ru/language.oop5.cloning.php
Обновили сайт салона красоты «Чудо» и перенесли его на modxcloud.com.
Над проектом работали: Fi1osof , ilyautkin , proxyfabio .
Есть очень интересный проект. Создание одностраничного сайта. По сути запрограммировать эту форму надо: kredit-nalichnymi.ru/index-11.htm Межсерверное взаимодействие. Детальное ТЗ по запросу. Требования: Знание php, HTML, CSS, JS, MODX processors. Я помогаю по этому проекту. Бюджет: 5000 Позже будет еще несколько подобных задач в течение месяца.