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

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

С нами с 31 января 2013; Место в рейтинге пользователей: #5
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:33
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');
...
27 апреля 2015, 19:55
0
Подумаю. Пока ничего простого в голову не приходит.
27 апреля 2015, 19:13
0
Я так понимаю, что эти 2 календаря на странице должны отображать разные события. И соответственно сохранять в разные календари разные события. А это в текущей информационной модели невозможно. Как события в таблице разделить по разным календарям?
если оторвать у eventCalendar механизм с возможностью &calendar_id=`cal3` должно работать?
eventCalendar просто выводит события. Он не может их сохранять. Поэтому там все проще.
Выход только один — переписывать все с нуля.
27 апреля 2015, 17:24
0
В этой версии только один календарь. Есть вот такая версия. В ней можно использовать несколько календарей. Но скорее всего, если заказчик разрешит её выложить, то не бесплатно.
27 апреля 2015, 16:45
0
Mission impossible.
П.С. Теперь знаю чем заняться вечерком.
27 апреля 2015, 14:37
0
В сниппете изменить/добавить условие
if (! $modx->user->isMember('manager')) {
	$scriptProperties['readOnly'] = true;
}
Ну уж такие простые вещи можно и самому попробовать сделать.
27 апреля 2015, 09:16
+1
Не думаю, что в этом есть острая необходимость. Ну висят эти данные в сессии, никому не мешают. Когда пользователь повторно логинится, то эти данные обновляются.
Проблема только в том, что изменения данных пользователя не применяются немедленно. Для этого нужно выйти и зайти снова (logout->login).
А чтобы сессии почаще обновлялись, нужно уменьшить её время жизни в настройках (параметр session_gc_maxlifetime). Вот еще тема о борьбе со старыми сессиями.