Кулинарная книга

Администратор блога:
Все рубрики (12)

CSS префикс

Не забывайте про CSS префикс-ы. Которые можно выставить в модуле. Они иногда могут пригодится.
Что бы префикс был доступен в шаблоне модуля используйте:

Иллюстрация:
<div id="{$mod.css_prefix}">
    {$mod.body}
</div>

Вы маньяк? — тогда минимизируйте!

Вот состряпал свой минимизатор CSS, и хоть ниже я предоставлю вас ссылки на более продвинутые решения, мой все же имеет пару уникальных пунктов)

Итак вот, что произошло с практически стандартным CSS файлом шаблона:


1) Убираются комментарии вида /*...*/.
2) Убираются переносы строк, табуляции, двойные и более последовательности пробелов (от 2 до 8).
3) Убираются одиночные пробелы перед и за скобами «{», «}».
4) Убираются одиночные пробелы за и перед точкой с запятой (пробелы между перечислениями атрибутов).
5) Убираются одиночные пробелы за и перед двоеточием (между селекторами, а также между атрибутами).
6) Убираются одиночные пробелы за и перед запятой (используется если идет список селекторов через зяпятую).
7) Если атрибут последний, то убирается последняя точка с запятой (хотя этого можно и не делать).
8) Укорачиваются 16-тиричные именования цветов согласно спецификации CSS (#FFFFFF = #FFF, #303303 = #303, ...).
9) Подставляются наиболее короткие цветовые именования, согласно спецификации CSS и поддержки кроссбраузерности (#0000FF = blue (подставляем, так как текстовая константа короче), #9400D3 = darkviolet (отказ, текстовая константа длиннее), вместо white подставляются #FFF, ...)
10) Убираем лишние записи возле нулевых величин (0px = 0, 0pt = 0, ...)
11) Заменяем «border:none» на «border:0».

Как быстрый пример я представлю вам минимизацию практически стандартного CSS файла из InstantCMS:

Начальный файл: styles.css
Конечный файл: new_styles.css
Исходный размер: 61202 байт.
Новый размер: 46871 байт. Размер сократился на: 14331 байт. Степень сжатия: 23.42%.

Если желаете скачать вам сюда. Замете, в бесплатном виде вы можете только сжимать файлы по одному. Начальный файл должен быть styles.css, конечный файл должен быть new_styles.css (с правами на запись).

И главное о минимизации. Вот интереснейшая ссылка на Хабре по этой теме, где в комментариях можно найти много чего интересного. Особенно вот это: vant.kiev.ua/compressor.zip (1.6 Мб) если у вас Windows —и вы хотите быстренько положить в одну папку, взять в другой, то это для вас (должно стоять JRE (Java Runtime Environment), но это у большинства есть ). Незабудте в БАТ файлах поменять пути на свои, а то сразу не заработает. А также Вот это: code.google.com/p/minify/ — довольно мощная вещь. Чуть чуть подправить под себя и вы сможете сжимать как HTML, JS, CSS и даже внедрить к себе в проект и настроить сжатие трафика.

Очистка системного кэша

Сразу предупреждаю эта «фишечка» только для тех, кто знает что это такое и ему оно надо smile

Скрин:


В Админ. панели появляется пункт меню. При выборе которого удаляются все файлы в папке /cache/, кроме .htaccess и index.html

P.S.: Возможно это надо доработать, что так, как в БД есть таблицы cms_cache и возможно их тоже надо очищать, но у меня они пустые и кто бы объяснил что там там должно и должно ли вообще быть?

Скачать систему очистки кэша.

Привязка модуля к «Профайлу»

Это «перепись темы» с форума ссылка на пост, что бы не забыть.

Что нужно сделать, что бы вывести модуль под основным профайлом (компонентом), или слева, справа.

