Я думаю, что для тебя вакансия всегда будет открыта, так что освободишься — стучи. Макеты верстать с нуля надо? Как правило нет, это чаще всего делает верстальщик. Но знать это надо, чтобы по каждому пустяку не скидывать на верстальщика.

Срочно требуется? Просто сейчас 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= `

<script src="/assets/evropa/js/jquery-1.9.1.js"></script> <script type="text/javascript" src="/assets/evropa/coin-slider/coin-slider.js"></script> <link rel="stylesheet" src="/assets/evropa/coin-slider/coin-slider-styles.css"> <script> $(document).ready(function() { $('#slider-pics').coinslider({ hoverPause: false, width: 700, height: 420, navigation:false, delay:5000 }); }); </script> <script type="text/javascript" src="/assets/evropa/js/m0_otzyvy.js"></script> <script type="text/javascript" src="/assets/evropa/js/m0_questions.js"></script> <script type="text/javascript" src="/assets/evropa/js/m0_spec.js"></script> <script type="text/javascript" src="/assets/evropa/js/m0_menu.js"></script> <script> $(document).ready(function() { $('#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=

<link rel="stylesheet" href="/assets/evropa/css/jquery-ui.css" /> <script src="/assets/evropa/js/jquery-1.9.1.js"></script> <script src="/assets/evropa/js/jquery-ui.js"></script> <script src="/assets/evropa/js/jquery.cookie.js"></script>
<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=

<script> $(document).ready(function () { $('#left_podmenu1').show(); $('#left_podmenu2').show(); $('#left_podmenu3').show(); $('#left_podmenu4').show(); $('#left_podmenu5').show(); $('#left_podmenu6').show(); $('#left_podmenu7').show(); $('#left_podmenu8').show(); $('#left_podmenu9').show(); $('#left_podmenu10_1').show(); $('#left_podmenu10').show(); $('#left_podmenu11').show(); }); </script>

` ]]

<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=

<script> $(function() { //$( "#tabs" ).tabs(); // инициализация вкладок // (будет открыта первая вкладка) var coact = $.cookie("tabs[[*id]]"); if(coact==''){ coact = 0;} var $tabs = $('#tabs').tabs(); $("#tabs").tabs({ show: { effect: "fadeIn", duration: 200 }, hide: { effect: "fadeOut", duration: 100 }, active: coact, activate: function(event, ui) { var act = $("#tabs").tabs("option", "active"); $.cookie("tabs[[*id]]", act, { expires: 1 }); } }); // при нажатии на ссылку, сымитируем нажатие по нужной вкладке $('#quip-comment-box-[[+idprefix]]').click(function() { $tabs.tabs('select', 2); return false; }); }); </script>

` ]]

</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. А еще, если все будет ОК, то и мы приступим к тестированию данного ПО в самое ближайшее время ;-)