Leaderboard
Popular Content
Showing content with the highest reputation on 10/05/2014 in all areas
-
Email Verification This module provides functions to validate email adresses and hosts. The module generates a textfile for blacklisted mailhosts (trashmail), which will be always up to date. Download https://modules.processwire.com/modules/email-verification/ API // get module $mailcheck = $modules->get('EmailVerification'); // return bool/ string - automatted update of blacklist file $mailcheck->blacklisted(email|domain) // return bool - validate a top level domain, checks against IANA list $mailcheck->validTLD(tld) // return array of punycoded TLDs - cyclic updated, data pulled from IANA $mailcheck->getTLDs(cycle=2592000) // return bool - checks syntax converts to punycode $mailcheck->validDomainName(domain); // return bool - checks punycode encoded syntax $mailcheck->validHostName(host); // return bool - checks syntax and accessibility $mailcheck->validHost(email|domain) // add a single value to blacklist $mailcheck->addToBlacklist(email|domain) USAGE $mailcheck = $modules->get('EmailCheck'); $email = 'susi@trashmail.com'; if($mailcheck->blacklisted($email)) echo 'Email Provider not allowed'; if(!$mailcheck->validHost($email)) echo 'Mailhost not available'; Example blacklist file: blacklist.txt4 points
-
A couple of CSS font size/calculator/designer thingies - type-scale.com and gridlover.net/app for your font scaling pleasure.4 points
-
I have made a module for you (all). I have had allready a routine that iterates through all pages and clears all imagevariations. But this only can be safely used if you have not used images in RTE's from the same page. If you have done so, those cannot be identified and gets deleted too. So please double check that you do not use Pageimages in your RTE fields before running this module. To run it you have to install it, go to its configscreen and check the box to run it. Also there is a second box, always checked by default, that let the script run in testmode. In testmode it doesn't delete the variations but list all found pages and the images count. So, if you really want to delte all ImageVariations sitewide, tipp the box to run the script, untipp the box to run it in testmode and press the submit button. PageimageRemoveVariations.zip EDIT: better use this enhanced module version from @tpr, with configuration for excluding imagefields: enhanced version!4 points
-
This is a simple module to prevent guest users and search engines from accessing to your site. Primarily it is designed for use during site development. Modules directory: http://modules.processwire.com/modules/protected-mode/ Github: https://github.com/adrianbj/ProtectedMode Install and check the "Protected Mode" checkbox Create a user with only the guest role and give the login details to your clients/testers. Of course existing admin users can use their personal logins still. There are some similarities with Pete's excellent Maintenance Mode module, but the reason I built this, rather than using Maintenance Mode is: I didn't want the "Maintenance Mode" badge showing up on the site since this is for development before a site has ever been live and I didn't want the client seeing that badge. I didn't want users redirected to the PW login page because I didn't want visitors to see the PW login page. I know the module has the option to redirect to a custom page, which you could use to make a front-end login form, but that seemed more complex than I needed (and I think other PW devs might also need). Because of the way this module replaces Page::render with the login form, visitors can be sent to any page on the site, and once they login that page will reload with its full content - no messing around finding the page again, and no need for sending page ids through the login process to redirect back. This module also lets you configure the message that is displayed along with the login form, and also apply some css to style the login form. Hope you guys find it useful.3 points
-
3 points
-
@Ivan: I appreciate your contributions / tipps. But, - 1) the script was hacked together last night in under 30 minutes including testing. It comes from that source (a proof of concept) 2) there is a very big black hole whith this: The script iterates over imagefields and than over single images, calling getVariations() bzw. removeVariations(). That's all. This leads into that all images used by RTE-Fields on the same page could not be identified as those. So the script simply deletes them too There may be a possibilty to detect some of the embedded images in RTE-fields, those using an HTML <img tag, but there are a lot of known and unknown possibilties how images can be embedded into RTEs. Think of HannaCodes, Markdown, BBCode, other Tools/Modules that store (generic) code into RTE's to later on runtime build a proper URL or img tag from it. All those get dropped and cannot recreated automatically, like those from imagefields. Also CropImage-fields will lost there individual CropAreas and fall back to automaticlly created ones. Therefore this is a very pour solution, only offered to some people here who do know about that risc and who are able to handle that right (during development only). (hopefully) As long as there is no solution that can cover the above noted cases, I do not release it elsewhere. Finally I'm glad that it can be of help in a small use case.3 points
-
Note that if you would want to insert the homepage somewhere else, let's say to center it in a nav (in this case after 'Werk') PW comes with more handy stuff. All (or at least most) available on the http://cheatsheet.processwire.com/ $homepage = $pages->get('/'); $menu_items = $homepage->children; $menu_items->insertAfter($homepage, $menu_items[1]); // insert $homepage after the second homepage child3 points
-
The approach: I'm not sure what really those front end user are and what they're for and what all they can do. Usually members that only interact on front end are members of some sort and not editors, they are not backend users. What I always do is not give them any page edit permisson or anything alike, just view access like a guest role. Then in templates use their role and $user->isLoggedin() && $user->hasRole("member") to conditionally give them what they need. For example show a login link, or a Profile link in a metanav, depending on user status. Backend user roles and permission are mainly for backend users, and I don't want to mix that up. I built specific forms and front-end pages solely based on what role a user has and if logged in. I have member pages with they're data stored in some branch and have a one "Profle" page that is used to build forms of they're profile with data they can edit. I don't need any page edit functionality of PW backend at all. This way I can specifically build functions and logic around what is needed without being caught in what PW is doing designed for backend usage. Also note that as soon as you give edit permission to a role they can access the admin, and you need to take care of that aswell. I tested a setup like you mention and it's working fine. If you have "profiles" template not giving "view" access you see a expanded settings at the bottom what to do when a user accesses this page. Default is showing a 404 page and that those page don't list in navigation. Now it depends how the navigation is built via API. It's still possible to load that page via API explict and show it to a not logged in member. But not showing in lists means for calls like children() and find() etc. I tested your menu code and all working as expected. $content .= renderChildrenOf($pages->get("/")->children); The profiles page don't show (when not logged in with that user), and show up when logged in.3 points
-
It's looking really nice and clean. Even if it's stuffed with navigational elements all the time. I have some small things which I noticed. The calendar icon in the header is not clickable, while being the most poping thing of the navigation. Also I don't know if the phrase "zu den Privatpraxen" will be noticed as standalone link easily, es every other link in the header is a button. It could also be an additional label vor the "Ärzte" button. The other thing is more to please my typographical background. You're using the wrong dashes for the timetables. The normal dash " - " is a "Divis", only to be used for hyphenation or appending units to numbers and such things. The little larger one " – " is the "–" html-entity or also "Gedankenstrich" in german. It's one usage is kinda like a comma to divide different thoughts in a subordinal cause, but a little bit more visible. The other big usage is in things like timetables. Every time you're calling stuff "von … bis …" the "bis" should be replaced with the ndash. This fits not only for times, but also for example for routes: Berlin to Paris. There's also the really long one " — " (—), which is called "Geviertstrich" but it has no distinct usage in modern typography. Shortcuts for Mac: Alt + - => – Shift + Alt + - => — Shortcuts for Win: Hold Alt and hit 0150 on the number block => – Hold Alt and hit 0151 on the number block => —3 points
-
Description This module adds icons based on the file type uploaded. It also lets you change the columns, etc. You can watch the video for more details or download and install. To make it work (do not know why) you have to change any configuration setting and save. Version Alpha version (0.0.1). Updated: 0.0.2 - Added Json name shorter, icons and columns. Updated 0.0.3 - Config in columns Updated 0.0.4 - Video and Audio extensions added. Updated 0.0.5 - Fixed select files and drag to upload div position. Updated 0.0.6 - Execution of the module only in the administration. What a fail! Github2 points
-
http://www.radiologische-allianz.de Step1. Homepage uses a classic design. Purpose was to make complex information look easy for patients. If you use the homepage with a mobile, you get a special view with only the things you need when you are on the road. (The most time-consuming action was organizing all this data and find an easy to maintain ways to link this all together.) We have 11 centers. This homepage is a portal page for all of them and includes individual homepages of each center at the same time: If you access things for only one center through their homepage, you get a filtered view with only items offered there. There is also an individually built center-finder which uses Google maps to find the right center for your therapy, using Processwire technology. Processwire was chosen mainly because of the enormous flexibility to build links between all different sorts of information (without it being rocket science), especially because we were able to handle even non-hierachical data (e.g. a child is allowed to have 2 parents - doctors think that's normal ), and because we could offer the client a very clean and easy to use backend, hiding all the complexity of the homepage away from him: They started using it with only 2 hours of training. Not sure you could do this with Wordpress... (This is the first homepage we did with UIkit, which was a recommendation from this forum.) (Step2 will add some speed optimizations...)2 points
-
I'm missing this feature - in my case I have an "Active" checkbox on some items, and want new items to be active by default. "Inactive" in my case wouldn't make much sense, and I'm also not fond of the double negation... "not inactive" - that's poor semantics.2 points
-
Hi, great points you made about typography. In this case this is content and up to the clients. Maybe one day we could replace the textarea fields with the new PW pro table fields and render the output ourselves with any fancy typography we want. (If you want to take it further, the n-dash is also surrounded by tiny 1/4 spaces left and right, if I recap that correctly). Phone number formatting is another interesting scenario. Maybe modules like the SuperSmartyPants Typographer become smart enough one day to assist in cases like this. - I wished we had more clients caring for typography that much that they would hire an editorial office ("Lektorat") to have content, spelling and typography checked. Also the point with the navigational overkill is valid. - If you have a client with 11 competing centers and 50 decision makers, who even discuss the shape of a button sometimes, you get there quickly, believe me. Client is king. On the other hand, those special requests were one of the reasons, why the project was very interesting and exciting for us. To get back to the essence: This presentation here was not about design and not about content but what Processwire can help solving. I wanted to showcase what you can do with Processwire, if you have tons of navigational elements as a fact, that behave context-related completely differently, depending from where they were called. And this only with the power of Processwire selectors. We could not do that with Drupal or Wordpress easily. EDIT: Actually I liked your comment and fixed that n-dashes quickly myself. I admit, that looks better now.2 points
-
Update: Blog version 2.0.2 committed to master branch and PW modules directory and changed status to stable.2 points
-
Wow! I have found out that in the Connect() method of the base SMTP class it comes to a point after trying to start a TLS connection that a variable $success is set to true if the smtp-server simply supports TLS. After that a if condition checks if there are settings available for user, if not it passes through to the end of the method with $success set to true! A Bummer! If there is given a username, it trys to authenticate that user and the variable $success is set to that result. So, at least this is not a bug, because in the past or in private networks SMTP servers could be configured to work without authentication, that is what this class does. What should I do with this situation? I tend to ignore a usage without user authentication. This way it tries everytime to establish a connection via authentication, what will fail with an empty user or pass. Good to know that typos would be detected in the past but only empty usernames raised this behave. Now the class gives two errors: WireMailSmtpConfig: ERROR: SMTP settings did not work. WireMailSmtpConfig: 535 5.7.8 Error: authentication failed2 points
-
Just a small update that adds some nice default styling to the login form. It populates the CSS field on install so you can still edit however you want, but gives a much nicer starting point If you have the module already installed, you'll want to update, then uninstall and reinstall to populate the CSS field. It now looks like this by default:2 points
-
The connection-test uses your credentials and try to establish a connection to the server you has entered in the configscreen together with your credentials. If the connection-test always succeed, there is no reason why the connection when trying to send a mail shouldn't do so too. (Because it is 100% the same code used in both cases, and the same credentials, empty or not.) The error you are getting tells another story: "No unauthenticated relaying permitted" - Do you have a personal SMTP account at ipage? - Have you asked them if you need credentials for sending through your personal SMTP-Account and they have answered to you that you do not need those? - Or do you have asked them if you need credentials for sending emails via php, and they think you mean simply using the php mail() function through your webhost? The wiremailSmtp module cannot use php's native mail() function. This can be used with the base class wiremail and without credentials.2 points
-
ProcessWire2.+ Admin Hot Keys 0.0.7 This modules adds hot keys functionality to PW backend. The keys can be configured in the module settings in the admin. I created a repo here for download and if anyone interested in picking it up. https://github.com/s...ic/AdminHotKeys Currently it supports Save : ctrl+s Add New : ctrl+n View Page : ctrl+v Open Pages search : alt+q (search field can be configured) Open Templates search : ctrl+shift+t Open Fields search : ctrl+shift+f Goto Pages : ctrl+shift+p Goto Setup : ctrl+shift+s Goto Modules : ctrl+shift+m Goto Access : ctrl+shift+a Note: If you're inside a text input it will ignore the hot keys, as to avoid problems with already defined key. Tip: If you open up templates or fields autocomplete search `ctrl+shift+f|t` press `shift+tab` to focus on the link in the label previous to the search input box. Now hit enter to get right to the template or field screen. (If using FF make sure to enable tab focus for all elements in MacOSX: http://support.mozil...enus or buttons)1 point
-
Please use Matrix Fieldtype & Inputfield Or the ProFields. FieldtypeJson (module) Álpha I've been busy last 2 weeks with a new fieldtype. I needed a fieldtype that generates JSON strings from CSV (excel data). I needed a way to handle a variable amount of columns & needed a way to manage that data. Wanze & Kongondo already worked on a excel crud module with the excellent Excel-like data grid editor Handsontable and I loved that piece of software. Thank you guys. Handsontable is used in the Inputfield part. What the Inputfield does does: If there's no data in the field, the Inputfield shows you a textarea. You could copy 'n past in CSV text in that field. When you save the field, all data is processed. Processing means: Slice till an x amount of data rows. If minimum amount of columns is not reached, pad the columns till the amount you've specified in the settings If the data contains to much columns, slice the redundant amount of columns. Every data left, is trimmed and sanitized Every numbered string will be converted to integers Saved in 2 formats: 1) json and 2) cvs Server side there's a lot of processing needed to perform all this, that is the reason to set a low amount of data rows. On The Inputfield side, the JSON is generated by Handsontable. So this feels a bit dirty. (Server side it does do all the steps in the above list.) For now it's called FieldtypeJson, but i'm not to keen on this name. Output How to output in your template: $page->fieldname // (string) the table markup $page->fieldname->json // (string) JSON string $page->fieldname->csv // (string) CSV string $page->fieldname->rows // (int) number of rows, not really usefull, but needed internally $page->fieldname->columns // (int) number of columns, not really usefull, but needed internally When to use: If you need a small set tabular json data, and you don't know how many columns it has. If you want to have render tables quicky in your site. When not to use: Store very large sets of query -able data. If you have to rely rely on the data. ( all json is stored in a subfield, and the same for csv ) API Side (JSON): // Json string $json = '[["First Name","Last Name","Company Name","Address","City","State","Post","Phone","Email"],["Rebbecca","Didio","Brandt, Jonathan F Esq","171 E 24th St","Leith","TA","7315","03-8174-9123","rebbecca.didio@didio.com.au"],["Stevie","Hallo","Landrum Temporary Services","22222 Acoma St","Proston","QL","4613","07-9997-3366","stevie.hallo@hotmail.com"],["Mariko","Stayer","Inabinet, Macre Esq","534 Schoenborn St #51","Hamel","WA","6215","08-5558-9019","mariko_stayer@hotmail.com"]]'; $page->of(false); // Turn OutputFormatting of $page->fieldname->json = $json; $page->save(); $page->of(true); API Side (CSV): // CSV string $csv = '"First Name","Last Name","Company Name",Address,City,State,Post,Phone,Email Rebbecca,Didio,"Brandt, Jonathan F Esq","171 E 24th St",Leith,TA,7315,03-8174-9123,rebbecca.didio@didio.com.au Stevie,Hallo,"Landrum Temporary Services","22222 Acoma St",Proston,QL,4613,07-9997-3366,stevie.hallo@hotmail.com Mariko,Stayer,"Inabinet, Macre Esq","534 Schoenborn St #51",Hamel,WA,6215,08-5558-9019,mariko_stayer@hotmail.com'; $page->of(false); // Turn OutputFormatting of $page->fieldname->csv = $csv; $page->save(); $page->of(true); After save, all other subfield are updated. So saving JSON will update CSV and the rows and the columns. And saving CSV will update JSON and the rows and the columns. Saving direct to the fieldname, or saving to both json and csv or saving to the rows & columns wil thow a wireException(). Download: source on github Warning: This Fieldtype is Álpha, don't use it in live projects empty field: paste data: imported data: manage data: settings:1 point
-
1 point
-
@Joss it seems that there are some similarities between visual and aural rhythms. (Entirely beyond my comprehension, all of it.)1 point
-
Hard times Well at least I tried out lightning.pw ! It's awesome.1 point
-
Just looks like the menu code isn't generating the menu properly and that if you look at the code source you can tell that there are the profile pages, but they're not showing in the boostrap menu cause no title or just an <ul class="drop-down"> so not valid code? So after all it looks like the menu code has problems (or not), but could easily spot with a glance at the console or html source... Just looking at the "/profile/" page it has no title field? So sorry but check your code and don't worry about PW setup or something.1 point
-
@horst lol, It's ok I understand. I was confused as well for a long time about the test connection but i'm glad we were able to get it resolved.1 point
-
Just a small detail but for "behind" the scenes hooks and such thing you don't need a Process module. Those are for admin pages that have a process added (the module). The ___execute is for returning markup that should show on the admin page with this process. You would create a simple WireData module like the HelloWorld.module. And you don't need that ProcessPageTrash module, that is also an admin page to delete trashed pages. So you need a WireData module that autoloads, Process module shouldn't ever be autoload. autoload on a selector "process=ProcessPageList" doesn't work, and if at all I think it's not suitable cause that's a module working mostly with ajax. Not 100% sure without trying. autoload=>true should be sufficient. You check anyway what you want to delete and already add the hook to users. $this->users->addHookAfter('delete', $this, '___execute()'); // is this correct This is a hook for when a page was deleted, but afterwards, so you never know what page was deleted. May it would be better to use addHookBefore("delete", $this, "hookDeleteUsers"); Then not "___execute()" but a custom function, and you use the $event to catch the page being deleted public function hookDeleteUsers($event){ $userpage = $event->arguments("page"); if($userpage->id){ // do some stuff example $userPage = $pages->get("created_users_id={$userpage->id}"); $this->pages->trash($userPage); } } http://cheatsheet.processwire.com/?filter=trash1 point
-
This is really great. Functions like it should. If you have time for it, I could suggest a few enhancements for UI: "Cosmetic" - it is not clear how to use it, as the module does not create any menu items; maybe a menu item would be preferable - it is not clear you have to check both boxes to even get a list of images; maybe 1 checkbox (checked by default) will be enough? - i can imagine the list getting really long, so it would not be usable to see it in the message area at the top (maybe make a list below the submit button) - it could be more clear to call the "submit" button something like "clear image cashe" or "clear image variations" "Core" - in joomla and some of its plugins you could see the list of pages and/or images which would be removed while clearing the cashe and check/unckeck them - could be beneficial for this module and make use of something alike page lister - it would be great to have an opportunity to clear image variations from the page admin on per-page or (wild dreams) even per-image basis I am not expecting you to start on this right now, you already "made my day", horst. Thank you! People waited since 2011 for the solution like this, and I got it in just one night. Isn't it a miracle? P.S. I think this module should make its way to the directory.1 point
-
I think the core translation could easily be a module. Module translations could also be a module, this could even add the ability to depend the translation to specific versions of the module. But the site translation is something I don't know if it should be a module, as it's nothing that's getting installed, it just grows as you develop the site.1 point
-
I have updated the Github repo and the entry in the modules directory to version 0.1.9 @JasonS: sorry that I tend not to believe that a server says success on testconnection and then returns a "No unauthenticated relaying permitted" error. Together with the confusion that the hoster has said it needs no credentials, it sounded too unlikely for me. But it was real. I have liked all posts of you here in the thread trying to say appologize. (If you post one more I will like it too)1 point
-
Hey horst - I am not really up on the latest with this, but just to give you an idea, I can get a successful test with gmail with only: smtp.gmail.com 587 use START_TLS with no credentials entered at all. Not sure if this is unique to gmail. I agree though, I thought most SMTP servers required authentication these days. It seems that gmail doesn't actually send a message, but the test is still successful without. BTW, the settings that actually do send an email via gmail for me are: smtp.gmail.com 465 use SSL email and password as credentials NB: I actually need to turn off use START_TLS1 point
-
I contacted iPage again, and indeed you were right, I did need the credentials for the SMTP-account to work. Before they told me I didn't, maybe as you said, they may have been thinking i was using the mail() function. Once I added the credentials for my account, it worked beautifully. Thank you very much Horst!!!1 point
-
@horst : No, IPage said it didn't need any credentials. Connection test is always successful.1 point
-
Okay, I am probably going to get this wrong, but let me think this through. You want a list of attributes, but without prices - you add the price later in the T-Shirt page? So, for instance, you could have a repeater (possibly better with a page table) that has two fields: Page Field, picking up a list of attributes and a text field for the price. You add a line, choose the attribute type from the page field drop down (must be single select, of course) and you put in your price. You can then loop through the repeater to list out all the attributes and associated prices for that product.. When it comes to a category, if you are creating the product page under its parent, then it already has a category - its parent! Oh, I should add, that the attributes can have more than just a title - they can have images, extra info, anything you like as they are pages in their own right - but you only use the title field when selecting them.1 point
-
Thanks Martjin I'll update the brother of this module Alternative Grid Images to make it configurable. Thank you Like always thanks a lot @adrian1 point
-
That's why you have the 4 options ...to suit the structure you want....Use option 2 if you want posts as children of Blog. That will give you /home/blog/mypost/1 point
-
There looks like there was some changes to the way the page edit form is built or css related. I just build a new wrapper and append it to form. The wrapper gets inserted at the end, but since the submit button is also a inputfield added to the form it is before newly added tabs afterwards the form is built already. I tried and found that prepend the wrapper to the form works around this issue (until next time). While at it I found a missing CSS class in Reno in 2.5.3 where hidden labels would show in the forms. Regarding tabs. I'm not sure if that's really a long term "the best way" to add tabs, I also tried to find a way using the $this->tabs used by ProcessPageEdit but that is protected and after all maybe not suitable to add tabs at certain position since you never know what there will be. A float right hack with css would position the tab at the right, but I don't know if that's maybe used by some other theme already and so on. So no real dedicated fool proof way in PW I guess. I'll see if I can test this with 2.4 and or 2.3 and release a fix.1 point
-
Just want to point out that the code diogo posted in #17 uses a relatively new PHP array syntax. If you are running PHP < 5.4 then you will need to do this instead... $images = array("image1.jpg", "image2.jpg", "image3.jpg");1 point
-
I don't see why bxslider wouldn't work. The markup it requires is very simple, just a ul > li > img with free urls (it doesn't enforce that you specify only the folder like some old scripts did). In your case I would probably just put the images in the css folder and call them manually. I mean, if you know the name of the files is because you don't need the images to be dynamic, so why have them in a PW field? $images = ["image1.jpg","image2.jpg","image3.jpg"]; echo "<ul>"; foreach ($images as $img) { echo "<li><img src='{$config->urls->templates}styles/slider_images/{$img}'/></li>"; } echo "</ul>";1 point
-
Haven't experienced any problems with bxslider so maybe there's an other root of the evil. When I have troubles with HTML soup I prefer to check the syntax with the validator of W3C. Lot's of time it's just an non closed element or such.1 point
-
Another new design tool Affinity to take on the Adobe cloud prison. Affinity Looks really good at £27.99 ($40). 20% off introductory offer until 9th October. At the moment it is just for mac. Dam I am starting to wish I had a mac.1 point
-
I like the idea...meanwhile, use Soma's Admin Hot Keys . Save : ctrl+s https://processwire.com/talk/topic/1524-admin-hot-keys/ http://mods.pw/131 point
-
Hey, this is a website I finished some months ago. The website is for a christian "St. Johannis" church close to where I live and is managed by my mother (that's where my "my mother should be able to use this" comparisons are from ). I really clean and minimalistic but a lot better than the old design. Trust me1 point
-
The idea behind this concept is that _main.php would NOT contain any logic at all. The only thing that _main.php will do is echo out the variables & markup. Default variables are created in the _init, if needed, those variables can be overwritten in the template. +----------+ | _init | $title = "<h1>$page->title</h1>"; | | $content = "<div class='seventy-five_percent_wide'>$page->body</div>"; | | $sidebar = "<div class='twenty-five_percent_wide'>$page->sidebar</div>"; | | | | +----------+ | +----------+ | template | Contains Logic. | | | | $title = "<h2>$page->title</h2>"; | | $content = "<div class='fifty_percent_wide'>$page->body</div>"; | | $sidebar = "<div class='fifty_percent_percent_wide'>$page->sidebar</div>"; +----------+ | +----------+ | _main | This file only outputs Markup. There's no 'logic' here (read no if statements and stuff) | | And the variables ($title, $content & $sidebar) will will be echoed here. | | | | | | +----------+ In the code block, you can see that the variables $title, $content & $sidebar are first setup in _init. We see the following: The title is a <h1> header. The content is markup with a column of 75% wide The sidebar is markup with a column of 75% wide This are nice defaults as most of our pages are structured like this. When we want these defaults, the template file can be empty. But if we need a page with 2 columns equal wide and have a H2 header instead of the H1, we could overwrite the variables in the template file. As you could see in the code block, we overwrite $title, $content & $sidebar. The main file could simply look like this: <!doctype html> <html lang=en> <head> <meta charset=utf-8> <title><?= $page->headline; ?></title> </head> <body> <?= $page->title; ?> <?= $page->content; ?> <?= $page->sidebar; ?> </body> </html>1 point
-
Hey, Can anyone help with me this? I'm trying to send mail with this module, however I keep getting this in error log "No unauthenticated relaying permitted". How can I resolve this? Note: I'm using ipage shared hosting environment. Ipage told me i don't need to log in to their mail server to send mail. So i'm not sure what I am doing wrong. Code I'm using is this... $mail = wireMail(); // calling an empty wireMail() returns a wireMail object $numSent = wireMail($to, '', $subject, $textBody); // or with a default sender emailaddress on config page1 point
-
1 point