Форумы / National / Russian / Идеи / Chunks

<<<123456>>>

Куски кода в шаблоне

Macik
#46 03.09.2014 10:25
#39765 PRoHtml:
Плагин такой я уже сделал, Плагин называется Myads  

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

Добавлено 21 минута спустя:

Для таких целей в плагине Myads предусмотрено два поля, в которые можно добавлять любое количество внешних скриптов, каждый с новой строки. Это удобно тем, что вы один раз в шаблоне header.tpl и footer.tpl добавляете специальный тег, который также как и блоки можно в любой момент включить или выключить. Все скрипты которые будут прописаны в соответствующее поле, появятся автоматически в том месте, где выведен тег.

Выделенная строка ввела в ступор т.к. думал, что речь о том, что скрипты грузятся только там где используется тег слота. А оказывается ресь о теге HEADER_MYADSCONNECTS.

 

Добавлено 12 минуты спустя:

#39766 Sergey:

Я когда читаю твои посты ужасаюсь, т.к. половину текста не могу осмыслить. Представляю, сразу что мои посты, наверное, тоже не все догоняют.

#39766 Sergey:

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

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

#39766 Sergey:

Я так прикинул, то очень даже интересная мысль, которая вообще нигде не встречалась. Действительно, слот можно разрезать, разрезать дальше и собрать в нечто единое.

В голове это давно вертится. Некая возможность сделать переопределение стандартных шаблонов на редакируемые.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Отредактировано: Macik (03.09.2014 10:39, 9 лет назад)
Sergey
#47 03.09.2014 11:10

Я когда читаю твои посты ужасаюсь, т.к. половину текста не могу осмыслить. Представляю, сразу что мои посты, наверное, тоже не все догоняют.

Да это так.

Котонти не смог идеологически выйти  из идей LDU.  Оливье потому ушел из своего проекта, потому что не увидел его развития, а если и увидел, то понял что не потянет. Даже больше, тот вариант потерял, например, приоритеты администраторов и модераторов. В Седетио появились страницы, но развития этой идеи не произошло. Хотя, надо признать, что я выкладывал модуль с решением введения псевдонимов для страниц. Теперь об адаптивности. Это направление предлагалось в самое начало создание Котонти... но другие в это время делали твиттер и фейсбук, а могли бы быть ими мы. В настоящее время я не вижу развитие самой концепции Котонти. Да, есть решения, улучшения, плагины, - это все интересно для текущего выполнения гребка веслом, но никуда не плывем.

www.cotonti.mobi
Roffun
#48 03.09.2014 11:13
#39768 Macik:

Выделенная строка ввела в ступор т.к. думал, что речь о том, что скрипты грузятся только там где используется тег слота. А оказывается ресь о теге HEADER_MYADSCONNECTS.

 

 {HEADER_MYADSCONNECTS} и {FOOTER_MYADSCONNECTS} - два универсальных тега, помимо слотов для меню. 

{HEADER_MYADSCONNECTS} - устанавливается в header.tpl , и все внешние скрипты которые добавляются в его поле в админке, выводятся эти тегом.

{FOOTER_MYADSCONNECTS} - устанавливается в footer.tpl , и все внешние скрипты которые добавляются в его поле в админке, выводятся эти тегом в футере.

Это теги именно для внешних скриптов. 

Например adsense , дает код, 1 - внешний скрипт, который размещается в header или footer .

Остальная часть - в нужном месте вывода рекламного блока. 

Если таких внешних подключений несколько, например яндекс, адсенс, виджеты соцсетей и тд, то каждый с новой строки добавляется в админке в одно из этих полей, вместо правки шаблона .

 

Это не касается тегов самих слотов в плагине, которые имеют формат {PHP.myads1} , они глобальные 

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
Отредактировано: PRoHtml (03.09.2014 12:51, 9 лет назад)
Macik
#49 03.09.2014 17:31
#39770 Sergey:

введения псевдонимов для страниц.

А что дают всевдонимы?

Теперь об адаптивности. Это направление предлагалось в самое начало создание Котонти...

Адаптивность больше относится к визуализации, и как результат к шаблонам. В чем трудность сделать адаптивную тему? 

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

Ок. Котонти всегда открыт новым и масштабным идеям. Но где они?… 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Yusupov
#50 03.09.2014 18:43

