Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

 
 
Опции темы Опции просмотра
Старый 14.02.2013, 22:03   #28
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
А тут user_content_image->main, получается, вы полностью сделали свою логику обработки IMAGE ?

Запостите сюда для народа
Да - и еще пару моментов - на заметку - что бы не забыть в первую очередь - т.к. думаю что это будет обмен опытом...

1. которого я так долго ждал: я ушел от папки fileadmin - т.е. я больше не использую ее для хранения шаблонов сайта, функций и всего прочего: - она у меня осталась чистой - только для "tree" (я ее так называю) - т.е. по чпу она у меня копирует содержимое сайта...

Например есть раздел:
http://studsovet-life.ru/projects/zkp-42/
соответственной в fileadmin есть
fileadmin/projects/zkp-42/ - где хранятся фотки для данного раздела и материалы zip , rar - если они есть , в данном проекте фоновое изображение!

и в настоящем я готов убить любого - кто перемещает данную логику расфасовки материала! -

Стараюсь закрывать все на index кроме fileadmin, uploads (хотя данную папку я тоже стараюсь не использовать т.к. она дублирует контент - а это лишний объем и основного сайта !

2. момент - никогда не использую javascript и style в html-коде - все выношу во внешние файлы (исключение metrika) - таким образом получается начистейший код
- ну и так как ext-у меня только самый минимум - html кода и php-кода лишнего нет - в т.ч. extbase...

в данном проекте логика построения systemdir Такая:
depo.css - основной стиль дизайна
content.css - стили контента
content.m.css - стили контента (переписывают content.css)
content.p.css - стили контента (переписывают content.css)
для мобильных используются специальный jquery mobile css

--
document-ready.js - запуск проекта
document-ready.m.js - запуск проекта мобильный

хотя в больших проектах
document-ready.js - собирается из различных кусочков
в данном проекте document-ready.js один...


3. момент - ну это касательно таблиц pages и tt_content - данный проект построен исключительно на страницах - а вообще страницы использую по минимуму - в основном на них работают плагины - которые создают виртуальный страницы и содержимое (возможно без виртуальных страниц).... а tt_content предлагает создать контент (картинка, изображение, текст, файл) - для упрощенных проектов это вполне приемлемо - но создавать страницы по такому набору в больших проектах - это очень не удобно) - и это к вопросу о данном расширении: http://forum.typo3.biz/showthread.php?t=6697

Для редакторов сайта как вижу нужно задавать жесткую форму (где уже скрипт сам автоматически расставит элементы)...
Вот если посмотреть http://newsland.com/news/detail/id/1125491/
то здесь каждая новость имеет жесткий набор параметров (заголовок, фото с права, комментарии, текст)
таким образом - одна новость = одна запись в БД
а с http://forum.typo3.biz/showthread.php?t=6697 - одна новость = несколько записей в БД
Причем фото с права вставляется не через визуальный редактор - а через специальное поле для этого - уверен на 110%!

4. ну и по поводу css_styled_content (примеры):

ХОЧУ ПОДЧЕРКНУТЬ ОДИН МОМЕНТ - очень важный на мой взгляд для понимания - typo3 через css_styled_content - пытается стандартизировать то, что в принципе не возможно стандартизировать - т.к. это зависит от проекта - поэтому перешел на user->main()

Картинки images.php:
PHP код:
<?php
//Элемент контента - а) список изображений  (cType image) б) изображения с текстом (cType textpic)
class user_content_image {
    var 
$cObj;

