Roffun |
|
---|---|
#43200 Kopusha: я раз 5 начинал писать вопрос и все время сам находил решение за утро) конская конструкция, работает, и я так понимаю ее упростить не реально кроме как плагином который то же самое будет делать? В первую очередь все зависит от целей. Упростить код можно, но для этого нужно вникать в суть задачи, цели, тз, и прочее. Если цель всего лишь вывод разных стилей для <div class="_padding-top-30">, то подобные реализации не обязательно делать через кучу условий. 1. Если можно оптимизировать код с помощью css - стоит оптимизировать, почему бы не заменить style на класс, а потом с помощью css подставлять ? p.s. сейчас покажу на примере Добавлено 29 минут спустя: Например, для users пример с помощью html класса и css к нему: <style> [class*="traveller-"]{ height: 500px; background-color: #fff; background-size: cover; background-repeat: no-repeat; } .traveller-users-map { background-image: url(themes/traveller/img/cover_16.jpg); background-position: center 75%; } .traveller-users-nomap { background-image: url(themes/traveller/img/cover_15.jpg); background-position: center 75%; } .traveller-users-profile { background-image: url(themes/traveller/img/cover_21.jpg); background-position: left 75%; } .traveller-users-details { background-image: url(themes/traveller/img/cover_21.jpg); background-position: left 75%; } </style> <!-- IF {PHP.env.ext} == "users" --> <!-- IF {PHP|cot_import('map', 'G', 'TXT')} --> <div class="_padding-top-30 traveller-users-map"> <!-- ELSE --> <!-- IF {PHP.m} != 'profile' AND {PHP.m} != 'details' --> <div class="_padding-top-30 traveller-users-nomap"> <!-- ENDIF --> <!-- IF {PHP.m} == 'profile' --> <div class="_padding-top-30 traveller-users-profile"> <!-- ENDIF --> <!-- IF {PHP.m} == 'details' --> <div class="_padding-top-30 traveller-users-details"> <!-- ENDIF --> <!-- ENDIF --> <!-- ENDIF --> А вот для остальных с помощью отдельных tpl для примера: <!-- IF {PHP.env.ext} == "index" OR {PHP.env.ext} == 'folio' OR {PHP.env.ext} == 'marketorders' OR {PHP.env.ext} == 'market' OR {PHP.env.ext} == 'projects' OR {PHP.env.ext} == 'page' OR {PHP.env.ext} == 'forums' --> {FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-{PHP.env.ext}.tpl"} <!-- ELSE --> {FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-default.tpl"} <!-- ENDIF -->
Добавлено 1 час спустя: И наконец вариант с PHP функцией для примера, для users и index, остальное можно дописать самостоятельно на основе примера. В каждом шаблоне есть PHP файл с названием шаблона, например nemesis.php, в него добавляете такой код: function traveller() { global $env, $m; $traveller_class = ''; if (in_array($env['ext'], array( 'index', 'users', 'page', 'forums', 'projects', 'folio', 'market'))) { $traveller_class = 'traveller-' . $env['ext']; switch ($env['ext']) { case "users": if (cot_import('map', 'G', 'TXT')) { $traveller_class .= '-map'; } else { if ($m != 'profile' && $m != 'details') { $traveller_class .= '-nomap'; } if ($m == 'profile') { $traveller_class .= '-profile'; } if ($m == 'details') { $traveller_class .= '-details'; } } break; case "index": //$traveller_class .= '-any'; break; case "page": //$traveller_class .= '-any'; break; case "forums": //$traveller_class .= '-any'; break; case "projects": //$traveller_class .= '-any'; break; case "folio": //$traveller_class .= '-any'; break; case "market": //$traveller_class .= '-any'; break; } } return $traveller_class; } В нужном месте шаблона можно использовать функцию одним из нескольких способов: 1. Добавить к html коду функцию, она будет выводить класс, если совпадает условие или исчезать если условие не совпадает: <div class="_padding-top-30 {PHP|traveller}"> 2. Использовать как условный оператор: <!-- IF {PHP|traveller} --> или <!-- IF {PHP|traveller} == 'traveller-users-nomap' --> 3. Придумать самостоятельно что еще с ней можно делать. Итог: Для перечисленных в условии расширений функция будет возвращать класс вида traveller-расширение или если есть дополнительное условие как для users, то будет возвращать traveller-расширение-приставка. Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|
|
Bu gönderi Roffun tarafından düzenlendi (2017-12-14 20:16, 7 yıllar önce) |