Объясню ситуацию со своей колокольни. На мой взгляд Cotonti это фреймворк, который лично для меня позиционируется как сборка скриптов для веб-сервисов. В этом плане он не плохо себя показывает как хорошая платформа для создания таких ресурсов как интернет-магазины, соцсети, торговые площадки, биржи и тд. Было бы желание сделать соответствующие модули и плагины к ним. Его модульность позволяет гибко и без вмешательства в ядро расширять функционал. Поэтому чем больше будет возможностей для расширения этой гибкости, тем лучше для веб-разработки на фреймворке. Чанки, как и возможность вызывать php-функции с несколькими параметрами непосредственно из шаблонов, - это очень хорошие фишки для такого фреймворка и они очень нужны разработчикам. В связи с этим поддерживаю мнение, что направление выбрано очень даже правильное. Но я не такой спец, чтобы оценить адекватно, как именно это нужно реализовать, чтобы не было ущерба для безопасноти и сторости загрузки сайта. И хорошо что здесь есть гуру, которые всегда могут четко оценить необходимость внедрения той или иной фишки!

Пока возникает вопрос по нагрузке на шаблонизатор при внедрении новых возможностей. Как оценить на сколько сильно повысится нагрузка на его работу и соответственно на скорость загрузки страниц, если будет возможность внедрять собственные коллбэки?

И еще такой момент, получается, что для вызова чанка или какой-либо функции (в которой более одного параметра) прямо в шаблоне, будет использоваться практически аналогичный приницип. Правильно я понимаю?

 

Про адаптивность конечно тут вообще не в тему, но замечу. Адаптивность это немного не та фишка, которая нужна всегда и везде и как было отмечено выше это все-таки больше вопрос верстки и не считаю этот момент создает какие-то проблемы для существования и развития Cotonti. 

Sergey
#51 03.09.2014 22:37
#39778 Macik:
#39770 Sergey:

введения псевдонимов для страниц.

А что дают всевдонимы?

Теперь об адаптивности. Это направление предлагалось в самое начало создание Котонти...

Адаптивность больше относится к визуализации, и как результат к шаблонам. В чем трудность сделать адаптивную тему? 

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

Ок. Котонти всегда открыт новым и масштабным идеям. Но где они?… 

А что дают всевдонимы?

Начну с плагина новости. В пределах статьи есть скрытая страница с псевдонимом news

обявлена так:

[-новая страница=news]

знак минус это как раз теневая страница. Теневые страницы воспроизводятся по требованию. 

У меня может быть так: новость, что есть новый товар по цене, новость что такой товар со скидкой и подобное. У меня, одна статья может располагаться в нескольких разделах (категориях), а в установках плагина можно указать, из каких категорий нужно выводить новости. Плагин рассматривает очередную категорию. Прежде всего он готовит общее обрамление для категории. Находит темлейт типа news.очередная_категория.tpl. В этот шаблон парсятся все новости этой категории. Это сделано так, чтобы можно выводить новость категории похожим образом. Например словом: Сковорода квадратная, скидка 70%, а в другой категории можно вывести новость:Сковорода квадратная, цена 3 рубля.

когда оформляется статья с описанием квадратной сковороды, то заполняется страница news. В ней мы указываем альтернативы. Выбирается только одна альтернатива. Альтернатива это именнованный абзац с ключами активации.для примера это будет так:

[title,news=скидка]Обалденная сковорода с оболденной скидкой [/title]

Сковорода квадратная, скидка 70%

[title,news=цена]Что -то нужное за три рубля [/title]

Сковорода квадратная, цена 3 рубля

--

Плагин находит страницу новостей (пседоним news) А в ней нужную альтернативу. Для каждой группы новостей выводится свой вариант новостей. А вот и адаптиность RESS, есть метки устройства отображения, типа брааузера, кто зашел и т.д. 17 стандартных ключей. Естественно альтернатив может быть тьма. Но на само деле, обычно несколько. RESS это адаптивность на стороне сервера, зачем тащить все на сторону клиента и упражнятся с джавой для выборки нужного? Нужно отбирать нужное в нужном формате отображения на стороне сервера, а не на стороне клиента, потому bootstap это путь для статичных сайтов, но не для описываемого, динамичного..

Итак имеем два шаблона: один общий как новость, другой как новость категории. А теперь по теме новости. Тот шаблон, который по категории новости парсится в конечном виде так:

$mobinews->parse("NEWS");
	$t->assign('MOBINEWS'.$суффикс, $mobinews->text("NEWS"));

в тег MOBINEWS парсится все содержимое очередной новости но с темплейтом этой новости, а затем в главном темплейте новостей выводится этим тегом в блоке. Естественно, в пределах темплейта категории свои теги, но чтобы их подключить нужен отдельный плагин учитывающий характер категогории новости. Это у меня называется изготовителем - мейкером. Он делается заранее.

А что дают всевдонимы?  можем иметь страницу с псевдонимом доставка, чек, счет и т.д. на что способны. Важно только то, что данные идентифицируются и выбирается удобная альтернатива или для обработки или для отображения.

http://www.cotonti.mobi/page.php?al=mobile_web_news

www.cotonti.mobi
Macik
#52 04.09.2014 15:56
#39781 Sergey:
Сковорода квадратная

По мне это все как «Сковорода квадратная». Ты объясни не детали реализации, а зачем это надо. Я юз кейс не понимаю. Чтобы контент менеджер мог указать какой шаблон использовать и какой текст для новости выводить?

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Sergey
#53 04.09.2014 17:13

Ты объясни не детали реализации, а зачем это надо

Из http://www.cotonti.mobi/page.php?al=shopfront_project_matrix_and_copy для этого

Списки

Чтобы понять, что такое связанный список, достаточно записать нужное из товаров ТЦ для девушки,чтобы она стала эффектной. Покупательница, строго и требовательно, оценивает свой гардероб, она ищет в магазинах то, что подходит ей. То есть, если мы заведем элемент, который указывает на девушку, как покупательницу, то с ней можно связать некоторое множество — список вещей из ее гардероба. Общий признак этого списка «гардероб». А теперь возьмем и объединим в список множество гардеробов других девушек. Тогда, мы получим список размещения, множество вещей всех гардеробов.

А что понимает под списком размещения продавец? Допустим, имеется список всех помад, которые продают все продавцы ТЦ. Это список «Помады», список всех помад ТЦ. Это список размещения. Однако, нам известно, что для каждого цвета помады подходит свой список подходящих аксессуаров: шейный платок, платье, туфли... феррари подходящего цвета. Мы имеем явно связанный список с конкретной помадой. Возникает вопрос, а как организовать такой список? Да очень просто, каждый продавец, «Инициатор», может предложить свой товар, подходящий к помаде аксессуар. Назовем такой список «Аксессуары» Владелец товара «Помада» выступает как «Реципиент»: элемент дающий согласие на принадлежности элемента, например шарфика к конкретному списку «Аксессуары» помады, связанного списка товаров с конкретной помадой.

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

www.cotonti.mobi
Yusupov
#54 04.09.2014 17:38

Это конечно все хорошо, но причем тут чанки? 

Sergey, если у вас есть какие-то конкретные идеи для внедрения в Cotonti Siena, предлагаю создать отдельную тему для обсуждения целесообразности.

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

Sergey
#55 04.09.2014 21:49
#39791 Yusupov:

Это конечно все хорошо, но причем тут чанки? 

Sergey, если у вас есть какие-то конкретные идеи для внедрения в Cotonti Siena, предлагаю создать отдельную тему для обсуждения целесообразности.

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

Конечно не причем Dayver: вопросил, я ответил о решении со слотами  и.. и понеслось.

Я не против, если этот тренд удалят.

Добавлено 47 минуты спустя:

О чанках. Еще раз перечитал. Мой взгляд:.

В любом модуле есть такое или похожее подлючение темплейта:

$mskin = sed_skinfile(array('page', $sed_cat[$pag['page_cat']]['tpl']));
$t = new XTemplate($mskin);


//что там считаем и решаем и назначаем теги
$t->assign(array(
	"ТЕГ!" => $решение_тега1,
	"ТЕГ2" => $решение_тега2,

	"ТЕГN" => $решение_тегаN
));

//........
$t->parse('MAIN');
$t->out('MAIN');

Но можно и так

$mskin = sed_skinfile(array('page', $sed_cat[$pag['page_cat']]['tpl']));
$t = new XTemplate($mskin);