1. Создаем позицию для него в «position.txt» добавляем «profile»;
2. Редактируем template.php
Код PHP:
            <td valign="top" id="center">
				<div><?php cmsModule('top'); ?></div>
				<div><?php cmsBody(); ?></div>
				<div><?php cmsModule('bottom'); ?></div>
				<?php /* Хак, для показа модулей в Профайле */
					if ($_REQUEST['view']=='users' && $_REQUEST['do']=='profile') {
						cmsModule('profile');
					}
				?>
			</td>
3. Создаем, копируем, включаем, настраиваем модуль в Админ. панели (включаем и публикуем на всех страницах), а в «Позиция показа» выбираем «profile»;
4. Все теперь он будет под профайлом;
5. Соответственно этот кусок по аналогии можете вставлять там, где нужно.

Плагин FCKEditor 2.6.5

По умолчанию в нашей любимой «Инстанте» последней на текущий момент версии 1.5.3 стоит визуальный редактор FCKEditor 2.6.3 (Build 19836).

Мы ждем с нетерпением очередного релиза 1.5.4, где вроде будет поддержа возможности подключения различных визуальных редкторов, а пока maxisoft «выдал свое решение», с которым вы можете ознакомится в его блоге: ссылка.

Сам проект FCKEditor-а теперь переродился в CKEditor.

21 сентября 2009 года вышла версия (последняя наверно) визуального редактора FCKEditor 2.6.5 вот некоторые изменения:
Код PHP:
 New Features and Improvements:

    * Introduced the Spell Check As You Type (SCAYT) spell checking option.

