Dreamweaver上でSmartyのincludeを適用させる

この記事は鮮度が低いです(><類似した記事を新しく書きましたのでこちらへぜひ →Dreamwerver で Smarty

Dreamweaver上でSmartyのテンプレートファイルをオーサリングする際、{include}した部分をデザインビューで確認しながら作業したかったので、その方法を探しました。以下メモ。


■やり方
Dreamweaverをインストールしたフォルダの Configuration/Translators/ 以下に、適当な名前をつけた.htmファイルを新規作成し、以下のコードを貼り付けてやるだけ。私の場合は C:\Program Files\Macromedia\Dreamweaver 8\Configuration\Translators 以下に、PHP_Smarty_include.htm というファイルを作成して下のコードを貼り付けました。

<html>
<head>
<title>Smarty Include Tag Translator</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=”>
<script language=”JavaScript”>

var LDELIM = “{“;
var RDELIM = “}”;

function getTranslatorInfo()
{
var transArray = new Array(6);
transArray[0] = “SMARTY_INCLUDE”;
transArray[1] = “Smarty Include Translator”;
transArray[2] = “0”;
transArray[3] = “1”;
transArray[4] = LDELIM + “[ \t]*include”;
transArray[5] = “byExpression”;
return transArray;
}

function translateMarkup( docNameStr, siteRootStr, inStr )
{
var pos = 0;
var patternFound = false;
var outStr = ”;
var depPath = ”;
var remainInStr = inStr;
smartyRegExp = new RegExp(“(” + LDELIM + “[ \t]*include[ \t]+file[ \t]*=[ \t]*[\”|’][ \t]*([^\”^’]*)[ \t]*[\”|’][ \t]*[^”+RDELIM+”]*” + RDELIM + “)”, “im”);
while ((pos = remainInStr.search(smartyRegExp)) >= 0)
{
var matchStr = RegExp.$1;
var templateFileName = RegExp.$2;
var templateFullName = templateFileName;
var smartyFile;
outStr += remainInStr.substr(0, pos);
smartyFile = new File(templateFullName, docNameStr);
if (smartyFile.exists())
{
smartyContent = smartyFile.getContents();
if (smartyContent.length <= 0)
{
// this is an empty file
smartyContent = “&nbsp;”;
}
depPath = smartyFile.getAbsolutePath();
}
else
{
// file doesn’t exist
smartyContent = “File Error!”;
}

// Do translation
outStr += ‘<MM:BeginLock translatorClass=”‘ + getTranslatorInfo()[0] + ‘” type=”smartyInclude” orig=”‘ + escape(matchStr) + ‘”‘;
if (depPath.length > 0)
outStr += ‘ depFiles=”‘ + depPath + ‘”‘;
outStr += ‘>’ + smartyContent + ‘<MM:EndLock>’;

// Re-search text following match
remainInStr = remainInStr.substring(pos + matchStr.length);
// Remember that at least one translation was performed
patternFound = true;
}
outStr += remainInStr;
return patternFound ? outStr : “”;
}
</script>
</head>
<body>
</body>
</html>

・参考サイト
Use Smarty in Dreamweaver
DreamweaverでSmartyを扱う

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です