Я думаю, что для тебя вакансия всегда будет открыта, так что освободишься — стучи. Макеты верстать с нуля надо? Как правило нет, это чаще всего делает верстальщик. Но знать это надо, чтобы по каждому пустяку не скидывать на верстальщика.
Срочно требуется? Просто сейчас 2 проекта в разработке, недели через 2 с ними закончу. HTML, JS, CSS Макеты верстать с нуля надо?
Блин, не часто я публикую примеры из области «как не надо делать», но под катом очень достойный образец… А ведь это только чанк HEADER… Особое внимание обратите на кучу IF-ов, и жестко прописанные ID-шники. Это полнй ппц… <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="ru"> <head>[[!If?
&subject=[[*id]]
&operator=ia
&operand=1,7
&then=
`
&else=
<script src="/assets/evropa/js/m0_searching.js"></script>
<script src="/assets/evropa/js/m0_otzyvy.js"></script>
<script src="/assets/evropa/js/m0_questions.js"></script>
<script src="/assets/evropa/js/m0_spec.js"></script>
<script src="/assets/evropa/js/m0_menu.js"></script>
<!-- Для галереи -->
<link rel='stylesheet' type='text/css' href='/assets/evropa/css/highslide.min.css'/>
<link rel="stylesheet" href="/assets/evropa/colorbox-master/example1/colorbox.css" >
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=3
&then=
`
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script src="/assets/evropa/colorbox-master/Lazyload.js"></script>
<script src="/assets/evropa/colorbox-master/jquery.colorbox-min.js"></script>
<script src="/assets/evropa/js/modernizr_2_6_1.js"></script>
<script>
$(document).ready(function () {
$("img").lazyload({effect : "fadeIn"});
$("a[rel='colorbox']").colorbox();
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu10').hide();
$('#left_podmenu11').hide();
});
</script>
&else=
` ]]
<title>[[*pagetitle]] </title> <link href="/assets/evropa/css/style.css" rel="stylesheet" type="text/css" /> <link href="/assets/evropa/css/ios_style.css" rel="stylesheet" media="only screen and (max-device-width: 480px)" />[[!If?
&subject=[[*id]]
&operator=ia
&operand=1,7
&then=
`
&else=
` ]]
</head> <body onload="init_questions(),init_otzyvy(),init_spec(),init_left_podmenu()"> <!--Для меню--> <script>
$(document).ready(function() {
[[!If?
&subject=[[*id]]
&operator=ia
&operand=2,9,10,11,12,13,14,72,73
&then=
`
$(str_tre_left_podmenu1).attr('class','tre_down_img');
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=15,16,17,18,19,20,21,22,23
&then=
`
$(str_tre_left_podmenu2).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=24,25,26,27,28,29
&then=
`
$(str_tre_left_podmenu3).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=47,48,49,50,51
&then=
`
$(str_tre_left_podmenu4).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=30,31,32
&then=
`
$(str_tre_left_podmenu5).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=52,53,54
&then=
`
$(str_tre_left_podmenu6).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=55,56,57,58,59
&then=
`
$(str_tre_left_podmenu7).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=61,62,63,64
&then=
`
$(str_tre_left_podmenu9).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu10').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=65,66
&then=
`
$(str_tre_left_podmenu10).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=33
&then=
`
$(str_tre_left_podmenu10_1).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10').hide();
$('#left_podmenu11').hide();
` ]]
[[!If?
&subject=[[*id]]
&operator=ia
&operand=37
&then=
`
$(str_tre_left_podmenu11).attr('class','tre_down_img');
$('#left_podmenu1').hide();
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu10').hide();
`
]]
[[!If?
&subject=[[*parent]]
&operator=ia
&operand=2,15,24,47,30,52,55,60,61,65,33,36
&then=``
&else=
`
//$('#left_podmenu1').hide();
$(str_tre_left_podmenu1).attr('class','tre_down_img');
$('#left_podmenu2').hide();
$('#left_podmenu3').hide();
$('#left_podmenu4').hide();
$('#left_podmenu5').hide();
$('#left_podmenu6').hide();
$('#left_podmenu7').hide();
$('#left_podmenu8').hide();
$('#left_podmenu9').hide();
$('#left_podmenu10_1').hide();
$('#left_podmenu10').hide();
$('#left_podmenu11').hide();
` ]]
});
</script>
<div class="all" >
<div class="header">
<div class="logo"><a href="http://evropa.klik-web.ru"><img class="logo_img" src="/assets/evropa/img/logo.png" alt="" /> </a></div>
<div class="networks">
<!--<img class="networks_img" src="img/networks.png" alt="" /> -->
<a href="http://instagram.com" target="_blank" class="tmenu_link"><img class="like" src="/assets/evropa/img/in.png" alt="" /></a>
<a href="http://twitter.com/home?status=" target="_blank" class="tmenu_link"><img class="like" src="/assets/evropa/img/twitter.png" alt="" /></a>
<a href="http://www.livejournal.com/update.bml?subject=" target="_blank" class="tmenu_link"><img class="like" src="/assets/evropa/img/lj.png" alt="" /></a>
<a href="http://www.facebook.com/sharer.php?u=http://evropa.klik-web.ru/" target="_blank" class="tmenu_link"><img class="like" src="/assets/evropa/img/facebook.png" alt="" /></a>
<div class="search" >
<img class="search_img" src="/assets/evropa/img/search.png" alt="" />
<form class="search-form" method="get" action="/[[~71]]" id="form">
<input id="s_text" class="search-text" type="text" value="Поиск по сайту" onfocus="this.value=this.value=='Поиск по сайту'?'':this.value;" onblur="this.value=this.value==''?'Поиск по сайту':this.value" name="search"/>
<input type="submit" class="search-button" value="" name="picture" src="" >
<!--
onClick="searching()" убрано
<input type="image" border="0" class="search-button" value="" name="picture" src="" />
-->
</form>
</div>
</div>
<div class="search"> </div>
<div class="contacts"> <span class="phone">8 499 431-00-17 / 18 </span>
<span class="adress"> Москва, Ленинский проспект, 104 </span> </div>
<div class="top-menu">
<ul id="tmenu">
[[!Wayfinder?
&startId=`0`
&outerTpl=`MenuOuterTop`
&rowTpl=`MenuRowTop`
&hereClass=`active`
&firstClass=``
&lastClass =``
&level =`1`
&limit = `6`
]]
</ul>
</div>
<div class="line"><img class="line_img" src="/assets/evropa/img/line.png" alt="" /></div>
</div><!--header--> UPD:
Собрал шаблон со всеми чанками в один Smarty-шаблон. Пока еще не переделал его до правильного состояния, и это все дело выглядит так: gist.github.com/Fi1osof/48060b508d802de92762 Особое внимание обратите на формирование бокового меню: <ul class="left_menu">
<li class="level1" id="left-punkt1" >
<span class="left-menu-text"> [[getResourceField? &id=`2`]] </span>
<img class="tre_right_img" src="{$template_url}img/0.png" id="tre_down_img1" alt="">
</li>
<div id="left_podmenu1">[[$Left-Menu-1]]</div>
<li class="level1" id="left-punkt2" >
<span class="left-menu-text"> [[getResourceField? &id=`15`]] </span>
<img class="tre_right_img" src="{$template_url}img/0.png" id="tre_down_img2" alt="">
</li>
<div id="left_podmenu2">[[$Left-Menu-2]]</div>
<li class="level1" id="left-punkt3" >
<span class="left-menu-text"> [[getResourceField? &id=`24`]] </span>
<img class="tre_right_img" src="{$template_url}img/0.png" id="tre_down_img3" alt="">
</li>
<div id="left_podmenu3">[[$Left-Menu-3]]</div>
<li class="level1" id="left-punkt5" >
<span class="left-menu-text"> [[getResourceField? &id=`30`]] </span>
<img class="tre_right_img" src="{$template_url}img/0.png" id="tre_down_img5" alt="">
</li>
<div id="left_podmenu5">[[$Left-Menu-5]]</div>
<li class="level1" id="left-punkt10_1" >
<span class="left-menu-text"> [[getResourceField? &id=`33`]] </span>
<img class="tre_right_img" src="{$template_url}img/0.png" id="tre_down_img10_1" alt="">
</li>
<div id="left_podmenu10_1">[[$Left-Menu-10-1]]</div>
<li class="level1" id="left-punkt11" >
<span class="left-menu-text"> [[getResourceField? &id=`36`]] </span>
<img class="tre_right_img" src="{$template_url}img/0.png" id="tre_down_img11" alt="">
</li>
<div id="left_podmenu11">[[$Left-Menu-11]]</div>
</ul> То есть мало того, что это не Wayfinder и вообще нет динамики меню, так еще это и куча сниппетов getResourceField (и запросов к БД), плюс еще и куча чанков, в каждом из которых вот такие вызовы WF: <ul class="left-podmenu" id="left-podmenu2">
[[!Wayfinder?
&startId=`15`
&outerTpl=`MenuOuterLeft`
&rowTpl=`MenuRowLeft`
&firstClass=``
&lastClass =``
&level =`1`
&limit = `0`
]]
</ul> И да, под каждый пункт меню не вызов одного и того же чанка с передачей ID родителя, а десяток чанков с одинаковым меню. Резюме. В общем, героев надо знать в лицо. Чудо веб-студия, которая клепает такие мегашедевры, это klik-web.ru/
Правда у них и у самих-то по сути сайта нет, но тем не менее. Особенно мне нравятся тизеры типа «КЛИК» — грамотный выбор! и Качество Опыт Репутация. Мда… Клиенты, наткнетесь на таких, обходите за 3 версты! UPD: klik-web.ru извинились перед клиентом и компенсировали затраты, вину перед клиентом загладили. Основная версия этого неприятного инцидента — не повезло им с выбором фрилансера-исполнителя. Клиент претензий не имеет.Народ, кто знает отличный JS/CSS минификатор под MODX Revolution? В идеале, он должен работать примерно как на Livestreet, то есть формировать путь типа templates/cache/modxclub/0818f4ea9654b3da1e243bdf10cfa1a5.js Для сравнения минификатор в админке MODX-а формирует такие пути: /manager/min/index.php?f=/manager/assets/modext/core/modx.localization.js,/manager/assets/modext/util/utilities.js,/manager/assets/modext/core/modx.component.js,/manager/assets/modext/widgets/core/modx.panel.js,/manager/assets/modext/widgets/core/modx.tabs.js,/manager/assets/modext/widgets/core/modx.window.js,/manager/assets/modext/widgets/core/modx.tree.js,/manager/assets/modext/widgets/core/modx.combo.js,/manager/assets/modext/widgets/core/modx.grid.js,/manager/assets/modext/widgets/core/modx.console.js,/manager/assets/modext/widgets/core/modx.portal.js Здесь большая принципиальная разница: в livestreet готовится полный файл и пишется в кеш, и при запросе к нему мы имеет полную статику без обращения к движку. И такой файл тот же nginx сразу отдаст без лишних запросов. А во втором случае у нас каждый раз php-логика, лишняя и абсолютно не нужная. Если кто знает, напишите про него топик (полноправное членство в Клубе сразу гарантирую). Доработаем этот модуль и включим его в сборку. Будет всем хорошо :-)
Требуется удаленный опытный MODX-разработчик на разработку и сопровождение сайтов на MODX Revolution + Smarty. Необходимые знания: HTML, JS, CSS, PHP, SQL, API MODX. Оплата по результатам собеседования и выполнения тестового задания. UPD: Требование: доступ по скайпу или почте минимум 6 часов в день 5 дней в неделю.
Вопрос решился. В браузере стояло куча всяких дополнений/расширений, и какое-то из них блокировало подгрузку JS-файлов (из-за очень слабого интернета и работы с большим скрипом, не смог проверить все по одиночке и выявить какой именно). То есть javascript выполнялся, а javascript-файлы со всеми необходимыми сценариями не подгружались. В итоге админка не работала.
Все по прежнему. Не понимаю в чем дело. сейчас установлю программу. Допуск как-то хочется более скрыто дать. М.Б. на мобильник пришлю?
Сейчас попробую перезагрузить комп и тогда, если не получится, то буду устанавливать вашу программу для доступа.
В ИЕ и в ГУГЛ Хроме все нормально открывается. Что-то в Мозиле. Я обычно в Мозиле работала. В ИЕ и в ГУГЛ ХРОМЕ можно?
Не буду делать перевода сегодняшнего анонса: modx.com/blog/2013/07/25/welcome-back-modx-cloud/ А дам, так сказать, инсайдерский перевод. В общем, многие наверняка помнят, как болезненно была воспринята сообществом новость о том, что MODXcloud отделяется от самого MODX-а, и становится SyphonLabs. Так вот, как видим, не прошло и года, как MODXcloud вернулся обратно к MODX-у. Пока никак не комментируются вопросы по поводу планов по восстановлению изначальной команды (и лично меня больше всего мучает вопрос вернется ли Шон МакКормик aka splittingred), а так же будет ли и впредь развиваться на облаке поддержка WP и прочих сторонних продуктов, но факт остается фактом — MODXcloud теперь не просто MODX в названии сервиса. И это не может не радовать :-) Кстати, весь профит от работы облака будет идти на поддержку MODX-а. Но это на самом деле малая часть от главной новости, размаха которой я не ожидал до выхода самого анонса! И я могу вам точно сказать, что наступил новый виток в истории развития MODX-а! :-) Главная новость заключается в том, что все ПО, которое было разработано для MODXcloud, планируется отдать в массы сторонним хостинг-площадкам. Пока не знаю подробностей на каких условиях, платно или бесплатно и всем ли желающим и т.п., но будет обязательно. Я думаю, что конечно же какая-то плата будет, но она будет чисто символической (почти за даром). Главная цель такой щедрости — более широкая популяризация MODX-а. И это не пустой звон. Я сейчас разверну свою мысль. Многие знают, что я плотно сижу на modxcloud.com (у меня уже Enterprice-аккаунт за $225 и куча сайтов на нет). Так вот, всякий скажет, что за $225 в месяц можно ппц какой сервер арендовать. На нем не один десяток сайтов можно будет легко разместить. И я это знаю. Так почему же я сижу на нем? Да потому что modxcloud.com позволяет мне экономить много собственного времени на работе с сайтами. Когда у вас сайт уже рабочий и просто висит месяцами в сети, то конечно же здесь цель — как можно меньше денег платить за это. Но когда у вас идет очень плотная работа с сайтом, тогда каждый час рабочего времени на счету. Так вот, все эти фишки со снимками сайтов, обновлением в два клика и т.д. и т.п. — это реально позволяет экономить кучу рабочего времени. Плюс групповые доступы к облакам и т.п. По-этому мне реально выгодней платить $225 в месяц, чем платить $25, и терять время на всяких мелочах, которые потом вытекают в круглую сумму. Но я так делал, потому что не было альтернативы. А теперь эта альтернатива появится! Более того, так как планируется ПО отдавать почти что даром (или даром), то хостинг-провайдер экономит все те деньги, что были потрачены на разработку этого ПО. А значит ему не надо будет отбивать эти вложения, а значит он сможет предоставлять услуги по гораздо более низким ценам, чем на modxcloud.com В общем, на тестирование этого ПО команда MODX планирует потратить примерно две недели, а далее очень будем надеяться, что увидим такой нужный нам функционал на наших любимых хостинг-площадках! :-) Вот как-то так. Лично я уверен — это начало оттепели в MODX :) P.S. А еще, если все будет ОК, то и мы приступим к тестированию данного ПО в самое ближайшее время ;-)