Fixed Bugs:

    * Security release, upgrade is highly recommended (fixed security issues in ASP and ColdFusion scripts).
    * [#2856] Fixed problem with inches in paste dialog.
    * [#3120] # (pound sign) is not correctly escaped in file urls.
    * [#2915] About plugin shows misleading user language.
    * [#2821] Configuration items that used floating point numbers were parsed as integers.
    * [#2064] The asp connector didn't work correctly in windows 2000 servers.
    * [#3429] Fixed problem in IE8 with XHTML doctype. Thanks to duncansimey.
    * [#3446] Fixed self-closed <option> in the table cell dialog.
    * [#3181] Node selection could raise an error in IE8.
    * [#2156] After calling GetData() the style removal operations didn't work in IE. Thanks to Compendium Blogware.
    * [#3427] Improved compatibility of Document properties dialog with Eclipse.
    * Language file updates for the following languages:
          o [#2908] Czech
          o [#2849] Lithuanian
          o [#3636] Polish
          o [#3741] Korean
          o [#2861] Slovenian
    * [#3439] IgnoreEmptyParagraphValue had no effect if ProcessHTMLEntities is false.
    * [#3880] Fixed some minor logical and typing mistakes in fckdomrange_ie.js.
    * [#2689] If a custom connector tried to use the "url" attribute for files it was always reencoded.
    * [#1537] Fixed extra <p> tag added before pasted contents from Paste From Word dialog.
    * [#2874] Fixed wrong position of caption tag in tables with table headers.
    * [#3818] Fixed layout error in text and background color popups when more colors button is disabled.
    * [#3481] Fixed an issue in WebKit where paste actions inside table cells may leak outside of the table cell.
    * [#3677] Fixed JavaScript error when trying to create link for images inside floating div containers.
    * [#3925] Removed obsolete parentWindow reference from FCKDialog.OpenDialog().
    * [#2936] Added protection in the PHP upload if the destination folder is placed at the root and doesn't exit.
    * [#4357] Avoid problem in the paste dialog if IIS is set to process HTML files as Asp.
    * [#2201] Fixed a crash in IE in an object is selected (with handles) on unload of the editor.
    * [#3053] Fixed problems with the height of the content area in Safari and Chrome.

See previous versions history
Для меня здесь видятся самые существенными это исправление косяков в IE8, Chrome, Safari. Поэтому я сделал плагин p_fckeditor265, который вы можете скачать и установить у себя. Я сохранил все настройки «которые были в сходной версии Инстантовского модуля», только удалил все языковые файлы поддержки, кроме русского, украинского и английского и вернул три темы (которые идут в комплекте) и поставил тему по умолчанию default.
Те, кому языковые файлы, важны можете вернуть их скачав и добавив их (оф. сайт).

Что бы изменить темы в \wysiwyg\fckeditor265\fckconfig.js поменяйте строку:
Код PHP:
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ;
Может быть тема: default, silver, office2003.

Скачать плагин FCKEditor 2.6.5

Установка:
1. Качаете и заливаете файлы (файлы из архива не пересекаются и не заменяют исходные);
2. Заходите в Админ. панель — плагины и жмете кнопку «Установать»;
3. Старый редактор выключаете, этот подключаете;

Удаление:
Пункты выше сделайте в «реверсе».

Если гость, то выполняем...

Если у вас возникнет необходимость вывести в странице какой-то контент в зависимости от того зарегистрированный пользователь или нет, вот вам, как вариант:

1. В статье при редактировании вставляем {ФАЙЛ=myfile.php}
2. Создаем файл в /includes/myphp/ --> myfile.php
3. Пишем след содержание:
Код PHP:
<?php if( isset($_SESSION['user']['id']) ) { // Пользователь ?>

	<div style="margin: 1em 0 1.3em 23px; background:url(/templates/_default_/images/promo.jpg) no-repeat; width:658px; height:340px;">
		<a href="catalog/23/6/add.html">
			<img style="border: 0; margin: 280px 0 0 375px; height:50px;" alt="Д" src="/templates/_default_/images/catalog_add.png" />
		</a>
	</div>

<?php } else { // Гость ?>

	<div style="margin: 1em 0 1.3em 23px; background:url(/templates/_default_/images/promo.jpg) no-repeat; width:658px; height:340px;">
		<a href="registration/46">
			<img style="border:0; margin: 280px 0 0 375px; height:50px;" alt="" src="/templates/_default_/images/catalog_registration.png" />
		</a>
	</div>

<?php } ?>
В моем примере суть проста — зарегистрированным пользователям показывать одну кнопку и ссылку, гостям другую.
Это я делал в модуле Добро пожаловать (что бы отображалось на главной странице).

Экономим байты

Цель: Увеличить на грамульку скорость вывода-загрузки сайта, при этом не потерять наглядности имеющегося кода.
Версия: InstantCMS 1.5.3
Требования: Относится только к шаблонам Smarty.

Мне не «скорую» руку удалось сэкономить 2 Кб. smile
Все мы знаем про всякие сжималки, выдиралки пробелом и всяких символов из HTML, CSS, JavaScript. Я сейчас хочу скачать об одной встроенной функции Smarty-шаблонизвтора. А именно об strip ссылка на документацию (рус.) и еще о ней же, но как модификаторе переменной — по ссылке (рус.).

У нас есть TPL шаблоны в /template/_default_/modules/ /template/_default_/components/
Что бы по выбрасывать лишние пробелы, табуляции и переходы (при выводе шаблона, код останется прежним) выполним след. на примере основного модуля /template/_default_/modules/module.tpl

Код PHP:
{strip} {* Вот эта встроенная функция, она не трогает переменные *}
<table class="{$mod.css_prefix}module" width="100%" cellspacing="0" cellpadding="0">
<tbody>
	{if $mod.showtitle neq 0}
	<tr>
		<td class="{$mod.css_prefix}moduletitle">
			{$mod.title}
			{if $cfglink}
				<span class="fast_cfg_link">
					<a href="{$cfglink}" target="_blank" title="Настроить модуль">
						<img src="/images/icons/configure.gif"/>
					</a>
				</span>
			{/if}
		</td>
	</tr>
	{/if}
	<tr>
		<td class="{$mod.css_prefix}modulebody">
			{$mod.body|strip} {* Вот мы используем модификатор переменной, что бы выводим в ней код обработать соответственно... *}
		</td>
	</tr>
	<tr>
		<td class="{$mod.css_prefix}modulebottom"></td>
	</tr>
</tbody>
</table>
{/strip} {* Завершение встроенной функции *}
Можете проделать такие же манипуляции со всеми модулями и компонентами. Если надо будет могу сделать для стандартного раздела, для «замеров».