$mskin_чанк_1 = sed_skinfile('темплейт чанка_1');
$t_чанк_1 = new XTemplate($mskin_чанк_1);
$t_чанк_1->parse('MAIN_ЧАНКА');
//
$mskin_чанк_N = sed_skinfile('темплейт чанка_N');
$t_чанк_N = new XTemplate($mskin_чанк_N);
$t_чанк_N->parse('MAIN_ЧАНКА');





//что там считаем и решаем и назначаем теги
$t->assign(array(
	"ТЕГ!" => $решение_тега1,
	"ТЕГ2" => $решение_тега2,

	"ТЕГN" => $решение_тегаN,

	"ТЕГ_ЧАНК_1" =>$t_чанк_1->text("MAIN_ЧАНКА"),

	"ТЕГ_ЧАНК_N" =>$t_чанк_N->text("MAIN_ЧАНКА")
));

//........
$t->parse('MAIN');
$t->out('MAIN');

:

www.cotonti.mobi
Отредактировано: Sergey (04.09.2014 22:39, 9 лет назад)
Dr2005alex
#56 05.09.2014 05:45

Sergey, такое решение будет работать только в узком круге шаблона. К примеру тольк в header.tpl или footer.tpl.  такой кусок надо будет включать в работу при обработке каждого тпл файлаю НО, у нас конечно есть стандартные тпл файла движка. В принцепе для header, foooter,index можно прописать.. а как быть с остальными... ведь чанки должны работать и в сторонних тпл файлов... любых НОВЫХ модулей и любых НЕ стандартных плагинов... их может быть десятки. к тому-же в данной реализации скрипт будет обрабатывать файлы чанков, даже если их теги не будут стоять в шаблоне, где их будут использовать. Таким образом движок будет нагружен в пустуююю.. обработать 10 чанков а использоваться будет 1-2 чанка. Поэтому небходимо расширять шаблонизатор. А за сами чанки будет ответственен плагин. Получается и шаблонизатор будет поддерживать расширение и чанки будут отключаемые (кому надо тот пользуется.) И в пути через расширение шаблонизатора чанки будут парсится только те, которые используются в шаблоне а не те что просто лежат как файл в файловой системе.

WebKaa.ru - Cotonti Relax
Sergey
#57 05.09.2014 06:15

Я это расписал для понимания. Конечно, надо будет делать плагин. Выражение $mskin_чанк_N = sed_skinfile это как раз дилемма подбора файла шаблона tpl. Я указал конкретный вариант для общего понимания. Самое интеерсное то, что генерация чанков может предшествовать загрузке модулей в какой-то общей части. А назначение

