TITAN-UZ

TITAN-UZ

С нами с 27 февраля 2014; Место в рейтинге пользователей: #56
Антон Пастухов
22 февраля 2016, 00:27
2
+2
Сделать сниппет splitText c таким кодом:

<?php

$input = explode(".", $input);
$output = "<p>";
$count = 0;

foreach ($input as $i) {
    $output .= "$i.";
    $count += strlen($i);
    
    if ($count > 400) {
        $output .= "</p><p>";
        $count = 0;
    }
}

return $output . "</p>";
2. Вызвать как фильтр вывода для нужного текста: [[*content:splitText]]
Василий Столейков
17 февраля 2016, 18:45
1
0
Не хотел бы городить такую конструкцию, но если нужно — прийдётся:
{if $_modx->config.cultureKey == 'ru'}
	{set $patch = ''}
{elseif $_modx->config.cultureKey == 'ro'}
	{set $patch = '/ro/'}
{elseif $_modx->config.cultureKey == 'en'}
	{set $patch = '/en/'}
{/if}
{$patch}{$_modx->makeUrl(220)}
Klike
08 февраля 2016, 12:40
1
0
Пытаюсь вынести все картинки/js файлы на поддомен
В nginx.conf пишу так:
server {
  listen            IP:80;
  server_name       i.site.ru;
  location / {
    proxy_pass      http://site.ru/assets/images/;
  }
}
Что делаю не так?)
В днс только CNAME *.site.ru.

Редирект с www на без www происходит.
Сергей Шлоков
05 февраля 2016, 10:51
1
+1
Добавьте в robots.txt строчку
Disallow: *?hauth.start
Денис Дыранов
01 февраля 2016, 16:24
1
0
Похоже что всё-таки на OnDocFormRender. У меня это, вроде как, работает, может ещё кому пригодится:
<?php
switch ($modx->event->name) {
    case 'OnDocFormRender';
	$content = $resource->getContent();
	$introtext = $resource->get('introtext');
	if ($introtext = $content) {
      		$resource->set('introtext','');
		$resource->save();
   	}
    break;
}
Василий Наумкин
10 января 2016, 10:05
2
+2
Это потому, что HeadHunter требует user agent, видимо как защиту от простейших роботов.

Осваивай cURL:
<?php
$array = array();

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.hh.ru/vacancies?area=1955');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "User Agent");
if ($content = curl_exec($ch)) {
  $array = json_decode($content, true);  
}
curl_close($ch);

echo '<pre>';
print_r($array);
Павел
26 декабря 2015, 13:40
2
+2
Проверил только что для последней версии, все работает

1) В сниппете AjaxSnippet нужно изменить
$(document).on("click", ".as_trigger", function(e) {
на:
$(document).on("click", ".as_trigger'.$key.'", function(e) {

2)Вывод списка:
[[!pdoPage?
    &parents=`1,2`
    &depth=`0`
    &tpl=`list_news.tpl`
    &includeTVs=`image`
    &limit=`10`
&hideContainers=`1`
]]
  <div class="cleaner"></div>
[[!+page.nav]]

3)list_news.tpl — Чанк с шаблоном для pdoResources
<div class="news">
   <span id="more[[+idx]]"><p>[[+introtext]]</p></span>
   <div class="about">
[[!AjaxSnippet?
    &snippet=`more`
	&id=`[[+id]]`
    &input=`[[+introtext]]`
    &as_mode=`onclick`
	&as_target=`#more[[+idx]]`
	&wrapper=`more_button.tpl`
]]</div>
</div>

4)more_button.tpl — Шаблон для кнопки подробнее
<a href="[[+uri]]" class=" as_trigger[[+key]]">Подробнее >></a>
Василий Наумкин
10 декабря 2015, 07:26
8
+5
У меня на сайте, например, бывают платные разделы. Чтобы добавить пользователю доступ в них при оплате, работает вот такой плагин:
case 'OnWebPageInit':
if ($uid = $modx->user->id) {
	if ($extended = $modx->user->Profile->get('extended')) {
		if (!empty($extended['updateGroups'])) {
			unset($_SESSION['modx.user.'.$modx->user->id.'.userGroupNames']);
			$extended['updateGroups'] = 0;
			$modx->user->Profile->set('extended', $extended);
			$modx->user->Profile->save();
			
			$ctxQuery = $modx->newQuery('modContext');
			$ctxQuery->select($modx->getSelectColumns('modContext', '', '', array('key')));
			if ($ctxQuery->prepare() && $ctxQuery->stmt->execute()) {
				if ($contexts = $ctxQuery->stmt->fetchAll(PDO::FETCH_COLUMN)) {
					$serialized = serialize($contexts);
					$modx->exec("UPDATE {$modx->getTableName('modUser')} SET {$modx->escape('session_stale')} = {$modx->quote($serialized)}");
				}
			}
		}
	}
}
break;
Написан давно, работает без нареканий.

Для разлогинивания заблокированных пользователей использую вот такой код в том же плагине:
if ($modx->user->id) {
	if (!$modx->user->active || $modx->user->Profile->blocked) {
		$modx->runProcessor('security/logout');
		$modx->sendRedirect('/');
	}
}

Если это всё не то — прошу прощения.
Fi1osof
09 декабря 2015, 21:06
5
+3
Да, 50к — это явно перебор. Лучше делать сайтмап с постраничностью. Вот такое у меня норм работает, поисковики нормально на автомате кушают.
Василий Наумкин
24 ноября 2015, 19:43
3
+3
Уже можно обновляться =)

{if $_modx->isMember('Users')}
	Для юзеров
{else}
	Для всех остальных
{/if}