adrian Posted October 7, 2016 Share Posted October 7, 2016 2 minutes ago, Nicolas said: Hi, Has anyone succeeded running Hanna Code with Latte template. I'm strugling getting them to work together. Is there a setting to prevent latte to process Hanna Code tags ? Thanks. I haven't tried, but maybe changing the Open and Close tag settings in the Hanna code config might help you get around it: Admin > Modules > Hanna Code Text Formatter Link to comment Share on other sites More sharing options...
Nicolas Posted October 7, 2016 Share Posted October 7, 2016 @adrian Already tried that but whatever the open and close tag choosen, Latte template will try to load the file with the name of the code. For example i have a Hanna code named "quote". Then i've got the following this error : Error: Exception: Missing template file '/Volumes/DATA/www/ceea/site/templates/views/quote.latte' Link to comment Share on other sites More sharing options...
tpr Posted October 7, 2016 Author Share Posted October 7, 2016 Could you share your current code? I haven't used it in .latte files, only in CKEditor. Link to comment Share on other sites More sharing options...
Nicolas Posted October 7, 2016 Share Posted October 7, 2016 In the latte file i've got the following code <div class="entry-main"> <h3 class="entry-title ui-title-inner">{$page->title|noescape}</h3> <div class="entry-content"> {$page->body|noescape} </div> </div> The body field is configured to process Hanna Code as a text formatter Link to comment Share on other sites More sharing options...
tpr Posted October 7, 2016 Author Share Posted October 7, 2016 It is interesting because this is the way I use it and no issues here. What is your Latte module version and the open-close tags for Hanna? Do you have other textformatters applied to body? I have Video Embed for Youtube/Vimeo and they work fine together. Link to comment Share on other sites More sharing options...
Nicolas Posted October 7, 2016 Share Posted October 7, 2016 The body field is a CKEditor field to which the Hana code text formatter is being applied. The version of the TeplateLatteReplace is 0.2.0 Link to comment Share on other sites More sharing options...
tpr Posted October 7, 2016 Author Share Posted October 7, 2016 I could duplicate the issue, it happens if your Hanna code type is set to PHP. I will try to find a fix or a workaround. Link to comment Share on other sites More sharing options...
tpr Posted October 7, 2016 Author Share Posted October 7, 2016 Success! Try upgrading to version 021. 1 Link to comment Share on other sites More sharing options...
Nicolas Posted October 7, 2016 Share Posted October 7, 2016 Waooh problem solved. That was fast. Thanks a lot !! 1 Link to comment Share on other sites More sharing options...
Pixrael Posted October 25, 2016 Share Posted October 25, 2016 I really like this module and the ease of the Latte syntax, but when trying to start my first project (both in Latte & PW) I found the following questions: Where implement the business logic for the @layout file? if this file is only for output and its not a good practice to include php logic. For example I need to do some processing before printing the site header and the area for the logged user. Following the previous question, if the option for including Blocks require a more complex data process, where I do that? I have no controller file for Blocks/Chunks and only can pass variables directly inside the Latte view that include it The multi-language native processwire system does not work, for example the url "sitename.com/es/" causes an include error. I want to implement my sites using Latte, but now I'm worried if it suits the complexities that can appear during dev Link to comment Share on other sites More sharing options...
tpr Posted October 25, 2016 Author Share Posted October 25, 2016 Hi, perhaps Latte is not the best choice for beginners in PW but I guess you have some programming background judging from your questions 1. You can use ready.php for example for such purposes (or init.php, _init.php, perhaps _main.php). Or you can add two blocks to the layout, one for the site header and one for the logged in user. You can leave the block you don't need empty and it won't be rendered. I sometimes use PHP logic in my view files but it's rather because my lazyness 2. Well you do your logic in {template}.php and set variables to output in {template}.latte. You can use another .latte file in {template}.php, so eg. you can include login.latte or register.latte if you need that. You can even render a chunk in the php (controller) file to a variable and use in the final view file. 3. Could you provide more details? I've done all my PW multilanguage sites with Latte and haven't encountered such an error. I think Latte is just as good as Twig or others, maybe a bit more forgivable in some cases. So I think the question for you is perhaps to use a template engine or not. 2 Link to comment Share on other sites More sharing options...
tpr Posted November 15, 2016 Author Share Posted November 15, 2016 Here are two macros that I started to use recently to avoid passing full page objects and make things easier. I usually set "common" pages in ready.php like this: // Pages $view->homepage = $pages->get(1); $view->contactPage = $pages->get(1033); // PageArrays $view->menuItems = $pages->find('id=1010|1020|1030,sort=sort'); But instead of this I set only ID (selector): // Pages $view->homepage = 1 $view->contactPage = 1033; // PageArrays $view->menuItems = 'id=1010|1020|1030,sort=sort'; Now in latte template files I use the macro "n:page" or "n:pages", which automatically sets the "$p" variable ("$pArr" in case of n:pages). Basically it sets the context: <a n:page="$contactPage" class="contact" href="{$p->url}">{$p->title}</a> <ul n:pages="$menuItems" n:inner-foreach="$pArr as $p"> <li class="{$p|activeClass|noescape}"> <a href="{$p->url}">{$p->title|noescape}</a> </li> </ul> You can use this if you prefer "normal" macros instead "n:macros": {page $contactPage} <p>{$p->httpUrl}</p> {/page} And here are the macros (put it in site/ready.php): $view->_addMacro['page'] = array( 'page', '$p = \ProcessWire\wire("pages")->get(%node.word)', ';' ); $view->_addMacro['pages'] = array( 'pages', '$pArr = \ProcessWire\wire("pages")->find(%node.word)', ';' ); 4 Link to comment Share on other sites More sharing options...
tpr Posted November 15, 2016 Author Share Posted November 15, 2016 Looks like there was a bug in the module, allowing only one macro to be added. I've pushed a fix for this (v022). Link to comment Share on other sites More sharing options...
tpr Posted November 15, 2016 Author Share Posted November 15, 2016 Another tip today: a filter to easily get pages in templates Usage: // homepage url (1: page ID) <a href="{(1|getPage)->url}" class="logo"> // custom selector <a href="{('name=about'|getPage)->url}" class="logo"> Filter (add to ready.php): $view->_filters['getPage'] = function ($selector) { return isset($selector) ? wire('pages')->get($selector) : false; }; I wouldn't recommend to use it with selectors but it's there if needed. It's better to use with variables set in template php files. 1 Link to comment Share on other sites More sharing options...
Pixrael Posted November 17, 2016 Share Posted November 17, 2016 I have some PW installations with the "ready.php" file in the site root and others not, Why? For example "Default" profile have it, but "Multi-language" not. It's best practice using it? Link to comment Share on other sites More sharing options...
adrian Posted November 17, 2016 Share Posted November 17, 2016 It's fine to use it or not. If a profile doesn't have it, just create it and use as your needs dictate. 1 Link to comment Share on other sites More sharing options...
Pixrael Posted November 17, 2016 Share Posted November 17, 2016 So, if I need to use the "init", "ready" or "finished" files in my project, I put them in the site root. But, I need to configure PW to include them in the process? Link to comment Share on other sites More sharing options...
adrian Posted November 17, 2016 Share Posted November 17, 2016 1 minute ago, Pixrael said: But, I need to configure PW to include them in the process? Nope, if they exist they will be processed. 1 Link to comment Share on other sites More sharing options...
Pixrael Posted November 17, 2016 Share Posted November 17, 2016 OK, so easy as usual in PW!! Thanks Note: Maybe this question is out of the scope for this entries, so if you want to move it to another topic is okay. 1 Link to comment Share on other sites More sharing options...
tpr Posted December 7, 2016 Author Share Posted December 7, 2016 v2.4 is up: added additional filters and macros (optional, see README) added 'languages', 'fields', 'templates', 'logs' to the default API variables (suggested by Pixrael) remove cache directory on uninstall 2 Link to comment Share on other sites More sharing options...
Pixrael Posted December 7, 2016 Share Posted December 7, 2016 About the API variables: It seems perfect because in any medium projects you need almost all those variables, then from factory you have all the infrastructure ready to work. If you need something from the PW API it's there, it's much better for newbies. If you are a fan of optimizations (you are supposed to be a smart programmer) you can go to the module source and remove it, or whatever you want to do with it. Link to comment Share on other sites More sharing options...
tpr Posted December 7, 2016 Author Share Posted December 7, 2016 I was about to make (some) fuels optional but haven't noticed performance issues having all enabled. Editing the module is not a smart option, I can add a hook instead to modify the fuels to be loaded, if there's a need. Link to comment Share on other sites More sharing options...
tpr Posted January 11, 2017 Author Share Posted January 11, 2017 The new v025 has a new feature "Use latte extension" that allows replacing PHP templates with Latte files, resulting in a cleaner structure. Note that /site/templates/admin.php needs to be renamed to admin.latte when using this. On existing installations it is recommended to clear the cache too. 1 Link to comment Share on other sites More sharing options...
tpr Posted January 17, 2017 Author Share Posted January 17, 2017 v026 brings another "syntactic sugar" because the sweeter the better {1038|get:httpUrl} {$contactPage|get:title} {$gallery_items|getParent|get:httpUrl} 2 Link to comment Share on other sites More sharing options...
tpr Posted January 20, 2017 Author Share Posted January 20, 2017 v027 contains some code improvements. There are two new filters, "count" and "breadcrumb". The latter is a bit different from the rest because it generates markup but it has many options to fine-tune. Currently it doesn't generate any separators between the items, I think it's better to do with CSS but let me know if you think otherwise. root: root page to start the breadcrumb from (selector or Page). Default: Home page addHome: whether to prepend the Home page. Default: true addCurrent: append the current page. Default: false addCurrentLink: whether to add link when appending the current page. Default: false class: CSS class to add to the "ul" tag. Default: "breadcrumb". Pass an empty string to remove class. id: CSS id to add to the "ul" tag. Default: none (no id added) addAttributes: add "data-page" attributes to 'LI' tags with the corresponding page id. Default: false {$page|breadcrumb|noescape} {$page|breadcrumb:array('addCurrent' => true, 'addHome' => false, 'addCurrentLink' => true)|noescape} 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now