Jump to content

dlen

Members
  • Content Count

    31
  • Joined

  • Last visited

Community Reputation

6 Neutral

About dlen

  • Rank
    Jr. Member

Profile Information

  • Gender
    Male
  • Location
    Berlin
  • Interests
    Meditation, Climate Change

Recent Profile Visitors

1,349 profile views
  1. Hi, got the same problem. Although there is no deactivation of plugins now, but activation check boxes: I just see no effect... - any hint appreciated.
  2. Thx. I used another solution, which does the job. foreach($languages as $language) { if(!$page->viewable($language)) continue; $url = $page->localHttpUrl($language); $hreflang = $homepage->getLanguageValue($language, 'name'); if ($hreflang == 'home') $hreflang = 'x-Default'; echo "\n\t<link rel='alternate' hreflang='$hreflang' href='$url' />"; The code example stems from the freshly installed multilanguage demo site.
  3. The name is "default" - or did you mean another place to look?
  4. Sure. It is the original code fresh after installation, in _main.php: <?php // handle output of 'hreflang' link tags for multi-language // this is good to do for SEO in helping search engines understand // what languages your site is presented in foreach($languages as $language) { // if this page is not viewable in the language, skip it if(!$page->viewable($language)) continue; // get the http URL for this page in the given language $url = $page->localHttpUrl($language); // hreflang code for language uses language name from homepage $hreflang = $homepage->getLanguageValue($language, 'name'); // output the <link> tag: note that this assumes your language names are the same as required by hreflang. echo "\n\t<link rel='alternate' hreflang='$hreflang' href='$url' />"; } ?> I could live with that for the time being, as it is only an SEO issue, but of course it would be nice having it working.
  5. Brilliant. Now the menu works as advertized and the page URLs reflect the respective language, i.e. '/' in the case of German, '/en/' in the case of English. Only the hreflang attributes in the header links are causing some headscatching: <link rel='alternate' hreflang='home' href='http://butoh-tanz.de/pw/' /> <link rel='alternate' hreflang='en' href='http://butoh-tanz.de/pw/en/' /> The second looks o.k., while the first I do not understand. Shouldn't it be 'de'?
  6. A brilliant tutorial. Did this with the minimal multilanguage site offered for installation. Default language is now German as wanted. Then I uninstalled and reinstalled English. The main menu 'home' link is pointing to 'pw/<german homepage>, which is as it should be, while the 'about' link points to 'pw/en/about', which should be 'pw/about'. In the page settings of the 'about' page the hierarchy of the DE page is 'en/about', while the hierarchy string for the EN page is '/about'. See attached screenshot. The link of the latter is pointing to http://butoh-tanz.de/pw/about/ but clicking it we end up on http://butoh-tanz.de/pw/en/about/. The language menu does show both 'de' and 'en' links, as desired. But the 'en' link points to '/pw' (the processwire root, one level below site root, as this is experimental) instead of 'pw/en/'. Clicking on any link in the language menu does not change anything on any page. The 'home' page stays German while all other pages stay English. So obviously this method does not achieve the goal to completely reverse the language hierarchy, with all German pages having a 'pw/<pagename>' URL and all English pages having a 'pw/en/<pagename>' URL. This is absolutely no critique, as you wrote your tutorial for a single language site. I just would be thankful for a hint how to achieve this URL string reversal.
  7. I had a vicious [] operator not supported for strings (line 133 ….) - problem, after casually upgrading the module. I could not access the backend anymore. I had PHP 5.6 running and tried out 7.0 and 7.1 without success. Then in my desperation I resolved to fiddling the module code (I have pretty weak PHP knowledge). In simplecontactform.module, line 133 , I changed foreach (self::$additionalFields as $f) $allFieldsExtended[] = $f; to foreach (self::$additionalFields as $f) $allFieldsExtended = (array)$f; and at least I was again able to keep on working. But I don't know, whether the module is working fine now, as I have my contact form without module. Might help some poor guy one day...
  8. With this script a strange problem appears: (solution below) When loading first, i.e. with $session->secondvisit nonexistent and setting $user->language to 'de' (in my case), the menu is correctly shown in german the language menu correctly shows the german link as active but the content is shown in the english version the url in the address field does not show the /de characteristic for the german content tree One remark, of which i do not know the importance: the site is redirected to a subdirectory. The URL ist http://agustin-rivas.com. If someone has seen this before and can give a clue, i'll be grateful. -------------------------------------------------------------------------------------------------------- solution --------------------------------------------------------------------------------------------------------- It was a timing problem. I had put the above function into the main template php file, which is executed a f t e r the php files for the different page templates. So the content variables were filled with the $user->language still not correctly set. Moving the function code to the _init.php file, which is executed b e f o r e the page template php files, solved the problem. Took me 2 hrs to figure it out believe it or not...
  9. You are probably right, may be I (or somebody else) adds something to it. For the time beeing i don't see i have the resources for it.
  10. Hi there, I got a template with a field of type "file" in it. If the client did load a file up, a download link is shown - otherwise nothing. The templates name is "termin" and the fields name is "termininfo". middlecontent is some string that collects the HTML. My method to find out, whether a file has been uploaded, is the following: if ($termin->termininfo) $middlecontent .= "<a href='{$termin->termininfo->url}' target='_blank'>INFO</a>\n"; else $middlecontent .= "<a class='hidden'></a>"; My question is, why in some cases, which i cannot really reproduce, the condition $termin->termininfo is false, although a file has been uploaded. This occurs only in a fresh dataset, where no file has been uploaded previously. Maybe there is a better way to check for the existence of the uploaded file. cheers...
  11. An updated version with some more features /** * A recursive menu containing home. * If no root page is given, site root will be taken. * If and only if the second parameter is given, only pages will be included, that have a custom field of type "checkbox", * and the latter has to be checked. This field is the parameter to be given. Example with field "in_main_menu": * * selectiveMenu(null, $fields->in_main_menu); * * All submenu <ul>s get class "submenu". * All <li>s in the direttissima upwards of the page shown - except home - get the class "current". * All menu items, that have the template name 'no_content' do not have a link to their content, but act merely as switches * to their subpages. This template must have also the selector field, if the parameter is given. * * Intended to be used without arguments, i.e. "selectiveMenu();" , i.e. always starting with site root. * * @param Page root page of the menu * @param Field menu_selector_field pages with this "checkbox" field in their template set to "checked" are represented * @param string menu_id The id the outermost ul - tag gets. * @return string */ function selectiveMenu(Page $root = null, Field $menu_selector_field = null, $menu_id = null) { $shownPage = wire('page'); if(is_null($root)) $root = wire('pages')->get('/'); $level = count($root->parents); $ul_class_string = (($level > 0) ? "class='submenu'" : ""); $ul_id_string = ($menu_id ? "id='$menu_id'" : ""); $out = "\n<ul {$ul_class_string} {$ul_id_string}>"; $parents = $shownPage->parents; $items = $root->children; if ($level == 0) $items->prepend($root); foreach( $items as $item) { if ($item->$menu_selector_field || !$menu_selector_field) { $s = ''; $li_class_string = ( ( $parents->has($item) && $item !== $root ) || $item === $shownPage ? "class='current'" : "" ); if($item->numChildren(true) && $item !== $root) { $s = str_replace("\n", "\n\t\t", selectiveMenu($item, $menu_selector_field)); } $href_attr = ( $item == $root || $item->template->name != 'no_content' ? "href='$item->url'" : "" ); $out .= "\n\t<li {$li_class_string}>\n\t\t<a $href_attr>{$item->title}</a>$s\n\t</li>"; } } $out .= "\n</ul>"; return $out; }
  12. Hi, I found a possible cause for the issue when tampering with my own menu function and running into the very same problem. In line 351 of MarkupMenuBuilder.module if($p->numChildren) $hasNativeChildren = 1;// has children to add is the function numChildren used. This function counts in default mode also hidden children. To make it count only visible children, it has to be used with a parameter: if($p->numChildren(true)) $hasNativeChildren = 1;// has children to add I tried it and it seems to work!
  13. Ah, ok. I'll attach all files i think could be relevant. if you want more, just drop a line. It's the "newsletter" item, which has the empty ul.
  14. Thanks for your answer. I can indeed make the empty ul make disappear by setting 'include_children' => 0 in the options. But then, also those items, which shall have their submenu, don't have one. Also, i can switch on an unintended empty ul in another menu, when i set include_children to 1 there.
  15. Hi there, actually I found a solution but I'd like to know, whether there's a better way. PW is installed in a subdirectory /pw/. In root there's the site in pure HTML, which I set up first and then integrated it into PW. Images, CSS and other resources are in subdirectories on the same level as /pw/. Now, as the PW version runs flawlessly, I redirected the domain to the subdirectory, where PW took over. I did this with the provider admin panel, not with some .htaccess in the root directory. The result was, that, with the server replacing all "domain.tld" strings with "domain.tld/pw", all queries to resources ran not to "domain.tld/img/..." but to "domain.tld/pw/img/..." , which gave of course the 500 error. The solution was, to simply copy all resource directories, like /styles, /js, /images &c. into /pw. The more experienced may have a better card in their sleeves? I am interested.
×
×
  • Create New...