Вверх ↑
Этот топик читают: Гость
Ответов: 47
Рейтинг: 2
#1: 2009-04-10 09:00:29 ЛС | профиль | цитата
Dilma сделал компоненты DM_ruller и DataManager, но они имеют ограничение - вместе их можно использовать только один раз на странице, иначе будет неправильно работать код страницы.

Я решил обойти это ограничение и модифицировал эти два компонента, добавив немного кода и по идентификатору

Некоторые пояснения -

Для передачи номера страницы, используется переменная start, отправляемая при помощи GET-запроса.
В оригинальных компонентах эта переменная имеет одно и тоже самое название, потому при передаче запроса от одной линейки он передавался сразу всем.
Для избежания этого я ввел идентификатор, который изменяет название этой переменной и некоторых других. Т.к переменные эти не сохраняются, точнее они инициализируются либо 0, либо значением из полученного GET запроса, который не всегда будет, ведь нужно не одну линейку на странице - то я не мурдствуя лукаво просто сохраняю эти значения в coocie, по одной переменной на каждую линейку.

Что-бы все правильно работало, дополнительные идентификаторы должны совпадать в компонентах, а также идентификатор должен быть написан в 1 строке StrCat типа:

идентификатор равен 8

http://my_site/smiles_bd.php?start8=

пример с измененными компонентами:
http://guitarschems.ex6.ru/upload/lineyki_php.rar
------------ Дoбавленo в 09.00:
Ну хоть бы отписали, что это бред и валил бы я...
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2009-04-10 10:37:15 ЛС | профиль | цитата
было бы неплохо описать именно изменения. А то не совсем понятно зачем скажем было менять что-то в DM_ruller, если он от параметра start никак не зависит(ему это значение передается в потоке). Ну а в DataManager вроде как достаточно было просто _id_ дописать ко всем вхождениям строки "start"
карма: 27
0
Ответов: 47
Рейтинг: 2
#3: 2009-04-10 11:10:37 ЛС | профиль | цитата
Dilma писал(а):
А то не совсем понятно зачем скажем было менять что-то в DM_ruller, если он от параметра start никак не зависит(ему это значение передается в потоке)

Действительно, неувидел. Просто смутило то, что в функции makePage используется одноименная переменная, вот и все. Значит, dmruller менять не нужно.
Dilma писал(а):
Ну а в DataManager вроде как достаточно было просто _id_ дописать ко всем вхождениям строки "start"

Можно, не спорю. Но для "узнавания" значения _id_ требуется смотреть итоговый скомпилированный код, что не очень то удобно, если в теле страницы с десяток другой линеек Плюс это возможность сделать по несколько линеек на одну переменную $_GET["start"], например для вывода линейки снизу и сверху страницы с постами пользователей, так что вещь не бесполезная. Можно было вывести _id_, но я не сообразил как

Описание изменений:
В файле кода:
1) В функции beginForm() введена обработка переменной coocie при наличии линейки

if(linked(onPages))
println('session_register("start' + idcount +'");')
println('if($_SESSION["start' + idcount +'"]=="") {')
println('$_SESSION["start' + idcount +'"]=0;')
println('}')
println('if(isset($_GET["start' + idcount +'"])) $_SESSION["start' + idcount +'"]=$_GET["start' + idcount +'"];')
println('$start' + idcount +'=$_SESSION["start' + idcount +'"];')
Суть проста - регистрируем сессионную переменную, делаем первичную инициализацию - если переменная пуста, приравниваем ее к нулю. Если появился запрос GET с аналогичным индексом, то сохраняем значение запроса в переменной coocie, чтобы значение не терялось при отсутствии запроса GET. После переменной $start даем значение от переменной coocie. Можно было упростить, но лень было переписывать код.
2)Для разделения переменных к имени переменной $start приписывается значение идентификатора, который указывается в свойствах. Если идентификаторы будут совпадать в разных DataManagerax, то они будут действовать синхронно. Зачем - описано выше.
В файле Datamanager.ini добавлено поле идентификатора для описанных выше целей.
Если ничего не забыл, то все.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2009-04-10 20:30:14 ЛС | профиль | цитата
alikseyguitar, такое решение имеет большой минус - получается, что невозможно сделать прямую ссылку на любую страницу
------------ Дoбавленo в 20.30:
да и можно пример сайта, где на одной странице выведено два листаемых списка?
карма: 27
0
Ответов: 47
Рейтинг: 2
#5: 2009-04-10 21:17:39 ЛС | профиль | цитата
Dilma писал(а):
alikseyguitar, такое решение имеет большой минус - получается, что невозможно сделать прямую ссылку на любую страницу

Это почему ? Вот пример того скрипта: http://my_site/smiles_bd.php?start1=15&start5=10 Отправка значения идет простым GET запросом, а не прямым изменением cocie. Правда, это не совсем честно, т.к генерируется в запрос только одна переменная. Но возможность есть.
В AJAX и того нету А многим нравится

Dilma писал(а):
да и можно пример сайта, где на одной странице выведено два листаемых списка?

Ну к примеру, берем какой-либо аналог социальной сети или что-то в этаком стиле - линейка прокрутки друзей, линейка прокрутки сообщений, прокрутка видео или музыки, линейка прокрутки комментариев под видеороликом, прокрутка новостной ленты и т.д. Все одно, применение найти можно, если искать. Не одними форумами жив человек
карма: 0

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)