    function 
main($content$conf) {
        
    
        
//Разбиваем загруженные изображения, а также стили к ним и подписи
        
$allStyle explode(chr(10) , $this->cObj->data['imageorient']);
        
$allTitle explode(chr(10) , $this->cObj->data['imagecaption']);
        
$allImage explode("," $this->cObj->data['tx_emreferences_filereferences']);
        for (
$i 0$i count ($allImage); $i ++)
        {
            
//imageorient  (стандартный-ничего не трогаем | half 191c - половинчатое изображение | wide широкий | wide text широкий с текстом)
            //Создаем уменьшенную копию изображения
            
$arrImgParams['file'] = 'fileadmin/'.$allImage[$i];
            
$arrImgParams['file.']['width'] = (trim($allStyle[$i]) == "wide" || trim($allStyle[$i]) == "wide text") ? '404c' '120c';
            
$arrImgParams['alttext'] = str_replace("|>" false$allTitle[$i]); //удаляем "самовведенный тэг" перевода строки
            
$arrImgParams['titleText'] = str_replace("|>" false$allTitle[$i]); //удаляем "самовведенный тэг" перевода строки
            
$img $this->cObj->IMG_RESOURCE($arrImgParams);
            
            
            
//Удаляем атрибуты width и height
            //$img = preg_replace("/(width=\".+?\"|height=\".+?\")/", null,$img); 
            
            
$img "/".$img;
            
            
            
//Узнаем размеры временного изображения, что бы вписать их в style div
            
preg_match('/src=([\'"])?((?(1).+?|[^\s>]+))(?(1)\1)/is'$img$basename);
            
$size getimagesize ($basename[2]); 
            
            
            
//параметры для моб. версии сайта
            
$jquerymobile 'rel="external"'// data-something="something'.$i.'" data-another-thing="anotherthing'.$i.'"
            
            //css-класс для больших 100% и маленьких 33%-изображений
            
$cssClassImage = ($arrImgParams['file.']['width'] == '404c') ? 'width100' 'width33' ;
            
            
            
//Вариант №2 - с подписью и при условии, что подпись существует
            
if (trim($allStyle[$i]) == "wide text" AND strlen (trim($allTitle[$i])) > )
            {
                
$content .= '<div class="imageBox"><div class="imageFrame text '.$cssClassImage.'" style="width: '.$size[0].'px; height: '.$size[1].'px;">
                <a class="imageZoom" title="'
.$arrImgParams['titleText'].'" href="/fileadmin/'.$allImage[$i].'" '.$jquerymobile.'><img src="'.$img.'" alt="'.$arrImgParams['titleText'].'" border="0"></a></div>';
                
                
//Если существует текст и cType textpic
                
if ($this->cObj->data['CType'] == "textpic")
                {
                    
$this->cObj->data['bodytext'] = $this->cObj->parseFunc($this->cObj->data['bodytext'],$GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.']);
                    
$content .= '<div class="textAlt">'.$this->cObj->data['bodytext'].'</div></div>';
                }
                else
                
$content .= '<div class="textAlt">'.str_replace("|>" "<br />"$allTitle[$i]).'</div></div>';
            }
        
            
//Вариант №1 - без подписи
            
else
            
$content .= '<div class="imageFrame text '.$cssClassImage.'" style="width: '.$size[0].'px; height: '.$size[1].'px;">
            <a class="imageZoom" title="'
.$arrImgParams['titleText'].'" href="/fileadmin/'.$allImage[$i].'" '.$jquerymobile.'><img src="'.$img.'" alt="'.$arrImgParams['titleText'].'" border="0"></a></div>';
        }

        return 
'<center><div class="imageWrap">'.$content.'</div></center><br class="clearall" style="clear: left;">';
    }

}


?>
Слайдер sliderz.php
PHP код:
<?php
//Наполнение слайдера в шапке изображениями

class user_sliderz {
    var 
$cObj;

    function 
main($content$conf) {
        
        
$handle opendir (PATH_site."fileadmin/def-studsovet-x/systemdir/images/slider/");
        
            
//Собираем массив с файлами слайда
            
while($file readdir($handle))
            if (
is_file(PATH_site."fileadmin/def-studsovet-x/systemdir/images/slider/".$file))
            {
                
$path_parts pathinfoPATH_site."fileadmin/def-studsovet-x/systemdir/images/slider/".$file ); 
                
$sliderlement$path_parts["filename"] ] = $file;
            }
            
            
//Сортируем массив
            
ksort ($sliderlement);
            
            
//Выводим содержимое (собираем контент)
            
foreach ($sliderlement as $key => $val):
            
                
$content .= "<div class='element'><img src='";
                
$content .= "/fileadmin/def-studsovet-x/systemdir/images/slider/".$val;
                
$content .= "'></div>\n";
            
            endforeach;
        
        return  
$content;
    }

}


?>
при подобном подходе можно применять очень служную логику - "шаблон > фотографии > поля для ввода"
Но как вижу - задача программиста ни в том, что бы создавать сложную логику (это опять же к вопросу того, что обсуждалось на форуме - где-то писалось что создать такой же магазин как у битрикса очень сложно - ссылаясь на то, что там очень много зависимостей - самый сложный участок - это интеграция с 1С или другой системой, да и вообще в любых задачах - а в остальном терпимо!) а в том, что бы создать формы для ввода данных - что бы ее потом могли легко заполнить отдел секретарей - и ничего не сломать...

5. момент sitemap.xml и robots.txt - Генрятся через TS

и если еще что-то вспомну - напишу красненьким сюда же...




Последний раз редактировалось Ивано++; 14.02.2013 в 22:34
Ивано++ вне форума   Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
T3CON12DE - Community, the TYPO3 family and Neos RSS Bot Новости TYPO3 (на английском) 0 16.10.2012 20:10
T3CON12DE - Community, the TYPO3 family and Neos RSS Bot Новости TYPO3 (на английском) 0 16.10.2012 13:47
T3CON12DE - Community, the TYPO3 family and Neos RSS Bot Новости TYPO3 (на английском) 0 15.10.2012 20:10
T3CON12DE - Community, the TYPO3 family and Neos RSS Bot Новости TYPO3 (на английском) 0 15.10.2012 16:06
TYPO3 или нет?! nops Вопросы выбора CMS 28 24.02.2012 21:42


Часовой пояс GMT +4, время: 09:49.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория