{"id":562,"date":"2011-07-26T16:31:14","date_gmt":"2011-07-26T16:31:14","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=562"},"modified":"2011-09-12T16:31:39","modified_gmt":"2011-09-12T16:31:39","slug":"smarty","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/","title":{"rendered":"Que es Smarty?"},"content":{"rendered":"<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/09\/smarty.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-563\" title=\"smarty\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/09\/smarty.gif\" alt=\"\" width=\"250\" height=\"64\" \/><\/a>Smarty es un motor de plantillas para PHP. Mas especificamente, esta herramienta facilita la manera de separar la aplicaci\u00f3n l\u00f3gica y el contenido en la presentaci\u00f3n. La mejor descripci\u00f3n esta en una situaci\u00f3n donde la aplicaci\u00f3n del programador y la plantilla del dise\u00f1ador juegan diferentes roles, o en la mayoria de los casos no la misma persona.<\/p>\n<p>Por ejemplo: Digamos que usted crea una pagina web, es decir, despliega el articulo de un diario. El encabezado del articulo, el rotulo, el autor y el cuerpo son elementos del contenido, estos no contiene informaci\u00f3n de como quieren ser presentados. Estos son pasados por la aplicaci\u00f3n Smarty, donde el dise\u00f1ador edita la plantilla, y usa una combinaci\u00f3n de etiquetas HTML y etiquetas de plantilla para formatear la presentaci\u00f3n de estos elementos (HTML, tablas, color de fondo, tama\u00f1o de letras, hojas de estilo, etc&#8230;). Un d\u00eda el programador necesita cambiar la manera de recuperar el contenido del articulo(un cambio en la aplicaci\u00f3n l\u00f3gica.). Este cambio no afectara al dise\u00f1ador de la plantilla, el contenido llegara a la plantilla exactamente igual. De la misma manera, si el dise\u00f1ador de la plantilla quiere redise\u00f1arla en su totalidad, estos cambios no afectaran la aplicaci\u00f3n l\u00f3gica. Por lo tanto, el programador puede hacer cambios en la aplicaci\u00f3n l\u00f3gica sin que sea necesario restructurar la plantilla. Y el dise\u00f1ador de la plantilla puede hacer cambios sin que haya rompimiento con la aplicaci\u00f3n l\u00f3gica.<\/p>\n<p>One design goal of Smarty is the separation of business logic and presentation logic. This means templates can certainly contain logic under the condition that it is for presentation only. Things such as including other templates, altering table row colors, upper-casing a variable, looping over an array of data and displaying it, etc. are all examples of presentation logic. This does not mean that Smarty forces a separation of business and presentation logic. Smarty has no knowledge of which is which, so placing business logic in the template is your own doing. Also, if you desire <em>no<\/em> logic in your templates you certainly can do so by boiling the content down to text and variables only.<\/p>\n<p>Ahora un peque\u00f1o resumen sobre que no hace Smarty. Smarty no intenta separar completamente la l\u00f3gica de la plantilla. No hay problema entre la l\u00f3gica y su plantilla bajo la condici\u00f3n que esta l\u00f3gica sea estrictamente para presentaci\u00f3n. Un consejo: mantener la aplicaci\u00f3n l\u00f3gica fuera de la plantilla, y la presentaci\u00f3n fuera de la aplicaci\u00f3n l\u00f3gica. Esto tiene como finalidad tener un objeto mas manipulable y escalable para un futuro proximo.<\/p>\n<p>Un \u00fanico aspecto acerca de Smarty es la compilaci\u00f3n de la plantilla. De esta manera Smarty lee la plantilla y crea los scripts de PHP. Una vez creados, son executados sobre \u00e9l. Por consiguiente no existe ning\u00fan costo por analizar gramaticalmente cada archivo de template por cada requisici\u00f3n, y cada template puede llevar toda la ventaja del compilador de cache de PHP tal como Zend Accelerator (<a href=\"http:\/\/www.zend.com\/\" target=\"_top\">http:\/\/www.zend.com\/<\/a>) o PHP Accelerator (<a href=\"http:\/\/www.php-accelerator.co.uk\/\" target=\"_top\">http:\/\/www.php-accelerator.co.uk<\/a>).<\/p>\n<p>Algunas de las caracter\u00edsticas de Smarty:<\/p>\n<div>\n<ul type=\"disc\">\n<li>Es extremamente r\u00e1pido.<\/li>\n<li>Es eficiente ya que puede interpretar el trabajo mas sucio.<\/li>\n<li>No analiza gramaticalmente desde arriba el template, solo compila una vez.<\/li>\n<li>El esta atento para solo recompilar los archivos de plantilla que fueron cambiados.<\/li>\n<li>Usted puede crear <a title=\"Chapter\u00a08.\u00a0Custom Functions\" href=\"http:\/\/www.smarty.net\/docsv2\/es\/language.custom.functions.tpl\"> funciones habituales <\/a> y <a title=\"Chapter\u00a05.\u00a0Modificadores de variables\" href=\"http:\/\/www.smarty.net\/docsv2\/es\/language.modifiers.tpl\">modificadores de variables <\/a> customizados, de modo que el lenguaje de la platilla es altamente extensible.<\/li>\n<li>Sintaxis de etiquetas delimitadoras para configuraci\u00f3n de la plantilla, as\u00ed lo puede usar {}, {{}}, &lt;!&#8211;{}&#8211;&gt;, etc.<\/li>\n<li>Los construtoress if\/elseif\/else\/endif son pasados por el interpretador de PHP, as\u00ed la sintaxis de la expresi\u00f3n {if &#8230;} puede ser compleja o simple de la forma que usted quiera.<\/li>\n<li>Permite un anidamiento ilimitado de sections, ifs, etc.<\/li>\n<li>Es posible incrustar directamente codigo PHP en los archivos de plantilla, aunque esto puede no ser necesario(no recomendado) dado que la herramienta se puede ajustar.<\/li>\n<li>Soporte de caching incrustado<\/li>\n<li>Fuentes de Plantilla absoluto<\/li>\n<li>Funciones habituales de manipulaci\u00f3n de cache<\/li>\n<li>Arquitectura de Plugin<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Smarty es un motor de plantillas para PHP. Mas especificamente, esta herramienta facilita la manera de separar la aplicaci\u00f3n l\u00f3gica y el contenido en la presentaci\u00f3n. La mejor descripci\u00f3n esta en una situaci\u00f3n donde la aplicaci\u00f3n del programador y la plantilla del dise\u00f1ador juegan diferentes roles, o en la mayoria de los casos no la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[],"class_list":["post-562","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-prestashop"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Que es Smarty? - Jose Aguilar Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Que es Smarty? - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Smarty es un motor de plantillas para PHP. Mas especificamente, esta herramienta facilita la manera de separar la aplicaci\u00f3n l\u00f3gica y el contenido en la presentaci\u00f3n. La mejor descripci\u00f3n esta en una situaci\u00f3n donde la aplicaci\u00f3n del programador y la plantilla del dise\u00f1ador juegan diferentes roles, o en la mayoria de los casos no la [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2011-07-26T16:31:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-09-12T16:31:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\" \/>\n\t<meta property=\"og:image:width\" content=\"282\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/\",\"name\":\"Que es Smarty? - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"datePublished\":\"2011-07-26T16:31:14+00:00\",\"dateModified\":\"2011-09-12T16:31:39+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"width\":282,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Que es Smarty?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Que es Smarty? - Jose Aguilar Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Que es Smarty? - Jose Aguilar Blog","og_description":"Smarty es un motor de plantillas para PHP. Mas especificamente, esta herramienta facilita la manera de separar la aplicaci\u00f3n l\u00f3gica y el contenido en la presentaci\u00f3n. La mejor descripci\u00f3n esta en una situaci\u00f3n donde la aplicaci\u00f3n del programador y la plantilla del dise\u00f1ador juegan diferentes roles, o en la mayoria de los casos no la [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2011-07-26T16:31:14+00:00","article_modified_time":"2011-09-12T16:31:39+00:00","og_image":[{"width":282,"height":300,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/","url":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/","name":"Que es Smarty? - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","datePublished":"2011-07-26T16:31:14+00:00","dateModified":"2011-09-12T16:31:39+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/smarty\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","width":282,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/smarty\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Que es Smarty?"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=562"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/562\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/6469"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}