-
Posts
716 -
Joined
-
Last visited
-
Days Won
26
Everything posted by Jonathan Lahijani
-
PW 3.0.35: ProcessWire 3 master and changelog
Jonathan Lahijani replied to ryan's topic in News & Announcements
Given that the ProcessWire Upgrade module has been updated as well, shouldn't it be able to upgrade an installation that's on 3.0.33 (for example) to 3.0.35? It seems to not detecting the latest version. -
CMS Critic Powered by ProcessWire (again) + Case Study
Jonathan Lahijani replied to ryan's topic in News & Announcements
Regarding the video tutorials, what I have completed so far is just a 50-video series of straight-up comparing WP to PW feature-by-feature, so I don't think you'd personally benefit from that since you're already a ProcessWire guru. I will release them however there's some further editing I need to do as well as making it part of an overall content marketing strategy. I haven't had time for that yet, but at least the really hard part of recording the videos is done. In regards to something like a full training series, the idea is still in my head (on paper too), however I don't have any plans yet to go full force on that as I'm focused on other ventures. -
CMS Critic Powered by ProcessWire (again) + Case Study
Jonathan Lahijani replied to ryan's topic in News & Announcements
Somewhere between 60-80 hours, which includes the general consulting, coding, communication and other issues that came up. I didn't track time like I normally do so this is an estimate. Superusers have full access as usual. General users, authors and vendors have access to the pages they are creators of (posts, products). In Ryan's case study from a few years ago, he implemented a hook that prevents users from accessing other user's data in the admin. That part is key. Some CSS is also being used to hide what's not necessary for non superusers to see (along with permissions enforcement). It's easy to load a custom CSS file in the admin based on whatever condition you want it to meet. For example, the following in /site/templates/admin.php if($user->hasRole("author")) { $config->styles->append($config->urls->templates."author.css"); } Thanks for catching that typo. I also updated the chart to link to the various PW modules. -
A note about speed... we switched the hosting from ServInt to KnownHost a couple days ago and now the site is fast... like scary fast. (note: the WordPress site was neither on ServInt or KnownHost, but rather a WP managed hosting provider which one would expect to have decent speed)
-
Although you were experiencing this issue before enabling xdebug, xdebug itself really slows down PW. But that doesn't seem to be the issue in your case. Some things to try: try running the site on a production server and see if it's slow. if it's not, there's some issue with your local server. if you're using an old version of wamp-server (like v 2.4), try upgrading to a newer version. i hit an issue a couple years ago on an older version that was plaguing me. perhaps you're doing some crazy stuff with your code that you may not realize. keep trying to selectively remove various parts of your code and refreshing your site to see if you get a moment where everything clears up. then analyze the problematic code. Let us know how it works out.
-
NIce work Francesco! I just left a comment on the article singing praises to generate even more excitement.
-
Sometime after 3.0.21, PW had modifications that has messed up how PW's "Markup" field renders descriptions with HTML in them, which also affects MenuBuilder. I've created an issue on the PW Github: https://github.com/ryancramerdesign/ProcessWire/issues/1932
-
When editing a template, you can add fields to it using the Fields dropdown. However, it can be tedious to perfectly scroll to the needed fields everytime you add one, especially if your site has a lot of fields. Is it currently possible, or would it be possible, to enable auto-complete on the fields dropdown?
-
I developed modernrealestatesf.com which utilizes MLS listings. The approach I took was to have my client sign up with simplyrets.com which provides a clean and straight-forward way of accessing the needed listings. I then wrote a script which processes the data to our needs. The script runs a couple times a day. I'm not storing any images in ProcessWire since the images that are in the feed are already stored on Amazon which makes things convenient.
-
Another way is to insert it via JavaScript. Note, this example is tested for the default admin theme, not Reno. First place the following in your admin.php file above the require controller line, inside your templates dir: $config->scripts->append($config->urls->templates."admin.js"); Then place the following in a file called admin.js in your templates dir: $(document).ready(function(){ $('#topnav').append('<li><a href="https://example.com/" target="_blank">Example</a></li>'); }); I'm sure the jQuery could be more elegant, but the point is it can be done via JS as well, which I ended up doing for a recent project for reasons I can't remember. In my specific example, I linked it to a Google Doc which contained help documentation for a site.
-
Can Processwire substitute an application framework?
Jonathan Lahijani replied to Neo's topic in Pub
Coming from a Rails background years ago, I think it's best to stick with web application frameworks for any web applications that will have heavy iterations and multiple team members. With a webapp framework, you get a testing suite, migrations, ORM, REST, MVC, specific deployment tools and many other necessities. You would have to re-do all those with ProcessWire. Furthermore, using pages to act as a router doesn't feel right. "Use the best tool for the job" and all that. -
$config->urls->templates will give you the relative URL, not the absolute URL containing "http://mysite.com/" part. Is there are slick way to get the absolute URL? If not, what's the next best approach?
-
You could do this in admin.php (above the line that brings in controller.php): $wire->addHookAfter('AdminTheme::getExtraMarkup', function($event) { $extras = $event->return; $extras['head'] .= '<link rel="shortcut icon" href="'.wire('config')->urls->templates.'favicon.png">'; $event->return = $extras; });
-
Fantastic. Been waiting very long for something that takes me back to the days of Rails migrations! I will be doing a screencast on this in my WP vs. PW series. Just in time!
-
"Continuous integration" of Field and Template changes
Jonathan Lahijani replied to mindplay.dk's topic in General Support
For those interested in migrations similar to Rails and other web application frameworks, see LostKobrakai's Migrations module: https://processwire.com/talk/topic/13045-migrations/ -
I've got that covered for ProcessWire vs WordPress. Coming soon. It's very in depth.
-
ProcessWire Screencasts / Video Tutorials
Jonathan Lahijani replied to Jonathan Lahijani's topic in Dev Talk
Better late than never. I'm almost done with my WordPress vs. ProcessWire series. I have about ~8 videos left to make. I will be uploading all the videos to YouTube in a playlist. Need a couple more weeks to finish them off and add a little polish. Here are the videos in the series (not yet in the final order): Installation Pages Page Templates Custom Fields Custom Post Types Blog Documentation API Updates Client Help Plugins Forms Shortcodes Page Order Images Videos Themes Widgets Menus Global Settings and Options Page Caching Search Engine Optimization XML Sitemaps JSON Data Search Users and Roles Config File Multi-Language Data Migration Ecommerce Community Comments Revisions Admin Themes Command Line Interface Hosting Multisite Admin Section Performance Visual / WYSIWYG Editor Bootstrapping Admin Bar Composer Debugging Front-end Editing Page Builders Each video is about 3-10 minutes long and compares a feature in WordPress with the same or analogous feature ProcessWire quickly and concisely. For example, Shortcodes vs. HannaCode, Gravity Forms vs. FormBuilder, WP-CLI vs. Wireshell, WP Rocket vs. ProCache, WP's Menu Builder vs. Menu Builder, etc. Some are a little more in-depth than others. I do give WordPress a fair shake, try to remain objective and let ProcessWire's superior approach to features speak for itself. I will most likely be adding an intro video that explains the series as well with some background as to why I use ProcessWire instead of WordPress and the philosophical differences between the two. The goal is to get people, particularly advanced developers and web firms who know how to code and who are on the fence about switching to a new CMS, to quickly see all the analogous features that they are used to in WordPress done in ProcessWire. Hopefully they will get the warm and fuzzy feeling and explore our community further. If there are any topics you feel that I have missed, please let me know. Make sure the topic is specific enough to warrant a video of its own, as this series is a feature-to-feature comparison. Thanks- 33 replies
-
- 16
-
I read this article from WordFence recently. It gives you an idea as to how these attacks are done in detail. Worth a read/watch: https://www.wordfence.com/blog/2016/02/wordpress-security-attack-platform/
- 9 replies
-
- 3
-
- infosec
- cybersecurity
-
(and 3 more)
Tagged with:
-
How much PHP should I know to work with PW?
Jonathan Lahijani replied to Krlos's topic in Getting Started
To extend upon what LostKobrakai said, by basic understanding of PHP, I would say: how to set variables how to use the if control structure how to loop through an array (foreach) how to output something (echo) Those basic concepts apply for any programming language and will be heavily used in your templates. Master those with PW's easy API and you'll be like 80% of the way there.- 8 replies
-
- 10
-
How to stay logged in after browser window closes?
Jonathan Lahijani replied to PCuser's topic in General Support
This is a good place to start: http://modules.processwire.com/modules/login-persist/ -
Just launched MWest Holdings: http://mwestholdings.com/ Designed by Durre Design. PW, Bootstrap, Sage Frontend Approach, Slick Carousel... Lots and lots of carousels! The main "collections" on the site include: Properties Case Studies Staff News Articles Press Releases Blog Articles Going to /properties/ defaults you to /properties/residential/ca The two segments after /properties/ are URL segments which are used to bring up the appropriate properties. The primary navigation is hardcoded given the different types of links (some are regular links, some are anchors, etc.). I find myself hardcoding most navigation menus these days given the specificity and unique needs of each site. The navigation rarely changes however so that hasn't been a problem in terms of ability for a client to edit it. More details on my personal website: https://jonathanlahijani.com/projects/mwest-holdings/ Jonathan
-
Thanks for adding PageListSelectMultiple. I personally think it should stay since it puts you in the page tree context (meaning you see the page/child structure), thereby making it easier to understand the exact page you are choosing.
-
A Page field allows you to add multiple pages to the field (given the right settings... Multiple Pages + ASM Select). You can also add a new Page from a Page field (assuming you've allowed that option on the field) and have it assigned to this Page field, or any other Page field. A PageTable field allows you to do the same as a Page field as I described, however if you create a Page from a PageTable field, it can only be assigned to that PageTable field... meaning Pages created from a PageTable field are not "portable" like pages created from a Page field. You can't add a page that was already created to a PageTable field (I'm not considering the edge-case whereby the pages are coming from children, which PW handles already). The nice thing about a PageTable field is its presentation capabilities which a Page field doesn't have. A Page field only has the "Custom format" labeling options, which although nice, is not as appealing as PageTable. If you want the portability of new created pages that a Page field gives you, but with the presentational capabilities of a PageTable field, that doesn't seem to exist. So, to summarize the above, should Page fields be able to have an option to present themselves like how PageTables do?
-
Tools (Checkboxes, ..) building and Site-structure
Jonathan Lahijani replied to _NameLess_'s topic in Getting Started
For question #1, there's a less complicated way to go about it. Create a Page field called "Favorites" (or "Subscriptions"). Templates allowed for this field should be: episode, series, and whatever else can be favorited. Add this Favorites field to the User template. Program the feature as needed. For question #2, the approach you outlined is pretty correct and the ProcessWire way of doing things (or you could also use Options Fieldtype, but I don't prefer it). I personally call it "Options" instead of "Tools" and pluralize the option types (Languages instead of Language, Durations instead of Duration). Then create Page fields as necessary.