X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> И снова php и html. Ну ниф не выходит
scanread
scanread
Topic Starter сообщение 8.7.2011, 16:16; Ответить: scanread
Сообщение #1


В общем, еще одна трабла с разбором одного кода. Хочу в него адаптировать номера страниц, но толком не могу понять, что и куда.

Попробую объяснить. И так, есть вот код:

<ul class="paginator">
    <li class="larr"><a href="#"><span>Newer posts</span></a></li>
    <li><a href="#">1</a></li>
    <li class="act"><a href="#">2</a></li>
    <li><a href="#">3</a></li>
    <li><a href="#">4</a></li>
    <li><a href="#">5</a></li>
    <li class="rarr"><a href="#"><span>Older posts</span></a></li>
  </ul>


Код этот из части, которую адаптирую. Вид самой части можно посмотреть тут _http://mathsoul.info/sakura/index.html в самом низу - номера страниц.

Теперь, код в самом движке имеет вид такого плана: (я в него дописал ul с классами)



Развернуть/Свернуть




public static function Pages($nums,$per_page,$link_arr=array(),$all=false,$page=0,$onclick='',$gap=8)
    {global $head_addon;
        $Mainclass=Mainclass::getInstance();
        $links=is_array($link_arr) ? $Mainclass->Url->ConstructUrl(array_merge($link_arr,array(array('page'=>'{page}')))) : $link_arr;
        $links=str_ireplace('%7Bpage%7D','{page}',$links);
        $result=array();
        $pages=ceil((int)$nums/$per_page);
        $gap=ceil($gap/2);

        $page=(int)$page;
        $reverse=false;
        if($page==0)
            $page=empty($_GET['page']) ? 1 : (int)$_GET['page'];
        elseif($page<0)
        {
            $page=empty($_GET['page']) ? $pages : (int)$_GET['page'];
            $reverse=true;
        }
        $page=abs($page);
        if($pages>1)
        {
            $result[]='<a href="#" onclick="return JumpToPage(\''.$links.'\',\''.$pages.'\',\''.addslashes($onclick).'\');"><img src="'.$Mainclass->Template->GetImage('gotopage.png').'" alt="'.$Mainclass->lang['main']['goto_page'].'" /></a>';
            if(strpos($links,'{page}')!==false)
            {
                if($reverse)
                {
                    if($page<$pages)
                        $head_addon.='<link rel="prev" href="'.str_ireplace('{page}',$page+1,$links).'" />';
                    if($page>1)
                        $head_addon.='<link rel="next" href="'.str_ireplace('{page}',$page-1,$links).'" />';
                }
                else
                {
                    if($page>1)
                        $head_addon.='<link rel="prev" href="'.str_ireplace('{page}',$page-1,$links).'" />';
                    if($page<$pages)
                        $head_addon.='<link rel="next" href="'.str_ireplace('{page}',$page+1,$links).'" />';
                }
            }
            $i=$reverse ? $pages : 1;
            for(;;)
            {
                if($i<1 or $i>$pages)
                    break;
                if($i==$page)
                
/*Тут начало махинаций */
                    $result[]='<ul class="paginator"><li>'.$i.'</li>';
                elseif($all or ($i<=$gap or $i>($pages-$gap) or $i>=($page-$gap) and $i<=($page+$gap)))
                {
                    $event=$onclick ? ' onclick="return '.str_ireplace('{page}',$i,$onclick).'"' : '';
                    $result[]='<li><a href="'.str_ireplace('{page}',$i,$links).'"'.$event.'>'.$i.'</a></li></ul>';
/*Тут конец махинаций*/    
                }
                else
                {
                    $result[]='<span class="numbersmore">...</span>';
                    if($i>($page+$gap))
                        $i=$reverse ? $page+$gap : $pages-$gap+1;
                    else
                        $i=$reverse ? $gap : $page-$gap;
                    continue;
                }
                if($reverse)
                    $i--;
                else
                    $i++;
            }
            return '<div class="numbers"><b>'.$Mainclass->lang['main']['pages'].' </b>'.implode(' ',$result).'</div>';
        }
        return '';
    }







Чтобы упростить поиск, где и что я допилял, я поставил комментарии. В коде все видно.
Теперь, как оно мне это все вывело можно посмотреть на странице _http://eleanor.exclwork.com/news.html в самом низу. Т.е., работает, но на 1/3 часть. При переходе со 2 страницы на 1 все теряется полностью.

Может будут у кого какае идеи по вопросу?

Сообщение отредактировал scanread - 8.7.2011, 16:20


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kostap13
Kostap13
сообщение 8.7.2011, 16:31; Ответить: Kostap13
Сообщение #2


Вау!!!
Советую сначала заняться рефакторингом кода, тогда и проблема решиться. Делать кучу вложенных if и for нельзя. По сравнению с этим глобальные переменные кажутся детской шалостью.

Да и html код не следует мешать с PHP логикой, используйте include

Сначала сформируйте массив в котором содержутся массивы с 'rel', 'href' ''text', потом уже подключите файл с html шаблоном, в тором в цикле foreach пробежитесь по массиву и сформируете список.

Сообщение отредактировал Kostap13 - 8.7.2011, 16:36
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 8.7.2011, 16:35; Ответить: scanread
Сообщение #3


