Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
04 мая 2015, 14:05
+1
Да мне все ясно уже с первого комментария.
А вы ему категорически заявляете:
А заявляю я потому, что понимаю как это будет работать в комплексе. Как сайт будет индексироваться? Как роботы будут менять контексты, телепатически?
Автор не упоминал про seo,… Мало ли, для чего ему это надо.
Читать надо всё и очень внимательно. Тогда и понимание будет. Подозреваю, что автор и так знал, что контексты можно переключать хоть в зависимости от фазы луны, хоть от времени дня. Он просит решения, а не теории. Я ему решение предложил. А вот для чего нужно Ваше решение?
А вот тут автор удивляет своим редким для сайтостроителей желанием индексировать все языковые версии. Как непредсказуемо.
Сергей Шлоков
04 мая 2015, 12:55
0
Узнаю современный принцип либерализма — мне можно все, остальным ничего.
Т.е. обратится на ты в сообществе программистов-единомышленников — это великое оскорбление.
А заявить
Сменить контекст можно и не меняя урл, не обманывайте.
не вникая в смысл разговора — это видимо признак воспитания.
По теме, т.е. Вы (ВЫ) советуете автору топика переключать контекст по куке? Ок. Подозреваю, что автор хочет, чтобы сайт индексировался в разных контекстах. Дальше помогать будете или пусть сам мучается?
П.С. Кстати, предложите Ваш (ВАШ) совет заодно, например, и HP и Samsung, а то они тоже все в адрес добавляют /ru/. Темные люди у них работают.
Сергей Шлоков
04 мая 2015, 08:16
+1
Дублировать нужно ровно столько, сколько иностранных языков. Ведь каждая страничка — это уникальный контент.
А дублировать не так уж сложно — копируешь ресурс и переносишь копию в нужный контекст.
Сергей Шлоков
04 мая 2015, 08:04
+1
Дорогой друг! Твой комментарий перевернул всю мою жизнь, а главное очень помог автору топика. Не будешь ли так великодушен и не поделишься своей мудростью с нами о том, как сделать мультиязычный сайт с одинаковыми урлами? А то вот даже docs.modx.pro сделан через папку docs.modx.pro/en/. Только просьба обойтись без велосипедов с квадратными колесами.
Сергей Шлоков
03 мая 2015, 22:18
0
Если я правильно понимаю:
$modx->newQuery('Items');
— обращение к таблице `Items` в базе MODx. Верно?
Это обращение к классу объекта, который хранится в БД. Items — это я для примера написал. Т.е. мало создать таблицу, нужно создать еще и объекты ModX.
Жизнеспособна ли смена контекста без изменения пути к странице?
Это как, телепатически? Контекст меняется в зависимости от url.
//Контексты могут быть такие
http://ru.mysite.trade/
//или такие
http://mysite.trade/ru/
//Это как пожелаешь.

