Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - technoexpert

Страницы: [1]
1
Так с копанием-то всё просто. Сформируйте GS любой стронней программой так, чтобы показывались все страницы - на всех нужных вам языках - если так получится. Подобных программ для генерации полный Гугл - хоть онлайновых, хоть офлайновых. А потом сравните с той картой, что генерируется UMI - вот и будет видно, что она туда недописывает. Тогда уже можно будет посмотреть, где оно недописывается в системе...

2
Собственно, всё оказалось проще некуда - сам спросил и сам ответил. За время звучания трёх композиций Neo Inferno 262 макрос был внедрён, благо совсем простой.

Это пишем в /classes/modules/custom.php


      public function list_position_string_add($posnumber, $string, $padlength, $position) {
         if($position == 'right') {
            $stringadd = str_pad($posnumber, $padlength, $string);
         } elseif($position == 'left') {
            $stringadd = str_pad($posnumber, $padlength, $string, STR_PAD_LEFT);
         } else {
            $stringadd = str_pad($posnumber, $padlength, $string, STR_PAD_BOTH);
         }
         return $stringadd;
      }

---------------------------------------------------------------------------------------------------------------------------------------------

Вызываем так:

%custom list_position_string_add('%list-position%', <чем дополняем>, <количество регистров>, <позиция>)%

---------------------------------------------------------------------------------------------------------------------------------------------

Вызов

%custom list_position_string_add('%list-position%', 0, 3, left)%

переформатирует ваш вывод 1 2 3 4 ... 22 23 24 ... 123 124 125 и т.д. как 001 002 003 004 ... 022 023 024 ... 123 124 125 - т.е добавит слева ко всем числам, имеющим в своём составе меньше трёх знаков, нули с тем условием, чтобы количество цифр в числах стало равным трём. А вызов

%custom list_position_string_add('%list-position%', Q, 2, right)%

превратит вывод в 1Q 2Q 3Q 4Q ... 22 23 24 ... 123 124 125 - т.е. добавит справа ко всем числам, имеющим в своём составе меньше двух цифр, букву Q с тем условием, чтобы количество знаков в выводе стало равным двум.

Также можно добавить знак (и не один - но считаться всё равно будет общее количество знаков) с двух сторон от желаемого вывода - для этого просто нужно опустить значение позиции при вызове - но тогда стоит не забывать, считается именно количество знаков в выводе и для получения вариантов типа Q1Q Q2Q Q3Q Q4Q Q5Q запрос выглядит, как

%custom list_position_string_add('%list-position%', Q, 3)%

 , а для двузначных чисел вывод уже будет 11Q 12Q 13Q и т.д., потому как добавление идёт по умолчанию вначале справа.

---------------------------------------------------------------------------------------------------------------------------------------------

И есть обоснованное подозрение, что если в вызове заменить подмакрос %list-position% на любой другой - например, %price%, то это тоже будет работать - теоретически, должно работать с любыми строковыми и численными выводами вообще.

P.S. Да, для тех, кто любит плохо читаемый, но короткий код, в custom.php можно написать:

      public function list_position_string_add($posnumber, $string, $padlength, $position) {
         return $stringadd = ($position == 'right') ? str_pad($posnumber, $padlength, $string) : ($position == 'left') ? str_pad($posnumber, $padlength, $string, STR_PAD_LEFT) : str_pad($posnumber, $padlength, $string, STR_PAD_BOTH);
      }

3
Собственно, простая, вроде бы, задача. Нужно изменить вывод подмакроса %list-position% в каталоге.

Обычно он выводит в виде 1 2 3 4 5 6 7 8 9 10 11 12 и т.д., а нужно, чтобы выводил
01 02 03 04 05 06 07 08 09 10 11 12 - вот и вопрос, если какой-либо вариант поправить сие, кроме как лезть в ядро?

4
admin

Обработка через js - увы, это получаются такие костыли, что лучше с этим и не связываться.

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

По поводу макросов - я просто некорректно написал. Имел в виду, что мне пока непонятно, как это вставить в макрос. У меня проблемы с пониманием, как мне забрать значение, полученное при обработке шаблона - т.е. сосчитаную позицию из каталога, обработать её и вернуть в шаблон обратно, в случае соответствия определённому значению. Или я и считать долже в макросе? Тогда это странно, потому как происходит дублирование функций CMS. А хоть с какими примерами в документации UMI, как я уже упоминал, дело обстоит крайне хреново - всё на уровне "догадайся сам"...

5
robert

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

Почему не хочу с DIV-ами - ну, во-первых, потому что предпочитаю вообще табличную вёрстку. Она железобетонная, а не жидкая каша, как с DIV-ами, ведущая себя по-разному на разных системах. Потом, необходима совместимость с достаточно древними браузерами, ибо варианты для созерцания - "загрузите более современный браузер, потому что в вашем наш суперсайт не работает" - показывать клиенту считаю за полную порнографию. И ещё неприятный момент с DIV-ами. Если в таблице разная информация по размеру в ячейках, то они - TD-шки - саморегулируются по высоте в пределах ряда. Если такое сделать DIV-ами - в несколько рядов - то обычно получаем наезжающую друг на друга кашу...

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

6
Собственно, вопрос в заголовке. Каким образом реализовать многоколоночную вёрстку, избежав использования div-ов и всяких разных float. Если упрощать вопрос, то необходимо вывести NN-ное количество позиций из каталога и поставить тег, потом ещё столько же - снова тот же тег и т.д. Как оно реализуется на php- - понятно, но как это сделать в UMI - неясно, ибо с внедрением кода в шаблоны здесь совсем никак. Есть ли какие встроенные решения? Что использовать - tpl или xslt - мне без разницы.

Страницы: [1]