Kostap13, ага, это к разработчикам движка, пожалуйста smile.gif Не я писал этот движок. Я только хочу его изучить. Комментарии адаптировать вышло, хотя промучался не один день, там вместо одного файла надо было править 2 (но кто знал? думал файла с шаблона будет достаточно, а в итоге - фиг там), один в шаблоне, а один в классах. А тут только надо править этот один файл - файл, который работает из папки классов. И как бы тут дело посложнее. Еще бы примерно знать что за что отвечает - тогда бы было куда проще. А так, нашел часть кода и только, где идет как бы вывод номеров страниц, но как вижу, не совсем то, что надо. Где-то еще собака зарыта....

Сообщение отредактировал scanread - 8.7.2011, 16:37


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kostap13
Kostap13
сообщение 8.7.2011, 16:37; Ответить: Kostap13
Сообщение #4


(scanread @ 8.7.2011, 16:35) *
Kostap13, ага, это к разработчикам движка, пожалуйста smile.gif


Прошу прощения, когда редактировал свой пост, не видел Вашего ответа. В данном движке формирование списка можно вынести в шаблон?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 8.7.2011, 16:41; Ответить: scanread
Сообщение #5


Kostap13, в общем, есть папочка с шаблоном, в ней есть все файлы, но именно вывода страниц нету, этот файл идет с папки, где используются классы и только. В разработчиков спрашивал, сказали, что пока еще не придумали, как вывести нумерацию страниц в отдельный шаблон. Спросил, как тогда быть - ответили, что надо править файл классов, перевесртать под себя.

Вот и сижу и ламаю голову, как? Много чего не понятного, где какое начало, и где какой конец, и что и за что отвечает..... И мучаю методом тыка... А вось что проканает ))))

АПДЕйТ:

Пришло на ум добавить еще парочку новостей. Правда, сделал это на локальном компе. Вот что вышло:

Прикрепленное изображение

По идеи, как и предполагал, где-то еще "зарыта собака". Сейчас бум думать дальше.

Сообщение отредактировал scanread - 8.7.2011, 16:45


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kostap13
Kostap13
сообщение 8.7.2011, 16:49; Ответить: Kostap13
Сообщение #6


Генерируемый этим чудом html прошу выложите...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 8.7.2011, 17:10; Ответить: scanread
Сообщение #7


Kostap13, прописал перед предпоследним ретарном:

header('Content-Type:text/plain');
die($result);


Если я Вас правильно понял. Вывело просто слово Array и все...


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kostap13
Kostap13
сообщение 8.7.2011, 17:21; Ответить: Kostap13
Сообщение #8


Выше вы показали картинку (скрин я такпонимаю). Нужен html код. Если Вы работаете не в IE, то Ctrl-U и там ищите.
Можно ещё в хроме правой кнопкой по элементу - анализировать, тоже самое можно сделать в Фаерфоксе, поставив Firebug

Возможно увидев код, Вы сами поймете проблему.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 8.7.2011, 18:15; Ответить: scanread
Сообщение #9


Kostap13,

<ul class="paginator">
<li>5</li>
<li>
<a href="news/page_4.html">4</a>
</li>
</ul>
<li>
<a href="news/page_3.html">3</a>
</li>
<li>
<a href="news/page_2.html">2</a>
</li>
<li>
<a href="news/page_1.html">1</a>
</li>


В общем, понял немного. Оно не там закрыло список... Сейчас попробую поменять посмотрим что покажет. Уф..

АПДЕйТ: пошли сдвиги...
Прикрепленное изображение

Но все равно что-то еще не так, бррр...

Оно не хочет первой странице присвоить класс нужный, хотя я его прописываю:

$result[]='<ul class="paginator"><li class="act">'.$i.'</li>';


Еще раз АПДЕйТ:

$result[]='<ul class="paginator"><li class="act"><a href="'.str_ireplace('{page}',$i,$links).'"'.$event.'>'.$i.'</a></li>';


Прописал вот так вот, взял с другой части код, все показывает норма, только ссылка активная - то что надо, но она и кликабельная. Осталось продумать, как отключить клибальность, т.е., убрать правильно <a></a>. есть идеи? smile.gif

Если убрать <a></a> и оставить только '.$i.', то результат такой, как на рисунке выше. Просто циферка...

----------------------------------
Видать наверное никак. Это же как никак ссылка.... да и видно, что она активная. Kostap13, спаасибо за некие идеи. Тему можно крыть.

Сообщение отредактировал scanread - 8.7.2011, 18:20


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kostap13
Kostap13
сообщение 8.7.2011, 19:00; Ответить: Kostap13
Сообщение #10


(scanread @ 8.7.2011, 18:15) *
да и видно, что она активная.


Раз она активная, значит у неё есть класс, отличный от остальных. Значит можно найти участок кода, и удалить от туда тег а. Для это нужно знать класс этой ссылки. Для это нужно или в хроме правой кнопкой мышки по ссылке - анализировать, или аналогичные действия в firefox с установленным firebug.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Вёрстка HTML-писем
30 Vampler 29320 27.3.2024, 12:41
автор: Vampler
Открытая тема (нет новых ответов) Разработка/доработка сайтов Wordpress, HTML/CSS/JS
Вёрстка, перенос на WP, правки
9 malamut 3445 25.1.2024, 14:36
автор: malamut
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3384 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1237 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44888 19.7.2023, 10:03
автор: qpPeW


 



RSS Текстовая версия Сейчас: 16.4.2024, 13:09
Дизайн