avatar
+62.91
154.072

Вадим

aVadim
aVadim
Вот не прямо сейчас, это точно. Задача не такая простая. К тому же это ведь не просто в коде править надо, но и в шаблонах
aVadim
aVadim
Почти наверняка проблема в том, что аватарки закачивались на одном домене, а сейчас отображаются на другом. По этой причине авторесайз не работает, т.к. движок не может конвертировать URL в локальный путь на диске.

Есть два варианта решения:

1) В базе изменить пути к аватарам, как это описано здесь: altocms.ru/628.html#comment11661

2) В CSS добавить к аватаре max-width и max-height
aVadim
aVadim
В последней стабильной версии 1.0.6 это делается примерно так:
$iPhotoId = $oTopic->getPhotosetMainPhotoId();
$aPhotos = $oTopic->getPhotosetPhotos($iPhotoId, 1);
if (isset($aPhotos[$iPhotoId])) {
    $oPhoto = $aPhotos[$iPhotoId];
    // Здесь в $oPhoto оно и есть
}
В текущей разрабатываемой версии 1.0.7 так:
$oPhoto = $oTopic->getPhotosetMainPhoto();
В обоих случаях в результате в переменной $oPhoto получим фотографию, отмеченную как превью, в виде объекта ModuleTopic_EntityTopicPhoto. И получить ссылку на само изображение можно методом getUrl():
$oPhoto->getUrl(500); 
$oPhoto->getUrl('150crop'); 
$oPhoto->getUrl('300x200'); 
$oPhoto->getUrl('x100');
и т.д.

Либо, если поставить плагин TopicIntro, то можно еще проще:
$oTopic->getPreviewImageUrl('250crop');
aVadim
aVadim
Версия Альто какая? С гитхаба сейчас можно несколько версий скачать
aVadim
aVadim
Да, есть такая проблема — хранение в базе полного пути к изображению. Поэтому при переезде возникают такие проблемы. Будем избавляться в будущих версиях
aVadim
aVadim
Выложу на днях в открытый доступ
aVadim
aVadim
Советы для тех, кто еще не успел обновиться, а спамеры достали: altocms.ru/702.html#comment12708
aVadim
aVadim
В том-то и дело. Ошибка, похоже, возникает из-за синтаксиса именованного субпаттерна (?<name>). Надо попробовать заменить на старый синтаксис (?P<name>). Если я правильно понял, то проблема должна решиться
aVadim
aVadim
Дело не в Андроиде, а в том, что под низкие разрешения экрана плохо сайт адаптирован. Проблема известна, но руки никак не дойдут, чтоб доработать
aVadim
aVadim
Удивительного нет, в следующий раз, когда будут обрабатываться CSS, ошибка может вернуться. Напр., если очистить /_run/assets/. Поэтому лучше бы, конечно, попробовать разобраться. Но я не могу эту ошибку воспроизвести у себя
aVadim
aVadim
Странно, судя по документации, такой синтаксис должен работать начиная с версии 5.2.2

Попробуйте код заменить на такой:
if (!preg_match_all('/(?P<src>src:)?url\((?P<url>.*?)\)/is', $sContent, $aMatchedUrl, PREG_OFFSET_CAPTURE)) {
      return $sContent;
}
aVadim
aVadim
Может быть, все-таки, уже ПОСЛЕ установки? При установке такой ошибки не может быть в принципе.