$t->assign(array(
    "ТЕГ_ЧАНК_N" =>$t_чанк_N->text("MAIN_ЧАНКА")

хоть где, так как экземпляр класса  $t_чанк_N глобален. Тогда как  очередное

$t = new XTemplate($mskin); 

убивает старое $t.Теоретически, я бы мог свой шаблон таким образом грузить прямо, со своей именнованой страницы статьи, и даже не придется шаблонизатор переделывать, достаточно, такую страницу помещать в файл шаблона плагином. Хотя можно и обойтись всем содержанием статьи. Но тут, надо думать о защите. Или иметь специальные системные и недоступные всем страницы, а  то взломают сайт. Такая страница или оганизовывала бы файл шаблона, или меняла его. Это всегда единожды.

---

Что касаемо вставить тег для этого у меня есть такая штучка Тег-процессор:

Тег это некая единица информации имеющая свое имя. Пример тега:
 

{{PAGE_SHORTTITLE}}


где в фигурных скобках, которые обозначены как {{ и }} указано имя тега.

Процесс формирование какого либо параметра на ресурсе в CMS Cotonti происходит по следующему сценарию:на серверной части формируются теги. Далее теги вставляются в темплейт. Полученный результат отображается на экране.

Для наиболее полного использования плагина Mobile web: slots необходима вставка тегов. Ранее приведенный тег {HEADER_NOTICES} формируется модулем header.php. Этот тег предназначен для вывода сообщение юзеру, например о письмах, полученных для него. Когда формируется меню, в котором используется этот тег, то встает вопрос, а как быть с разными моделями и юзерами. Если для статических меню, проблем не возникает, то проблемы возникают для пунктов меню, которые формируются динамически,"на лету", зависимости от того, кто посетил ресурс и с какого устройства посетил.
 

Тег-процессор как раз и решает эту проблему.


Для того, чтобы вставит тег необходимо в тексте слота указать:

{{ИМЯ_ТЕГА}}


Тег якоря HTML тег А, содержит аргумент (то, что отображается на экране) Аргумент, в зависимости от ситуации(язык, скин, тема) бывает необходимо заменить Для того чтобы заменить такой аргумент предназначена несколько иная форма:
 

{{ИМЯ_ТЕГА}новый аргумент}

подробно тут  http://www.cotonti.mobi/page.php?al=tag_processor

Чтобы не обрабатывать все чанки достаточно связать обработку с зоной $z - все просто.

www.cotonti.mobi
Отредактировано: Sergey (05.09.2014 08:43, 9 лет назад)
Macik
#58 05.09.2014 10:53
#39794 Sergey:

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

Описанный вариант уже реализован в «alot-n-tags». Вот только от этого мы как раз и стараемся уйти, т.к. в чанках хочется использовать полный функционал шаблонов, а главное иметь возможность использовать переменные текущего шаблона. Если формировать чанк заранее, то в нем невозможно будет указать многие Теги т.к. они еще не определены. 

Тег это некая единица информации имеющая свое имя. Пример тега: {{PAGE_SHORTTITLE}}

А чем не устраивают колбеки для этих целей?

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Sergey
#59 05.09.2014 11:47

А чем не устраивают колбеки для этих целей?

Это для любимых юзеров, чтобы они могли сами вставлять теги в свои статьи или посты,  куда им нравится.

главное иметь возможность использовать переменные текущего шаблона. Если формировать чанк заранее, то в нем невозможно будет указать многие Теги т.к. они еще не определены

Дык, так у меня похожая ситуация, так выглядит меню юзера:

[item, класс=меню в линию,alt=]
{{HEADER_USER_ADMINPANEL}}
•
{{HEADER_USERLIST}}
•
{{HEADER_USER_PROFILE}}
•
{{HEADER_USER_PFS}}
•
{{HEADER_USER_PMREMINDER}} 
[/item]

но, как только попадает в область видимости, то сразу  Users•Profile•My files•No private messages  а может и на другом языке или с картинками. Как раз, я еще не знаю, что там дальше определиться.

Но вы, в своем правы, конкретное использование опредеяет интстумент..Как я смог бы использовать чанки, я не знаю. Не знаю потому, что надо пробовать, смотреть. С ходу такое я не буду отбрасывать, это глупо. Вы долго продумывали это, вам известны подводные камни и практика применения. У меня планируется много новых инструментов, некоторые отработаны, другие ждут очереди, например

 

Другой, замечательной стороной такого решения является то, что можно содержанием страницы «расписать» содержимым альтернативы. Например, довольно часто, встречается такая ситуация, что необходимо указать дополнительные сведения об авторе. Google+ Привязка к профилю Google+ с помощью атрибута rel="author", требуется подтверждение авторства, необходима фотография с определяемым на ней человеческим лицом. Конечно, определение можно вставить в персональные данные юзера...но такого не предусмотрено, а часто и не положено. Когда юзер вносит что-либо в таблицы баз, очень велика вероятность попытки взлома сайта, поэтому фильтры CMF Cotonti не дадут ввести иную информацию, кроме как простой текст без тегов. Каждое такое внесение имеет, кроме того, ограниченную длину и не предусматривает механизма применения RESS технологии.

В механизмеMobiCotдля альтернатив можно ввести в тексте подробное описание для тега.

Так, для вывода сведений об авторе вGoogle+, может быть переопределен тегPAGE_AUTHOR:

[-newpage=PAGE_AUTHOR]

[title]Сведения об авторе[/title]

[url=https://plus.google.com/102142376663746186500?rel=author]Sergey Kocha[/url]

Как вы поняли, из примера, текст страницы, в этом случае, заменяет содержание тега PAGE_AUTHOR, Так как страница теневая (-newpage), она будет использоваться только для переопределения тега PAGE_AUTHOR.

Конечно, в каждом модуле или этапе CMF Cotonti свои теги, не все теги можно переопределить и не все этапы доступны таким образом.
www.cotonti.mobi
Macik
#60 06.09.2014 14:00

JFYI: Начали работать с Алексом над реализацией идеи.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F

<<<123456>>>