Жизнеспособен ли следующий вариант, если выбранный контекст будет храниться у пользователя в профиле?
Для чего? Чтобы русскоговорящий пользователь захотел получить описание предметов на другом языке? Обычно на сайте можно выбирать языки в меню.
3. То есть в любом случае необходимо дублировать ресурсы, верно?
Верно. Для каждого языка своя страничка.
Сергей Шлоков
03 мая 2015, 08:50
+1
когда будет известно что-то об этой версии?
Почти готова. Делаю для хорошего знакомого без ТЗ, поэтому совершенствуется постоянно — а давай так, и еще вот так. Потом, то что получится нужно причесать перед тем как выложить. Надеюсь, максимум 2 недели. Самому уже надоело.
написать [myCalendar] Вызов нескольких видов календарей на одной странице.
В описании поменял, а в заголовке ограничен длиной поля — больше ни одной буквы добавить нельзя.
Сергей Шлоков
03 мая 2015, 08:13
+1
4. Как я понял, для каждого контекста нужно дублировать все задействованные ресурсы. Это так?
Так.
Означает ли это, что использовать разные [[*context_key]] в PHP скриптах на одних и тех же ресурсах невозможно?
Например, мы получаем
$item['en']
и передаем его в чанк.
Чтобы использовать один чанк для всех языков нужно в селекте указать соответствующее языку поле
$q = $modx->newQuery('Items');
//Указываем только одно поле, соответствующее языку
$q->select('id,name,'.$modx->getOption('cultureKey').' as item');
if ($q->prepare() && $q->stmt->execute()) {
	$output = '';
	while($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		// Тут оборачиваешь в чанк. В чанке должен быть плейсхолдер [[+item]],
		// в которое передается название предмета
		$output .= $modx->getChunk('твой_чанк',$row)
	}
}
И твой чанк будет работать во всех контекстах.
Главное, в настройках контекста указать ключ cultureKey с соответствующим значением.
Сергей Шлоков
02 мая 2015, 22:14
+1
Чувствуется профессиональный маркетолог — заголовок об одном, текст о другом.
По коду… советую использовать процессор. Что это такое почитать можно тут.
Сергей Шлоков
01 мая 2015, 08:48
+1
Был уверен, что ты поймешь мой сарказм :) Особенно после этого
Также предлагаю расширить решение, чтобы можно было добавлять комментарии без ModX. Жутко не удобно.
Сергей Шлоков
01 мая 2015, 08:40
+1
Похоже, что разобрался со своей проблемой. Дело было в том, я пытался запустить добавление комментария непосредственно запросом к action.php без иницилизации сниппета «TicketComments»
Это действительно большая проблема. Народ уже давно мучается.
Этот факт немного сковывает в свободе действий. Почему бы не создавать ветвь непосредственно при добавленнии комментария.
Надо переадресовать этот вопрос автору Tickets. Доколе народ будет мучатся, запуская всякие ненужные сниппеты?
Думаю, общество с удовольствием скинется для решения этой проблемы. Также предлагаю расширить решение, чтобы можно было добавлять комментарии без ModX. Жутко не удобно.
Сергей Шлоков
30 апреля 2015, 13:45
1
+1
Хотя если требования не большие, то можно и календарем обойтись. Но без админки, только во фронт-энде.
Например, вот как вариант
Сергей Шлоков
30 апреля 2015, 13:30
0
Вы мне описали компонент бронирования, а это компонент календарь. Его, конечно, можно использовать для бронирования, но всю логику придется писать самостоятельно (и фронт-энд и бэк-энд) или просить кого-нибудь.
Сергей Шлоков
29 апреля 2015, 18:23
0
Мне кажется было бы удобнее, если бы на вкладе Авторы указывались не логины, а полное имя. Думаю, не многие смогут связать bezumkin с Василием Наумкиным. А уж про остальных вообще молчу — инкогнито.
Сергей Шлоков
28 апреля 2015, 13:28
+1
Просто я предполагаю, что есть другой, более грамотный способ проверки поля на заполненность, нежели простое сравнение с пустой строкой?
Есть вот такой
if (!empty($autor))
Но можно и с пустой строкой. Смысл одинаковый.
Сергей Шлоков
28 апреля 2015, 13:26
0
Я имел ввиду логику называния переменных. В переменную автор сохраняется значение поля Город. :)
Сергей Шлоков
28 апреля 2015, 13:09
0
Часто клиенты постоянно висят на сайте и заставлять их выходить — не правильно и часто невозможно…
Абсолютно согласен. Но решения из коробки нет. Это нужно делать своими силами. Ссылку на решение я давал выше. Это не окончательное решение, оно для понимания. Дальше уж сами в зависимости от задачи. Для того, чтобы понять куда это прикручивать советую глянуть в сторону hybridAuth. Там изменения срабатывают немедленно (работает плагин).
Сергей Шлоков
28 апреля 2015, 12:58
+1
Ну быстрее будет так
$query = $modx->newQuery('modUserProfile', array('internalKey'=> $modx->user->get('id')));
$query->select('city');
//Условие if ($autor != '') думаю лишнее
$_SESSION['gorod'] = $modx->getValue($query->prepare());
Можно и твой вариант. Но как ты правильно сказал вот это $autor = $profile->get('city'); точно похоже на порно.
Следуя твоему стилю можно было бы написать так
$page = $modx->getUser();
$car = $user->getOne('Profile');
$autor = $profile->get('city');
...