Какая версия PHP?
aVadim
aVadim
А, пардон, не сразу въехал, что фраза про Альто — это как бы ожидаемый пост через полгодика :)
Я это поначалу воспринял, как утверждение )))
aVadim
aVadim
Алто дырявая
И где хотя бы одна дыра?
aVadim
aVadim
К вышесказанному добавлю, что можно формировать меню не только руками, можно автоматически заполнять его блогами или категориями (если соответствующий плагин активирован). Для этого в параметрах меню есть такой параметр, как config. Вот как он работает:
$config['view']['menu']['blogs'] = array(
    'config' => array(
        'fill_from' => 'blogs',
        'limit' => 7,
    ),
);
В меню будет выведен список блогов, отсортированных по рейтингу, т.е. будет название блога и ссылка на него. Параметр limit, как можно догадаться, задает, сколько ссылок будет в меню.
$config['view']['menu']['blogs'] = array(
    'config' => array(
        'fill_from' => array('blogs' => array('dev', 'special', 'trips', 'albums')),
    ),
);
В меню будет выведен заданный список блогов. А если задать 'fill_from' => 'categories' или 'fill_from' => array('categories' => array(...)), то в меню будут выведены категории. Но самое интересное то, что можно комбинировать источники вывода в меню. Вот пример:
$config['view']['menu']['blogs'] = array(
    'config' => array(
        'fill_from' => array(
            'list' => array('item1', 'item2')
            'categories' => array('events', 'news'), 
            'blogs', 
        ),
        'limit' => 7,
    ),
    'items' => array(
        'item1' => array(
            'text' => 'Дизайн',
            'url' => '/design/',
        ),
        'item2' => array(
            'text' => 'Технологии',
            'url' => '/tech/',
        ),
    ),
);
Здесь в меню сначала попадут два пункта из списка, который задан параметром items, потом два пункта — это категории 'events' и 'news', а потом — блоги. И т.к. список блогов явно не задан, но зато задан лимит (всего 7 пунктов в меню), то в него попадут три топ-блога по рейтингу.
aVadim
aVadim
В принципе, уже сейчас можно, при желании, весь шаблон, используемый на сайте, перенести в /app/. Надо только не забыть пути поменять в конфиге, чтоб Viewer знал, откуда брать шаблон.

Но вообще, если вносятся изменения в шаблон, он как-то подпиливается под свой сайт, то лучше всего это делать с помощью создания новой темы шаблона:

1) В папке common/templates/skin/experience/themes/ создать новую подпапку с названием своей темы (напр., mytheme)
2) Скопировать туда содержимое common/templates/skin/experience/themes/default/ и задать тему mytheme в настройках шаблона
3) После этого уже можно вносить свои изменения в свою тему

Теперь, если будешь поверх шаблона common/templates/skin/experience/ накатывать обновление (НЕ УДАЛЯЯ старую папку, а прямо сразу в нее копировать с замещением старых файлов новыми), то твое тема шаблона сохранится.

А чтоб настройки шаблона не удалялись при этом, забываем про /app/.

Т.е. проблема решаема довольно просто уже сейчас. Но в целом ход твоих мыслей поддерживаю, и в дальнейших версиях значение папки /app/
aVadim
aVadim
Если просто КОПИРОВАТЬ, то старые файлы заменяются новыми с тем же именем, если среди старых файлов есть такие, которых нет в новых, то они остаются, как есть.
aVadim
aVadim
Вот за это — премного благодарен! Думаю, не будешь возражать, если утащу все это в реализацию?

Что касается перегенерации статей, то писать надо, конечно, специально код под это дело. Проще всего плагин на коленке накидать, который выполнит перебор всех статей и каждую обработает:
// берем статью
$oTopic = $this->Topic_GetTopicById($sTopicId);
// парсим еще раз основной текст...
$oTopic->setText($this->Text_Parser($oTopic->getText())); 
 // ...и короткий текст
$oTopic->setTextShort($this->Text_Parser($oTopic->getTextShort()));
// и сохраняем топик
$this->Topic_UpdateTopic($oTopic); 
aVadim
aVadim
Как скоро Вы это сделаете?
В ближайшие дни

И, нельзя ли сделать так, что бы удалялись и их топики?
При удалении пользователя удаляются и все его топики. Но важно понимать — это будет не дополнение к старой версии, это будет новая версия движка. Поэтому, чтоб использовать эту функцию, придется обновиться
aVadim
aVadim
Видимо, какая-то старая ошибка, которая была исправлена в более поздних версиях.

Попробуйте поставить этот плагин: altocms.ru/uploads/files/antibot_103.zip

На 0.9.6 не пробовал (нет развернутой версии), но на 0.9.7 он у меня запустился. Только не через админку этот плагин надо активировать, а прямо в файле /plugins/plugins.dat прописать руками. Обновляться все равно надо, но как временный вариант должно помочь.

И еще — ботов, которые уже зарегались, надо через админку банить или удалять обязательно, если только их топики удалять, то они будут продолжать со своих зареганных аккаунтов постить все новые и новые топики, это проверено.

Если очень много зареганных ботов и нет времени всех банить, то можно такой еще вариант использовать: в конфиг-файле config.local.php найти параметр $config['security']['salt_pass'] и изменить его значение. На любое, достаточно буквально один символ изменить. И все пароли всех юзеров моментально устареют. Живым юзерам это не страшно — есть восстановление пароля (им можно объяснить, зачем это нужно, поймут), а боты проходить процедуру восстановления пароля не могут