Просмотр темы - "Автоматическая разбивка длинной статьи на страницы"

  > Список тем > Автоматическая разбивка длинной статьи на страницы Новая тема

Автор Текст
Вася

 0 
Пользователь
Послать ЛС
Автоматическая разбивка длинной статьи на страницы - 03:01:42 01 Апрель 2012 Профиль
Здравствуйте! Долго гуглил и лазил по Вашему сайту но так и не нашел ответа на свой вопрос о том как это можно сделать/настроить на движке ReloadCMS. Для моего сайта это критически важно, так как я собираюсь публиковать большие материалы. Я так понял что комментарии и страницы на форуме разбиваются автоматом, ну и функцию вроде как соответствующую видел в коде движка. А вот как дело обстоит с длинными статьями? Вроде и опций таких нигде не видел в админке и плагинов, к сожалению, для пагинации тоже. И тема то вроде подымалась эта у вас, но там нет ответа. Помогите плиз! Неохота из-за этого искать другой движок, уже вроде с этим сжился smile

Den1xxx

 44 
Модератор
Послать ЛС
13:11:01 01 Апрель 2012 Профиль
А что не получается?
Один мой клиент публиковал статью более 10Кбайт, и на норм. хостинге все стояло как штык.
Перенес на кривой — перестало публиковаться (что-то там с настройками PHP было).

То есть я думаю надо просто попробовать — вдруг все заработает?ok

Вася

 0 
Пользователь
Послать ЛС
16:31:08 01 Апрель 2012 Профиль
с публикациями никаких проблем нет, я опубликовал статью 200 Кбайт без проблем - проблема в том что нужно чтобы она автоматом поделилась на страницы приемлемого для индексации и удобного для просмотра размера, а оно все идёт в одну страницу

Den1xxx

 44 
Модератор
Послать ЛС
17:06:43 01 Апрель 2012 Профиль
Ну так осталось разбить текст на страницы с помощью яваскрипт.
Гуглите "яваскрипт пагинация" "пагинация jquery" или юзайте вот это.

Вася

 0 
Пользователь
Послать ЛС
18:08:31 01 Апрель 2012 Профиль
хорошо бы плагин такой был как для WordPress например, чтобы каждому не нужно было изобретать свой лисапед.. я в этой всей яве не особо шарю, может покажете как этот класс для пагинации (который вы привели в примере) туда прикрутить к статьям? плиз :)
не будут ли при этом поисковики видеть статьи в 1 страницу (они ведь яву не выполняют)?

Den1xxx

 44 
Модератор
Послать ЛС
19:36:43 01 Апрель 2012 Профиль
Цитата:
хорошо бы плагин такой был как для WordPress например,
Можно сделать. Сколько платите?

Вася

 0 
Пользователь
Послать ЛС
20:30:35 01 Апрель 2012 Профиль
в принципе разумные деньги я готов заплатить, мне кажется достаточно внести изменения в php код модуля articles чтобы вывод статьи шел например кусками по 200 строк а снизу список страниц, думаю для вас это 5 минут работы, тем более что пагинация на php там уже есть, только не для самих статей

Вася

 0 
Пользователь
Послать ЛС
17:25:45 02 Апрель 2012 Профиль
Я сделал так:
modules/general/articles/index.php
Код:
.............
$article['text'] = trim($article['text']);

        
        
///////////////////////////////////////////////////////
$array = $article['text'];
$count = strlen($array);
$list  = 30000;
///////////////////////////////////////////////////////

    
    
        /* Let's view selected article */
        if($c !== '#root') {
            $title = '<a class="winheader" class="winheader" href="?module=' . $module . '">' . __('Sections') . '</a> -> ' . '<a class="winheader" class="winheader" href="?module=' . $module . '&c=' . str_replace('#', '%23', $c) . '">' . $containers[$c] . '</a> -> <a class="winheader" class="winheader" href="?module=' . $module . '&c=' . str_replace('#', '%23', $c) . '&b=' . $b . '">' . ((strlen($category['title'])>30) ? substr($category['title'], 0, 30) . '...' : $category['title']) . '</a> -> ' . ((strlen($article['title']) > 20) ? substr($article['title'], 0, 20) . '...' : $article['title']);
        } else {
            $title = '<a class="winheader" class="winheader" href="?module=' . $module . '">' . __('Sections') . '</a> -> ' . '<a class="winheader" class="winheader" href="?module=' . $module . '&c=' . str_replace('#', '%23', $c) . '">' . $containers[$c] . '</a> -> ' . ((strlen($article['title']) > 20) ? substr($article['title'], 0, 20) . '...' : $article['title']);
        }
        $system->config['pagename'] = $article['title'];
        if(!empty($article['keywords'])) {
            $system->addInfoToHead('<meta name="Keywords" content="' . $article['keywords'] . '">' . "\n");
        }
        if(!empty($article['sef_desc'])) {
            $system->addInfoToHead('<meta name="Description" content="' . $article['sef_desc'] . '">' . "\n");
        }
    
    
    
///////////////////////////////////////////////////////
if (empty($_GET['page'])) {
    $page = 1;
} else {
    $page = (int) $_GET['page'];
}

$j = ($count-1)-(($page-1)*$list);
$i = $j - $list;

for(; $i<$j && $j>=0; $j--) {
  $pps =  $pps.$array[$count - 1 - $j];
}
$pps =  $pps.'<br><br><font color="" size="2">Страницы: </font>'."\n";
$all = ceil($count/$list);
for ($i=1;$i<=$all;$i++) {
    if ($page==$i) {
        $pps =  $pps.'<strong><font color="">'.$i.'</font></strong> ';
    } else {
      $pps =  $pps.'<a href="/?module='.$module.'&c='.str_replace('#', '%23', $c).'&b='.str_replace('#', '%23', $b).'&a='.str_replace('#', '%23', $a).'&page='.$i.'">'.$i.'</a> '."\n";
    }
}

$article['text'] = $pps;
///////////////////////////////////////////////////////        



        show_window($title, rcms_parse_module_template('art-article.tpl', $article));
..............
Не идеально но работает :)

P.S. Жадность - плохое качество.

Первое предупреждение.
Den1xxx

P.S.
Во-первых, я никому ничего не должен.
Во-вторых, поздравляю с успешным включением в работу вашего межушного нервного узла.
Раз включившись, он может быть понадобится для более полезных вещей.